5. Snabbare klick
Video: Trafikljusprojektet som grund för Snabbare klick.
Video/inbÀddat innehÄll: KodgenomgÄng för KlickFastDelay.
// Kod 5 SnabbareKlick #include <Arduino.h> void TrafikSekvens(); // Kan tas bort om det Àr Arduino IDE void KlickDelay(unsigned long); void KlickFastDelay(unsigned long); #define KNAPP_PINNE 2 #define PIEZO_PINNE 11 #define WALK_RED_PINNE 7 #define WALK_YELLOW_PINNE 8 #define WALK_GREEN_PINNE 9 #define CAR_RED_PINNE 4 #define CAR_YELLOW_PINNE 5 #define CAR_GREEN_PINNE 6 unsigned long _TimeToNextTick; // Förbereder variabeln för nÀsta klick void setup() { pinMode(KNAPP_PINNE, INPUT_PULLUP); pinMode(PIEZO_PINNE, OUTPUT); pinMode(CAR_RED_PINNE, OUTPUT); pinMode(CAR_YELLOW_PINNE, OUTPUT); pinMode(CAR_GREEN_PINNE, OUTPUT); pinMode(WALK_RED_PINNE, OUTPUT); pinMode(WALK_YELLOW_PINNE, OUTPUT); pinMode(WALK_GREEN_PINNE, OUTPUT); digitalWrite(WALK_RED_PINNE, HIGH); digitalWrite(CAR_GREEN_PINNE, HIGH); _TimeToNextTick = millis() + 999; } void loop() { KlickDelay(1); bool statusKnapp = digitalRead(KNAPP_PINNE); if (statusKnapp == LOW) { tone(PIEZO_PINNE, 3000, 100); // Kort ton vid knapptryck TrafikSekvens(); KlickDelay(30000); // VÀnta innan ny sekvens } } void TrafikSekvens() { digitalWrite(CAR_GREEN_PINNE, LOW); digitalWrite(CAR_YELLOW_PINNE, HIGH); KlickDelay(3000); digitalWrite(CAR_YELLOW_PINNE, LOW); digitalWrite(CAR_RED_PINNE, HIGH); KlickDelay(2000); digitalWrite(WALK_RED_PINNE, LOW); digitalWrite(WALK_GREEN_PINNE, HIGH); _TimeToNextTick = millis() + 100; // Snabbare klick var tionde sekunddel KlickFastDelay(6000); KlickDelay(4000); digitalWrite(WALK_GREEN_PINNE, LOW); digitalWrite(WALK_RED_PINNE, HIGH); KlickDelay(3000); digitalWrite(CAR_YELLOW_PINNE, HIGH); KlickDelay(1000); digitalWrite(CAR_RED_PINNE, LOW); digitalWrite(CAR_YELLOW_PINNE, LOW); digitalWrite(CAR_GREEN_PINNE, HIGH); } void KlickDelay(unsigned long time) { for (size_t i = 0; i < time; i++) { if (millis() > _TimeToNextTick) { digitalWrite(PIEZO_PINNE, HIGH); delay(1); digitalWrite(PIEZO_PINNE, LOW); _TimeToNextTick = millis() + 999; } delay(1); } } void KlickFastDelay(unsigned long time) { for (size_t i = 0; i < time; i++) { if (millis() > _TimeToNextTick) { digitalWrite(PIEZO_PINNE, HIGH); delay(1); digitalWrite(PIEZO_PINNE, LOW); _TimeToNextTick = millis() + 100; } delay(1); } }
Koden har fÄtt en ny funktion KlickFastDelay som startas i TrafikSekvens.
Sista 4 sekunderna av tiden med grön gubbe Àr det normalt ett dubbelklickande ljud.
Kan du fixa detta sjÀlv? Annars kanske detta kommer hÀr i framtiden.
Knappen funkar inte nÀr TrafikSekvens görs, kanske ocksÄ kommer i framtiden.
Inköpslista.
Artikel: 2805 Trafikljus kit, med kod som passar nybörjare.
Direkt lÀnk: https://pchbutik.se/mcu/1794-trafikljus-kit-med-kod-som-passar-nyborjare.html
Denna sida Àr konverterad med hjÀlp av AI.
En sida för dig som bygger elektronik sjÀlv, experimenterar och laborerar.
Skapad av Per-Anders Hult för PchButik.se.


