/*All-in-one Starter Kit for PICO 2
Lezione 1 - Simulazione di un semaforo
Il codice accende in sequeanza i tre LED: Rosso, Giallo, Verde.
Modificando la variabile "intervallo" possiamo modificare
la velocità di passaggio da un LED a seguente.
Hardware richiesto
All-in-one Starter Kit per Pico2 ×1
Cavo USB ×1
*/
// Includi la libreria principale di Arduino
#include <Arduino.h>
// Definisci i pin dei LED
#define LED_Rosso 18
#define LED_Giallo 20
#define LED_Verde 19
// Variabili per la gestione del tempo
unsigned long tempoPrecedente = 0;
// Intervallo per ciascun stato (in millisecondi)
const long intervallo = 500;
// Variabile che indica quale LED deve essere acceso
int stato = 0; // 0 = rosso, 1 = giallo, 2 = verde
void setup() {
// Imposta i pin dei LED come uscite
pinMode(LED_Rosso, OUTPUT);
pinMode(LED_Giallo, OUTPUT);
pinMode(LED_Verde, OUTPUT);
// Tutti i LED spenti all'avvio
digitalWrite(LED_Rosso, LOW);
digitalWrite(LED_Giallo, LOW);
digitalWrite(LED_Verde, LOW);
}
void loop() {
// Ottieni il tempo corrente
unsigned long tempoAttuale = millis();
// Se è passato l'intervallo previsto...
if (tempoAttuale - tempoPrecedente >= intervallo) {
tempoPrecedente = tempoAttuale; // Aggiorna il tempo
// Spegni tutti i LED
digitalWrite(LED_Rosso, LOW);
digitalWrite(LED_Giallo, LOW);
digitalWrite(LED_Verde, LOW);
// Accendi il LED corrispondente allo stato attuale
if (stato == 0) {
digitalWrite(LED_Rosso, HIGH);
} else if (stato == 1) {
digitalWrite(LED_Giallo, HIGH);
} else if (stato == 2) {
digitalWrite(LED_Verde, HIGH);
}
// Passa allo stato successivo (e ricomincia dopo il verde)
stato = (stato + 1) % 3;
}
}