commutatore
- commutatore
Serve per accendere la lampadina con un tasto o pulsante, lasciarla accesa, e poi spegnere la lampadina con lo stesso tasto e lasciarla spenta scambiando così lo stato ogni volta che si preme l'unico tasto interessato (in inglese: toggle switch).
Per ottenere questa funzione è necessario che il computer, cioè il programma che esegue lo script di Scratch, "conosca" lo stato della lampadina per accenderla se era spenta e per spegnerla se era accesa.
Per fare questo ci sono due modi:
- caso a) il programma controlla direttamente lo stato della lampadina
- caso b) il programma ricorda lo stato della lampadina
caso a)
Scratch ha una funzione "numero costume" tra quelle viola che riguardano l'aspetto che consente di sapere quale sia il costume attivo (tutti i costumi hanno un numero, oltre ad avere un nome, in base all'ordine in cui sono disposti nell'elenco dei costumi).
Lo script quindi ha la possibilità di conoscere lo stato della lampadina prima di agire perchè si sa a quale numero corrisponde il costume "lampada accesa" e a quale numero corrisponde il costume "lampada spenta".
In questo caso la "lampada spenta" ha il costume numero 1 per cui se è vero che c'è il costume numero 1 allora vuol dire che è spenta e quindi va accesa altrimenti va spenta.
Una scelta "se tasto <spazio> premuto istruzioni1 altrimenti istruzioni2" che consente due soli casi è quella adatta a noi.
Questo esempio utilizza il ciclo "per sempre" per controllare in continuazione l'evento "tasto spazio premuto" nel qual caso attiva la commutazione, se l'evento "tasto spazio premuto" non si verifica, il puntatore salta il blocco "se" e lascia immutato lo stato della lampadina.
Viene anche aggiunto un lieve ritardo con il controllo giallo "attendi 0,2 secondi"; questo serve per tenere conto del fatto che di solito teniamo il pulsante premuto per un tempo troppo lungo rispetto alla velocità di Scratch di ripetere il ciclo in relazione alla funzione di autoripetizione dei tasti: se si trattiene il tasto premuto, la tastiera invia un altro impulso come se fosse stato premuto un'altra volta con l'effetto di ricommutare la lampadina senza volerlo. Può essere il caso di ritoccare il valore in modo da adattarlo alle proprie esigenze ... anzi provare a modificarne il valore per vedere cosa accade.
Vedi esempio
caso b)
si crea la variabile "stato lampadina" (vedi gruppo delle istruzioni "variabili") che rappresenta la memoria di quanto accaduto precedentemente: accesa vale 1, spenta vale 0.
Quando viene comandata la lampadina occorre anche assegnare il valore giusto alla variabile: a lampadina spenta assegnare il valore "0", a lampadina accesa assegnare il valore "1" (con il comando arancione "porta stato lampadina a __").
Questo esempio utilizza ancora il ciclo "per sempre" per controllare l'evento "tasto spazio premuto" nel qual caso attiva la commutazione:
se la lampadina era accesa (valore 1) allora va spenta e settato il valore a 0
se la lampadina era spenta (valore 0) allora va accesa e settato il valore a 1
Ecco l'esempio da scaricare.
Osservare nell'area dello schermo, in alto a sinistra, il valore assunto dalla variabile.
Nota
Il ciclo "per sempre" impegna completamente lo script dello sprite in attesa dell'evento; può essere interessante usare il controllo giallo "quando si preme il tasto spazio"; come in questo esempio da scaricare: non ci sono così le controindicazioni per l'uso del loop infinito.
Sviluppi
- provare a simulare il comando da più punti in modo che anche altri tasti possano realizzare la commutazione.
- provare ad impedire che l'accensione possa avvenire prima di 3 secondi dopo lo spegnimento facendo emettere un suono per manovra scorretta