PchButik.se

4.TrafikSekvens

4.TrafikSekvens koppling

Video: GenomgÄng av fÀrgning av etiketter med Nano-styrning.

// Kod 4 TrafikSekvens
#include <Arduino.h>

void TrafikSekvens(); // Kan tas bort i Arduino IDE
void KlickDelay(unsigned long); // Kan tas bort i Arduino IDE

#define KNAPP_PINNE 2 // Valt pinne 2 för knapp
#define PIEZO_PINNE 11 // Valt pinne 11 för piezo

#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; // Sparad tid för nÀsta klick

void setup() {
    pinMode(KNAPP_PINNE, INPUT_PULLUP); // Knapp med 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; // StartvÀrde ungefÀr 1 s framÄt
}

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 30 s innan ny sekvens tillÄts
    }
}

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);
    KlickDelay(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++) { // Repetera 'time' gÄnger
        if (millis() > _TimeToNextTick) {
            digitalWrite(PIEZO_PINNE, HIGH);
            delay(1);
            digitalWrite(PIEZO_PINNE, LOW);
            _TimeToNextTick = millis() + 999;
        }
        delay(1);
    }
}

Nu liknar det trafikljus vid ett övergÄngsstÀlle, men det Àr fortfarande en del problem.

- NÀr TrafikSekvensen pÄgÄr, hÀnder det inget nÀr knappen trycks.

- NÀr det blir grön gubbe ska det klicka fortare.

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.