Meerdere knoppen tegelijk een opdracht met timer geven
7 berichten
• Pagina 1 van 1
- Arduinonieuw
- Berichten: 7
- Geregistreerd: 30 Okt 2013, 13:05
Meerdere knoppen tegelijk een opdracht met timer geven
Hallo,
Ik zou graag b.v. 4 drukknoppen maken die ieder apart een led of motor aansturen voor een bepaalde tijd. Echter als ik een knop indruk dan gaat er een led branden voor een bepaalde tijd in de void loop. Maar dan moet ik wachten totdat die timer afloopt wil ik een andere knop indrukken. Maar ik wil graag, als de eerste timer loopt, ook andere knoppen activeren. En dat ook met een timer. Maar het lukt me maar niet. Wie kan helpen? Ik scan nu de knoppen die ingedrukt worden en stuur dan in de void loop de Arduino naar een void gemaakt voor een led of motor. Maar zoals gezegd wacht Arduino eerst op dat de eerste timer klaar is voordat hij terugkeert naar de void loop waar hij weer gaat scannen naar ingedrukte knoppen. Alvast bedankt.
Groet, Emil Bakker
Ik zou graag b.v. 4 drukknoppen maken die ieder apart een led of motor aansturen voor een bepaalde tijd. Echter als ik een knop indruk dan gaat er een led branden voor een bepaalde tijd in de void loop. Maar dan moet ik wachten totdat die timer afloopt wil ik een andere knop indrukken. Maar ik wil graag, als de eerste timer loopt, ook andere knoppen activeren. En dat ook met een timer. Maar het lukt me maar niet. Wie kan helpen? Ik scan nu de knoppen die ingedrukt worden en stuur dan in de void loop de Arduino naar een void gemaakt voor een led of motor. Maar zoals gezegd wacht Arduino eerst op dat de eerste timer klaar is voordat hij terugkeert naar de void loop waar hij weer gaat scannen naar ingedrukte knoppen. Alvast bedankt.
Groet, Emil Bakker
Advertisement
Re: Meerdere knoppen tegelijk een opdracht met timer geven
Kijk eens naar blink without delay in de voorbeelden.
je hoeft niet in een loop te wachten tot iets klaar is, je hoeft alleen maar te kijken of de tijd al is verstreken. is de tijd verstreken dan de procedure uitvoeren om de led uit te zetten.
je hoeft niet in een loop te wachten tot iets klaar is, je hoeft alleen maar te kijken of de tijd al is verstreken. is de tijd verstreken dan de procedure uitvoeren om de led uit te zetten.
Re: Meerdere knoppen tegelijk een opdracht met timer geven
Waarschijnlijk zie je programma er nu zo uit. (schematisch)
void loop()
{
if (<Lees button voor led1>)
{
// Led1 gaat aan
..........
delay(3000);
// led1 gaat uit
......
}
}
Verwijderen van het delay statement lost het probleem op:
#define WAIT_TIME_LED_1 3000 // Tijd dat led1 aan is.
long stopTimeLed1 = 0;
void loop()
{
if (<Lees button voor led1>)
{
// actie led1 gaat aan
.........
// Eind tijd voor led1 wordt vastgelegd
stopTimeLed1 = millis() + WAIT_TIME_LED_1;
}
// Tijd voor Led1 is verlopen.
if (stopTimeLed1 < millis() && stopTimeLed1 != 0)
{
// led1 gaat uit
................
stopTimeLed1 = 0;
}
}
void loop()
{
if (<Lees button voor led1>)
{
// Led1 gaat aan
..........
delay(3000);
// led1 gaat uit
......
}
}
Verwijderen van het delay statement lost het probleem op:
#define WAIT_TIME_LED_1 3000 // Tijd dat led1 aan is.
long stopTimeLed1 = 0;
void loop()
{
if (<Lees button voor led1>)
{
// actie led1 gaat aan
.........
// Eind tijd voor led1 wordt vastgelegd
stopTimeLed1 = millis() + WAIT_TIME_LED_1;
}
// Tijd voor Led1 is verlopen.
if (stopTimeLed1 < millis() && stopTimeLed1 != 0)
{
// led1 gaat uit
................
stopTimeLed1 = 0;
}
}
- Arduinonieuw
- Berichten: 7
- Geregistreerd: 30 Okt 2013, 13:05
Re: Meerdere knoppen tegelijk een opdracht met timer geven
Dank jullie voor de snelle reactie. Ik ga het uitproberen.
- Arduinonieuw
- Berichten: 7
- Geregistreerd: 30 Okt 2013, 13:05
Re: Meerdere knoppen tegelijk een opdracht met timer geven
Hallo,
Code ingevoerd, maar met onderstaand programma gaat de led meteen aan en blijft aan. Waarschijnlijk doe ik iets fout.
const int button1Pin = 2;
const int button2Pin = 3;
const int led1Pin = 4;
const int led2Pin = 5;
#define WAIT_TIME_LED_1 3000 // Tijd dat led1 aan is.
long stopTimeLed1 = 0;
void setup() {
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led1Pin, OUTPUT);
}
void loop()
{
if (digitalRead(button1Pin) == HIGH)
{
// actie led1 gaat aan
digitalWrite (led1Pin , HIGH);
// Eind tijd voor led1 wordt vastgelegd
stopTimeLed1 = millis() + WAIT_TIME_LED_1;
}
//Tijd voor Led1 is verlopen.
if (stopTimeLed1 < millis() && stopTimeLed1 != 0)
{
// led1 gaat uit
digitalWrite(led1Pin, LOW);
stopTimeLed1 = 0;
}
}
Wat kan dit zijn?
Code ingevoerd, maar met onderstaand programma gaat de led meteen aan en blijft aan. Waarschijnlijk doe ik iets fout.
const int button1Pin = 2;
const int button2Pin = 3;
const int led1Pin = 4;
const int led2Pin = 5;
#define WAIT_TIME_LED_1 3000 // Tijd dat led1 aan is.
long stopTimeLed1 = 0;
void setup() {
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led1Pin, OUTPUT);
}
void loop()
{
if (digitalRead(button1Pin) == HIGH)
{
// actie led1 gaat aan
digitalWrite (led1Pin , HIGH);
// Eind tijd voor led1 wordt vastgelegd
stopTimeLed1 = millis() + WAIT_TIME_LED_1;
}
//Tijd voor Led1 is verlopen.
if (stopTimeLed1 < millis() && stopTimeLed1 != 0)
{
// led1 gaat uit
digitalWrite(led1Pin, LOW);
stopTimeLed1 = 0;
}
}
Wat kan dit zijn?
Re: Meerdere knoppen tegelijk een opdracht met timer geven
bij de if een paar haakjes plaatsen want de if werkt alleen maar met booleans dus if ( tijd <millis)&&(led==aan)
etc
en define kijken hoe je aan kunt definieren als HIGH want relais zijn vaak aan als ze juist LOW zijn.
etc
en define kijken hoe je aan kunt definieren als HIGH want relais zijn vaak aan als ze juist LOW zijn.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Meerdere knoppen tegelijk een opdracht met timer geven
Het if statement uitbreiden met stopTimeLed1 == 0.
if (digitalRead(button1Pin) == HIGH && stopTimeLed1 == 0)
Testen met het uitbreiden van print resultaten:
Bij het testen zal dan na 3 sec de OFF worden geprint en als dan direct weer ON aan gaat dan zit de fout
gedeelte van digitalRead(button1Pin) == HIGH
kan wijzen op misschien fout aangesloten!!
if (digitalRead(button1Pin) == HIGH && stopTimeLed1 == 0)
Testen met het uitbreiden van print resultaten:
- Code: Alles selecteren
void setup() {
.....
Serial.begin(9600);
}
void loop()
{
if (digitalRead(button1Pin) == HIGH && stopTimeLed1 == 0)
{
Serial.println("ON");
....
}
//Tijd voor Led1 is verlopen.
if (stopTimeLed1 < millis() && stopTimeLed1 != 0)
{
Serial.println("OFF");
.....
}
}
Bij het testen zal dan na 3 sec de OFF worden geprint en als dan direct weer ON aan gaat dan zit de fout
gedeelte van digitalRead(button1Pin) == HIGH
kan wijzen op misschien fout aangesloten!!
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: ubagibehufo en 10 gasten