countdowntimer met millis onderbreken en functie uitvoeren

algemene C code
Berichten: 2
Geregistreerd: 01 Mrt 2021, 20:02

countdowntimer met millis onderbreken en functie uitvoeren

Berichtdoor bleubird » 01 Mrt 2021, 23:00

Best allemaal,
Het is voor mij de 1e keer dat ik iets op dit forum plaats, ik heb een éénvoudig huisalarm gemaakt wat bestaat uit een uno,lcd, relais, keypad, sirene en pirsensor. Wanneer het alarm is ingeschakeld en wordt geactiveerd heb ik een countdown timer lopen die mij 30 seconden geeft om binnen te komen. echter nu wil ik dat er tijdens de while lus met millis die terugtelt een functie wordt uitgevoerd die de code van de keypad registreert en dus het alarm uitschakelt. Ik heb al zitten denken aan een pol of zoiets of een interrupt. heeft iemand misschien ooit iets soortgelijks meegemaakt.

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: countdowntimer met millis onderbreken en functie uitvoer

Berichtdoor shooter » 02 Mrt 2021, 18:02

je zet dus een timer aan van 30 seconden ofwel je slaat de starttijd =millsi() ergens op.
dan ga je iets anders doen bijvoorbeeld kijken of er een toets ingedrukt is.
na die functie keer je terug naar je loop en ga je kijken of jouw millis > 30+starttijd. dan spring je naar de functie telanggewachtopjuistecode.
als je zorgt dat jouw loop heel snel is dan gaat dat heel erg goed, heel veel processen zoals servo en stappenmotoren maar ook communicatie werkt zo.
paul deelen
shooter@home.nl

Berichten: 2
Geregistreerd: 01 Mrt 2021, 20:02

Re: countdowntimer met millis onderbreken en functie uitvoer

Berichtdoor bleubird » 02 Mrt 2021, 19:41

if (alarmActivated == true){//als alarm is ingeschakeld
if (PirValue == HIGH){//en er wordt beweging gedetecteerd
lastTime = millis();
int countdown = 30; // 9 seconds count down before activating the alarm
while (countdown != 0)
{
if (millis() - lastTime >= 1000)
{
countdown--;
lastTime+=1000;
lcd.setCursor(0,3);
lcd.print(countdown);
}
}
digitalWrite(relay,HIGH);
lcd.clear();
enterPassword();
}
}
Hoe krijg ik het voor elkaar dat hij uit de while lus stapt en de functie enterPassword(); uitvoerd. Het is dus de bedoeling dat hij dit tegelijk doet tijdens het terugtellen functie uitvoeren.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: countdowntimer met millis onderbreken en functie uitvoer

Berichtdoor shooter » 03 Mrt 2021, 14:28

vl;ak onder de while, want daar komt de loop dus heel veel, vraag je het password aan, maar je moet zorgen dat die lus gewoon door blijft lopen, dus je gaat alleen even vragen of er een toets is ingedrukt, en zo ja dan opslaan en vergelijken met de juiste, zo niet terug naar je loop, zo ja open sesame.en dan laat je op het display dus continu open zien, als je een andere toets indrukt dan kassie weer dicht.
paul deelen
shooter@home.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast