un semaforo a led

Il compito è simile all'esempio esaminato alla pagina precedente.

Si tratta solo di definire una sequenza.

Nell'articolo si affronta l'uso delle funzioni (definite dall'utente) con la conseguenza di scrivere un codice che sia più comprensibile ad un umano.

Simulare il funzionamento automatico di un semaforo significa:

  1. collegare tre LED colorati ai pin P0 (rosso), P1 (giallo), P2 (verde)

  2. scrivere la successione corretta che prevede

    1. rosso acceso

    2. rosso spento e verde acceso

    3. giallo acceso (senza spegnere il verde)

    4. verde e giallo spenti

  3. da ripetere indefinitamente (per sempre).

La soluzione che viene di seguito proposta è più complessa in quanto si introduce l'uso della "funzione definita dall'utente" per semplificare la lettura del codice e si organizzano due sequenze diverse da fare funzionare una di giorno e l'altra di notte.

La sequenza che deve funzionare di giorno è quella vista sopra con i tre colori che si susseguono automaticamente.

Di notte si deve vedere solo il giallo lampeggiante.

Il passaggio dal modo giorno al modo notte e viceversa viene imposto automaticamente dal valore dell'intensità di luce (Micro:bit ha un sensore che rileva l'intensità della luce ambiente).


Le funzioni

Anzichè affannarsi a ricordare il colore collegato ad un pin si può definire una funzione apposita come, per esempio, "accendi rosso".

In questo modo l'eccensione del LED rosso avviene per chiamata della funzione (call).

Così si fa per accendere gli altri LED o per spegnerli.

Analogamente si fa per racchiudere le sequenze nei due casi giorno e notte.

Il ciclo principale

Il ciclo "per sempre" è costruito con una scelta "se__ allora __ altrimenti" che interroga ogni volta lo stato del sensore di luce.

Nell'esempio se l'intensità della luce è inferiore a 50 significa che è notte allora viene attivato un singolo lampeggio del giallo, altrimenti viene attivata una sola sequenza del giorno e si ripete il ciclo.