Reacciona!

Com estàs de reflexos? Comprovem-ho fent un joc … o un test psicotècnic:
Quan s'encengui el LED, prem el botó el més ràpid possible per apagar-lo. A la consola de l'entorn de programació es mostrarà el teu temps de reacció.

Funcionament del programa

  • Un cop iniciada l'execució, el LED s'encendrà després d'un temps aleatori (per evitar la predicció).
  • En encendre's el LED, s'iniciarà un temporitzador i el programa quedarà a l'espera que es premi el botó.
  • En prémer el botó s'apagarà el LED, s'aturarà el temporitzador, i es calcularà i es mostrarà el temps de reacció.


Anem per parts


L'encesa del LED

Un cop iniciada l'execució, el LED s'ha d'encendre després d'un temps aleatori (per evitar la predicció):

Un cop encès el LED, el programa ha de quedar en standby fins que es premi el botó.
Quan això passi, s'apagarà el LED:

Per mantenir un programa en standby utilitzarem un bucle  mientras  buit, que manté l'execució dins d'aquest bucle mentre es compleixi la condició definida (botó no premut).

El temporitzador

Pensem:
En el nostre programa, en quin moment s'ha de posar en marxa el temporitzador? En quin moment s'ha d'aturar?
Com podem mostrar a la consola el temps de reacció?



Cal tenir present afegir un missatge inicial d'obertura del port sèrie:



Necessites ajuda per construir el programa?

Desenvolupem-ho


Indicador visual de velocitat de reacció

Donat que la mitjana de velocitat visual és 215 ms, podem comparar el nostre temps de reacció amb aquest temps de referència, definint-lo com valor d'una variable. El valor d'aquesta variable s'haurà d'establir a l'inici del programa:



Un cop calculat el temps de reacció, es tracta de comparar-lo amb el temps de referència i definir una acció o altra segons si el temps de reacció ha estat major o menor que el temps de referència. Per exemple, que el missatge a mostrar a la consola sigui diferent en cada cas:

Recordeu: L'ús de funcions permet escurçar el codi i desenvolupar-lo més còmodament en deixar "aparcats" els conjunts d'instruccions que ja s'ha comprovat que funcionen.

Control de dificultat

Es tracta que en iniciar-se el programa el jugador pugui escollir el nivell de dificultat, establint el temps de referència segons es premi un o altre botó:



Necessites ajuda per construir el programa?



El bucle  mientras  manté l'execució en standby fins que es premi un dels dos botons.
Aquest nou comportament s'ha desenvolupat en una nova funció: