Vraagje van beginner
12 berichten
• Pagina 1 van 2 • 1, 2
Vraagje van beginner
Hoe maak ik met een uno het volgende:
Er wordt een input hoog
Bij het hoog worden dus bij de opgaande flank moet 1 output 0,5 sec hoog worden terwijl het signaal op de input hoog blijft
Als uiteindelijk ( kan uren duren) het signaal op de input weer laag wordt moet bij de neergaande flank 1 output 0,5 sec hoog worden
Nu alles weer in rust tot input weer hoog wordt.
Wie wil mij op weg helpen.
Alvast bedankt
Er wordt een input hoog
Bij het hoog worden dus bij de opgaande flank moet 1 output 0,5 sec hoog worden terwijl het signaal op de input hoog blijft
Als uiteindelijk ( kan uren duren) het signaal op de input weer laag wordt moet bij de neergaande flank 1 output 0,5 sec hoog worden
Nu alles weer in rust tot input weer hoog wordt.
Wie wil mij op weg helpen.
Alvast bedankt
Advertisement
Re: Vraagje van beginner
Bedankt voor het plaatsen van mijn vraagje.
Maar mijn vraag staat bij de verkeerde rubriek.
Staat onder Raspberry maar het gaat over Arduino
Hoe kan dit in de juiste rubriek komen te staan ?
Groet,
Hobbyist
Maar mijn vraag staat bij de verkeerde rubriek.
Staat onder Raspberry maar het gaat over Arduino
Hoe kan dit in de juiste rubriek komen te staan ?
Groet,
Hobbyist
Re: Vraagje van beginner
- Code: Alles selecteren
int inp1=2;
int raak=digitalRead(inp1);
if !timerrunt
if (raak) then starttimer
if (raak) && timerklaar {digitalWrite(uit5,HIGH);
dit is een manier (maar je zult een sequence moeten schrijven wat wanneer moet gebeuren een soort tijdsdiagram met alle mogelijkheden.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Vraagje van beginner
shooter schreef:
- Code: Alles selecteren
int inp1=2;
int raak=digitalRead(inp1);
if !timerrunt
if (raak) then starttimer
if (raak) && timerklaar {digitalWrite(uit5,HIGH);
dit is een manier (maar je zult een sequence moeten schrijven wat wanneer moet gebeuren een soort tijdsdiagram met alle mogelijkheden.
Bedankt scooter ik ga hiermee experimenteren
- Harm J Seef
- Berichten: 38
- Geregistreerd: 20 Jul 2022, 14:40
Re: Vraagje van beginner
In onderstaand voorbeeld wordt zowel op de opgaande als op de neergaande flank van een signaal een schakelpuls opgewekt.
Als schakeling wordt dit een ‘frequentie-verdubbelaar’ genoemd.
Het ingangssignaal wordt gebruikt om via een opkom-/afvalvertraagd relais/timer een tweede signaal te maken.
Een EXOR conditie vergelijkt beide signalen als ingangssignalen,
zodat zowel op de opgaande als neergaande flank nu een puls wordt gemaakt.
Via een omweg kan in Arduino-C dus een EXOR geprogrameerd worden.
// 2109_EXOR Proof of concept, programming an EXOR-condition
// Arduino-C does not provide the EXOR statement
// ============================================================================
int SignalIn = 3; // connected to push button
int SignalOut = 13; // Signal out, connected to led
int Delayed = 10; // delayed signal, connected to LED
int Pulse = 9; // pulse signal, connected to LED
bool SignalA = LOW; // EXOR input A
bool SignalB = LOW; // EXOR input B
//
void setup() //
{ pinMode(SignalIn, INPUT); // push button
pinMode(SignalOut, OUTPUT); // signal A
pinMode(Delayed, OUTPUT); // signal B
pinMode(Pulse, OUTPUT); // XOR -output
digitalWrite(SignalOut, LOW); // reset outputs
digitalWrite(Delayed, LOW); //
digitalWrite(Pulse, LOW); //
} //
//
void loop() //
{ SignalA = digitalRead(SignalIn); // read signal line
digitalWrite(SignalOut, SignalA); // pass thru to indicator
if (SignalA == !SignalB) // if EXOR condition occurs
{ digitalWrite(Pulse, HIGH); // pulse indicator on
delay(500); // pulse length
digitalWrite(Pulse, LOW); // pulse incator off
SignalB = SignalA; // update delayed signal
digitalWrite(Delayed, SignalB); // pass thru to indicator
} //
} //
Als schakeling wordt dit een ‘frequentie-verdubbelaar’ genoemd.
Het ingangssignaal wordt gebruikt om via een opkom-/afvalvertraagd relais/timer een tweede signaal te maken.
Een EXOR conditie vergelijkt beide signalen als ingangssignalen,
zodat zowel op de opgaande als neergaande flank nu een puls wordt gemaakt.
Via een omweg kan in Arduino-C dus een EXOR geprogrameerd worden.
// 2109_EXOR Proof of concept, programming an EXOR-condition
// Arduino-C does not provide the EXOR statement
// ============================================================================
int SignalIn = 3; // connected to push button
int SignalOut = 13; // Signal out, connected to led
int Delayed = 10; // delayed signal, connected to LED
int Pulse = 9; // pulse signal, connected to LED
bool SignalA = LOW; // EXOR input A
bool SignalB = LOW; // EXOR input B
//
void setup() //
{ pinMode(SignalIn, INPUT); // push button
pinMode(SignalOut, OUTPUT); // signal A
pinMode(Delayed, OUTPUT); // signal B
pinMode(Pulse, OUTPUT); // XOR -output
digitalWrite(SignalOut, LOW); // reset outputs
digitalWrite(Delayed, LOW); //
digitalWrite(Pulse, LOW); //
} //
//
void loop() //
{ SignalA = digitalRead(SignalIn); // read signal line
digitalWrite(SignalOut, SignalA); // pass thru to indicator
if (SignalA == !SignalB) // if EXOR condition occurs
{ digitalWrite(Pulse, HIGH); // pulse indicator on
delay(500); // pulse length
digitalWrite(Pulse, LOW); // pulse incator off
SignalB = SignalA; // update delayed signal
digitalWrite(Delayed, SignalB); // pass thru to indicator
} //
} //
Re: Vraagje van beginner
Ja is natuurlijk ook een goed idee om te zo te doen.
Maar mijn probleem met een pulsje op de op en neergaande flank is inmiddels opgelost met de hulp van shooter.
Ik heb echter nog een ander probleem met dit projectje.
Wellicht kan iemand daar enige hulp in beiden.
Zodra er spanning op UNO komt te staan gaat ie gelijk de code van regel 18 en regel 22 verzenden, en dat blijft ie doen.
Dit zou alleen mogen op de voorwaarde van regel 16 en 20.
De led10 werkt wel keurig op de pulsjes.
Zou iemand mij kunnen zeggen wat ik fout doe ?
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
const int buttonPin1 = 2;
const int ledPin10 = 10; // alleen voor test
int buttonstate1 = 0;
int lastbutton1=buttonstate1;
void setup() {
Serial.begin(9600);
mySwitch.enableTransmit(8);
pinMode(buttonPin1, INPUT); // alleen voor test
pinMode(ledPin10, OUTPUT); // alleen voor test
}
void loop() {
buttonstate1 = digitalRead(buttonPin1);
{ if (lastbutton1 != buttonstate1)
digitalWrite(ledPin10, HIGH);
mySwitch.send(2115473, 24);}
delay(400);
{ lastbutton1=buttonstate1;
digitalWrite(ledPin10, LOW);
mySwitch.send(2115481, 24); }
}
Maar mijn probleem met een pulsje op de op en neergaande flank is inmiddels opgelost met de hulp van shooter.
Ik heb echter nog een ander probleem met dit projectje.
Wellicht kan iemand daar enige hulp in beiden.
Zodra er spanning op UNO komt te staan gaat ie gelijk de code van regel 18 en regel 22 verzenden, en dat blijft ie doen.
Dit zou alleen mogen op de voorwaarde van regel 16 en 20.
De led10 werkt wel keurig op de pulsjes.
Zou iemand mij kunnen zeggen wat ik fout doe ?
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
const int buttonPin1 = 2;
const int ledPin10 = 10; // alleen voor test
int buttonstate1 = 0;
int lastbutton1=buttonstate1;
void setup() {
Serial.begin(9600);
mySwitch.enableTransmit(8);
pinMode(buttonPin1, INPUT); // alleen voor test
pinMode(ledPin10, OUTPUT); // alleen voor test
}
void loop() {
buttonstate1 = digitalRead(buttonPin1);
{ if (lastbutton1 != buttonstate1)
digitalWrite(ledPin10, HIGH);
mySwitch.send(2115473, 24);}
delay(400);
{ lastbutton1=buttonstate1;
digitalWrite(ledPin10, LOW);
mySwitch.send(2115481, 24); }
}
Re: Vraagje van beginner
na de if moet je de dingen wel tussen {}zetten
dus if(voorwaarde){actie bij waar}
dus if(voorwaarde){actie bij waar}
paul deelen
shooter@home.nl
shooter@home.nl
Re: Vraagje van beginner
Is dit misschien de oplossing:
Succes
- Code: Alles selecteren
void loop() {
buttonstate1 = digitalRead(buttonPin1);
if (lastbutton1 != buttonstate1)
{
if (buttonstate1 = 0)
{
digitalWrite(ledPin10, HIGH);
mySwitch.send(2115473, 24);
}
else
{
digitalWrite(ledPin10, LOW);
mySwitch.send(2115481, 24);
}
lastbutton1=buttonstate1;
}
delay(400);
}
Succes
12 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast