12-Il Parcheggio Smart (Accesso Automatizzato con Conteggio) ๐ ฟ๏ธ๐ค โ
Hardware: Micro:bit + Microcar, 1x Servo SG90 (sbarra su P10), Sensore Ultrasuoni.
Obiettivo: Comprendere il controllo angolare di un servo, usare variabili come contatori e gestire la logica "a cascata" (if-then-else if).
Fase 1: L'Apertura Meccanica ๐๏ธ๐น๏ธ โ
Obiettivo: Far alzare la sbarra quando un'auto (o una mano) si avvicina. Non contiamo ancora.
Logica (Teoria): Dobbiamo dire al Micro:bit: "Se vedi qualcosa a meno di 10cm, apri la sbarra per 2 secondi, poi richiudila".
๐งฉ La composizione dei Blocchi (Sprint 1): โ
- On start (All'avvio): Inizializziamo il servo in posizione di chiusura.
servomotore scrivi pin [P10] angolo [90](Sbarra abbassata).
- Forever (Per sempre): Il ciclo di controllo.
- Crea la variabile
distanza. imposta [distanza] a (Ultrasonic port (cm))(Dalla categoria MiniCar).- Inserisci un blocco
se ... allora ... altrimenti: - Condizione:
se [distanza] < [10]:- (Dentro il "SE" - Sequenza Apertura)
servomotore scrivi pin [P10] angolo [180](Sbarra alzata).pausa (ms) [2000](Attesa 2 secondi per far passare l'auto).servomotore scrivi pin [P10] angolo [90](Sbarra abbassata).pausa (ms) [200](Tempo tecnico per il movimento).
- (Dentro il "SE" - Sequenza Apertura)
- (Dentro "ALTRIMENTI")
servomotore scrivi pin [P10] angolo [90](Assicurati che rimanga chiusa se non c'รจ nessuno).
- Crea la variabile
Test 1: Avvicinando la mano al sensore, la sbarra si alza, aspetta e si riabbassa.
Fase 2: Il Contatore e il "Tutto Pieno" ๐ข๐ซ โ
Obiettivo: Introduciamo la variabile contatore. La sbarra si apre solo se c'รจ posto (contatore < 5). Quando arriva a 5, mostra "PIENO".
๐งฉ La composizione dei Blocchi (Sprint 2): โ
- On start (All'avvio):
servomotore scrivi pin [P10] angolo [90]imposta [contatore] a [0](Il parcheggio รจ vuoto all'inizio).
- Forever (Per sempre): Modifichiamo la logica dentro l'if della distanza.
- Se
distanza < 10:- Dobbiamo fare un secondo controllo: c'รจ posto?
- Inserisci un blocco
se [contatore] < [5]dentro l'if della distanza.- (Dentro il "SE contatore < 5")
- Esegui la Sequenza Apertura vista nello Sprint 1.
pausa (ms) [200](Tempo tecnico per il movimento).cambia [contatore] per [1](Incrementa di 1).mostra numero (contatore)(Opzionale: feedback visivo).
- (Dentro il "SE contatore < 5")
- (ALTRIMENTI del "SE contatore < 5")
mostra stringa "PIENO"servomotore scrivi pin [P10] angolo [90](Sbarra ferma, non si apre).
- Se
Test 2: Avvicinando la mano 5 volte, il numero sale. Alla sesta volta, la sbarra non si alza e il Micro:bit scrive "PIENO".
Fase 3: Gestire l'Uscita (Tasto A) ๐๐ โ
Obiettivo: Aggiungere il pulsante A per far uscire le auto. La sbarra si apre, il contatore scende di 1. Non scendiamo sotto lo zero e mostriamo "LIBERO".
๐งฉ La composizione dei Blocchi (Sprint 3): โ
Questa parte va inserita all'interno del forever, ma in una sezione separata o in un blocco on button A pressed. Usando il codice nella tua foto, l'hai messa nel forever, subito dopo i blocchi della distanza.
- Forever (Per sempre): (Aggiungiamo la logica dopo la gestione dell'ingresso)
- Inserisci un nuovo blocco
se ... allora ... altrimenti: - Condizione:
se pulsante A premuto:- (Dentro il "SE pulsante A premuto")
- Dobbiamo controllare se c'รจ almeno un'auto dentro per farla uscire.
- Inserisci un blocco
se [contatore] > [0]dentro l'if del pulsante A.
- (Dentro il "SE contatore > 0")
- Esegui la Sequenza Apertura vista nello Sprint 1.
pausa (ms) [200](Tempo tecnico per il movimento).cambia [contatore] per [-1](Decrementa di 1).mostra numero (contatore)(Opzionale: feedback visivo).
- (Dentro il "SE pulsante A premuto")
- (ALTRIMENTI del "SE contatore > 0")
mostra stringa "LIBERO"(O "VUOTO").servomotore scrivi pin [P10] angolo [90](Sbarra ferma).
- Inserisci un nuovo blocco
Fase 4: Debugging Finale e Problem Solving ๐ง โ
Fai un collaudo completo in classe. Ecco cosa succede solitamente:
- Il servo "scotta" o vibra: L'angolo 180ยฐ o 90ยฐ รจ troppo estremo per il meccanismo meccanico della tua sbarra. Modifica gli angoli nel codice (es. 160ยฐ per aperto e 100ยฐ per chiuso).
- Doppio conteggio: Se una macchina ci mette troppo a passare, il sensore la legge due volte. Alza la pausa di apertura (da 2000ms a 3000ms).