Teller flankdetectie
7 berichten
• Pagina 1 van 1
Teller flankdetectie
Beste Forumleden,
ik ben met een project bezig waarbij een teller moet verhogen indien de blauwe led uitgaat. Ik heb als basis de flankdetectie gebruikt maar ik kom er niet uit. De ledaansturing werkt maar de teller verhoogt niet. Kunnen jullie mij helpen?
Alvast bedankt voor jullie moeite.
RtcDateTime now = Rtc.GetDateTime();
if ((now.Hour() == parameters[TIME_HOUR]) && (now.Minute() == parameters[TIME_MINUTE]) && (now.Second() <= parameters[TIME_SECOND]))
{
digitalWrite(blauweled, HIGH);
}
else
{
digitalWrite(blauweled, LOW);
}
if (statusblauweled != laatstestatusled)
{
teller++;
}
laatstestatusled = statusblauweled;
Serial.print(now.Hour(), DEC);
Serial.print(':');
Serial.print(now.Minute(), DEC);
Serial.print(':');
Serial.print(now.Second(), DEC);
Serial.println();
// Serial.print(now.DayOfWeek(), DEC);
Serial.println(teller);
Serial.println();
}
ik ben met een project bezig waarbij een teller moet verhogen indien de blauwe led uitgaat. Ik heb als basis de flankdetectie gebruikt maar ik kom er niet uit. De ledaansturing werkt maar de teller verhoogt niet. Kunnen jullie mij helpen?
Alvast bedankt voor jullie moeite.
RtcDateTime now = Rtc.GetDateTime();
if ((now.Hour() == parameters[TIME_HOUR]) && (now.Minute() == parameters[TIME_MINUTE]) && (now.Second() <= parameters[TIME_SECOND]))
{
digitalWrite(blauweled, HIGH);
}
else
{
digitalWrite(blauweled, LOW);
}
if (statusblauweled != laatstestatusled)
{
teller++;
}
laatstestatusled = statusblauweled;
Serial.print(now.Hour(), DEC);
Serial.print(':');
Serial.print(now.Minute(), DEC);
Serial.print(':');
Serial.print(now.Second(), DEC);
Serial.println();
// Serial.print(now.DayOfWeek(), DEC);
Serial.println(teller);
Serial.println();
}
Advertisement
Re: Teller flankdetectie
Dit is vast niet het hele programma want statusblauweled wordt nergens van een waarde voorzien.
Maar toch een poging op de gegeven code:
Maar toch een poging op de gegeven code:
- Code: Alles selecteren
RtcDateTime now = Rtc.GetDateTime();
if ((now.Hour() == parameters[TIME_HOUR]) && (now.Minute() == parameters[TIME_MINUTE]) && (now.Second() <= parameters[TIME_SECOND]))
{
digitalWrite(blauweled, HIGH);
statusblauweled = HIGH;
}
else
{
digitalWrite(blauweled, LOW);
statusblauweled = LOW;
}
if (statusblauweled != laatstestatusled &&
statusblauweLed == LOW)
{
teller++;
}
laatstestatusled = statusblauweled;
Re: Teller flankdetectie
Dit is de rest van de functie:
void dosering() {
int statusblauweled = digitalRead(blauweled);
int laatstestatusled = digitalRead(blauweled);
int teller ;
RtcDateTime now = Rtc.GetDateTime();
if ((now.Hour() == parameters[TIME_HOUR]) && (now.Minute() == parameters[TIME_MINUTE]) && (now.Second() <= parameters[TIME_SECOND]))
{
digitalWrite(blauweled, HIGH);
statusblauweled = HIGH;
}
else
{
digitalWrite(blauweled, LOW);
statusblauweled = LOW;
}
if (statusblauweled != laatstestatusled && statusblauweled == LOW)
{
teller++;
}
laatstestatusled = statusblauweled;
Serial.print(now.Hour(), DEC);
Serial.print(':');
Serial.print(now.Minute(), DEC);
Serial.print(':');
Serial.print(now.Second(), DEC);
Serial.println();
// Serial.print(now.DayOfWeek(), DEC);
Serial.println(teller);
// Serial.println(statusblauweled);
Serial.println();
}
void dosering() {
int statusblauweled = digitalRead(blauweled);
int laatstestatusled = digitalRead(blauweled);
int teller ;
RtcDateTime now = Rtc.GetDateTime();
if ((now.Hour() == parameters[TIME_HOUR]) && (now.Minute() == parameters[TIME_MINUTE]) && (now.Second() <= parameters[TIME_SECOND]))
{
digitalWrite(blauweled, HIGH);
statusblauweled = HIGH;
}
else
{
digitalWrite(blauweled, LOW);
statusblauweled = LOW;
}
if (statusblauweled != laatstestatusled && statusblauweled == LOW)
{
teller++;
}
laatstestatusled = statusblauweled;
Serial.print(now.Hour(), DEC);
Serial.print(':');
Serial.print(now.Minute(), DEC);
Serial.print(':');
Serial.print(now.Second(), DEC);
Serial.println();
// Serial.print(now.DayOfWeek(), DEC);
Serial.println(teller);
// Serial.println(statusblauweled);
Serial.println();
}
Re: Teller flankdetectie
De oplossing is de volgende:
In je programma zal je waarschijnlijk steeds dosering() aanroepen.
De variable statusblauweled, laatstestatusled en teller worden bij aanroep op 0 gezet als dosering() wordt gestart.
De oplossing kan op 2 manieren:
- De variabele buiten de functie zetten en de laatstestatusled NIET inlezen.
- of de variabele static maken dan worden ze maar 1 maal op 0 gezet.
ook moet de laatstestatusled alleen geen digitalRead meer uitvoeren.
- Code: Alles selecteren
void dosering() {
int statusblauweled = digitalRead(blauweled);
int laatstestatusled = digitalRead(blauweled);
int teller ;
RtcDateTime now = Rtc.GetDateTime();
In je programma zal je waarschijnlijk steeds dosering() aanroepen.
De variable statusblauweled, laatstestatusled en teller worden bij aanroep op 0 gezet als dosering() wordt gestart.
De oplossing kan op 2 manieren:
- De variabele buiten de functie zetten en de laatstestatusled NIET inlezen.
- Code: Alles selecteren
int statusblauweled;
int laatstestatusled;
int teller;
void dosering()
{
statusblauweled = digitalRead(blauweled);
// int laatstestatusled = digitalRead(blauweled); // VERWIJDEREN
- of de variabele static maken dan worden ze maar 1 maal op 0 gezet.
ook moet de laatstestatusled alleen geen digitalRead meer uitvoeren.
- Code: Alles selecteren
void dosering() {
int static statusblauweled = digitalRead(blauweled);
int static laatstestatusled;
int static teller ;
Re: Teller flankdetectie
Als aanvulling de statements die ik had toegevoegd kunnen vervallen met uitzondering van het if statement
- Code: Alles selecteren
/// statusblauweled = LOW HIGH // verwijderen.
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten