Esercitazione: Semaforo
Obiettivi:
- Segnali multipli
- Funzione mills
- Uso dell'istruzione if ...... else if
Semaforo con impostazione giorno / notte (lampeggiante giallo)
Codice:
- int ledState = LOW;
- unsigned long previousMillis = 0;
- const long interval = 500;
- int n=0;
- bool Stato = false;
- bool Ck = false;
- int SEC=0;
- bool ON;
- int flash;
- void setup() {
- pinMode(7, OUTPUT); // verde A
- pinMode(2, OUTPUT); // giallo A
- pinMode(3, OUTPUT); // rosso A
- pinMode(4, OUTPUT); // verde B
- pinMode(5, OUTPUT); // giallo B
- pinMode(6, OUTPUT); // rosso B
- pinMode(13, INPUT); // lampeggiante
- Serial.begin (9800);
- }
- // the loop function runs over and over again forever
- void loop() {
- unsigned long currentMillis = millis();
- if (currentMillis - previousMillis >= interval) {
- previousMillis = currentMillis;
- if (ledState == LOW) {
- ledState = HIGH;
- } else {
- ledState = LOW;
- }
- Ck = false;
- if (ledState) {
- Ck = true;
- }
- if (Ck==true) {
- SEC=SEC+1;
- if (SEC>18) {
- SEC = 0;
- }
- }
- if (!digitalRead(13)) {
- if ( SEC<=5) {
- digitalWrite(7, HIGH);
- digitalWrite(2, LOW);
- digitalWrite(3, LOW);
- digitalWrite(4, LOW);
- digitalWrite(5, LOW);
- digitalWrite(6, HIGH);
- }
- else if ( SEC<8 && SEC>5) {
- digitalWrite(7, LOW);
- digitalWrite(2, HIGH);
- digitalWrite(3, LOW);
- digitalWrite(4, LOW);
- digitalWrite(5, LOW);
- digitalWrite(6, HIGH);
- }
- else if ( SEC<15 && SEC>8) {
- digitalWrite(7, LOW);
- digitalWrite(2, LOW);
- digitalWrite(3, HIGH);
- digitalWrite(4, HIGH);
- digitalWrite(5, LOW);
- digitalWrite(6, LOW);
- }
- else if ( SEC<18 && SEC>15) {
- digitalWrite(7, LOW);
- digitalWrite(2, LOW);
- digitalWrite(3, HIGH);
- digitalWrite(4, LOW);
- digitalWrite(5, HIGH);
- digitalWrite(6, LOW);
- }
- }
- else {
- digitalWrite(7, LOW);
- digitalWrite(2, ledState);
- digitalWrite(3, LOW);
- digitalWrite(4, LOW);
- digitalWrite(5, ledState);
- digitalWrite(6, LOW);
- }
- }
- Serial.print (SEC);
- Serial.print (" ");
- Serial.print (flash);
- Serial.print (" ");
- Serial.println (n);
- }
Ultime modifiche: martedì, 29 marzo 2022, 11:47