{jcomments on}

Con Scratch si possono inventare situazioni in cui lampadine si accendono e si spengono in base ai comandi o agli effetti che vogliamo creare.

Per esempio programmare una lampadina che si accende con un pulsante (un tasto della tastiera per rappresentare i comandi monostabili), con interruttore (due tasti per rappresentare le due posizioni stabili), simulare l'accensione da due punti, sensori esterni della scheda Picoboard (per realizzare un interruttore crepuscolare).

Si possono anche inventare giochi di luci con lampeggianti, luci rotanti, luci multicolore …. >> video

 

Prima di tutto occorre disegnare con l'editor grafico lo sprite "lampadina" con i due costumi "accesa" o "spenta", in alternativa scaricare lo sprite o addirittura fotografare una lampada vera sia quando è accesa che quando è spenta e scaricarla nell'archivio di Scratch (attenzione: è molto importante fotografarla nella medesima posizione e con le stesse dimensioni per non produrre effetti di movimento o saltellamento che inducono a cogliere due oggetti diversi e non lo stesso oggetto in due situazioni diverse). Con più lampade si assegna uno sprite diverso ad ognuna di esse con i due costumi: "accesa", "spenta".

Quando ci sono più lampade da comandare secondo fasi precise occorre operare in modo da mantenere sempre la sequenza prevista.

Attenzione! Quando diversi sprite devono funzionare in sincronia  o con succesioni definite (gli eventi di ciascuno sprite devono avvicendarsi con fasi coordinate fra loro) non conviene avere script diversi, uno per ciascuno sprite, ma è indispensabile che un solo script descriva l'avvicendarsi degli eventi di tutti gli sprite utilizzando l'invio di messaggi agli sprite con invia a tutti (messaggio); gli sprite li eseguiranno sempre al momento giusto perché gestiscono l'istruzione quando ricevo (messaggio) con il messaggio che lo riguarda.

Sfruttando questa potenzialità del linguaggio di programmazione si possono gestire meglio le successioni temporali degli eventi perché il luogo dove questi vengono attivati è in un solo script. Questo scipt può essere quello del primo sprite o può essere quello dello stage.

Nella figura a lato è presentato lo script dello sprite R scritto per dare la sensazione di rotazione alle tre lampadine inserite nel video proposto all'inizio dell'articolo. Lo script dello sprite della lampada R contiene una prima parte con la sequenza dei comandi che manda tre messaggi in successione per 10 volte cosi che le tre lampade si accendano e si spengano una dopo l'altra per 10 volte (un minimo di ritardo viene introdotto per non produrre effetti strani dovuti ai tempi di interpretazione dello script):

Invia a tutti R, (R è il messaggio)    - attendi 0,05s

invia a tutti S,                                  - attendi 0,05s

invia a tutti T                                   - attendi 0,05s

e poi una seconda parte con i segmenti di script che elaborano i messaggi inviati a tutti, così che lo sprite di R, quando riceve il messaggio lo elabora con l'istruzione quando ricevo ripetuta per ciascuno dei messaggio inviati

L'istruzione di controllo "quando ricevo (messaggio)" attiva la sequenza delle istruzioni che seguono solo nel caso che venga riconosciuto il mesaggio atteso; se il messaggio inviato è "R" allora si attiva solo il segmento "quando ricevo R" mentre gli altri due non vengono eseguiti.

se lo sprite riceve R passa al costume LampROn che è la lampada R accesa

se lo sprite riceve S oppure riceve T passa al costume LampROff che è la lampada spenta

analogamente si scrivono gli script degli altri due sprite che devono avere solo l'elaborazione del messaggio (i quando ricevo) e non la sequenza dei comandi (che, ripeto, devono risiedere in un solo posto).

Come esercizio di applicazione propongo:

- pulsante: accendere una lampadina solo con pressione di un tasto, quando si rilascia, la lampadina si spegne (comando monostabile)

- interruttore: accendere la lampadina con un tasto e spegnerla premendo un altro tasto (comando bistabile)

- commutatore: accendere la lampadina con un tasto e spegnerla con lo stesso tasto scambiando i valori ogni volta ,(in inglese: toggle switch)

- fare lampeggiare una lampadina o due lampadine che si alternano (le due lampadine corrispondono a due sprite)

- disporre in tondo tre o più lampadine che accese, una alla volta, danno l'impressione del moto rotatorio.

- colorare tre sprite con i colori del semaforo e simularne il funzionamento

 

Il video già proposto all'inizio dell'articolo offre alcuni spunti.

 

Si può proseguire con: Lampadine ... soluzioni    &     soluzioni 2