# Série 02, activité 2.4 "Les sauts d'humeur du rouge" # variables for state var state[4] = [0,1,0,0] var new_state[4] = [0,1,0,0] var nCompte = 0 # Compte le nombre de fois que le bouton "avance" a été appuyé. var anRouge[5] = 0, 32, 0, 8, 32 # noir, rouge, noir, moyen, rouge var nEtat = 3 # Indique la lumière d'état allumée var anEtat[5] = 1, 3, 2, 0, 1 # Suite des états pour tourner en rond # reset outputs call sound.system(-1) call leds.top(0,0,0) call leds.bottom.left(0,0,0) call leds.bottom.right(0,0,0) call leds.circle(0,0,0,0,0,0,0,0) # subroutine to display the current state sub display_state call leds.circle(0,state[1]*32,0,state[3]*32,0,state[2]*32,0,state[0]*32) onevent buttons when button.center == 1 do # Reset dans l'état de départ. new_state[0] = 0 new_state[1] = 1 new_state[2] = 0 new_state[3] = 0 call leds.top(0,0,0) nCompte = 0 nEtat = 3 end when button.forward == 1 do # Les lumières d'états "tournent en rond". nEtat = nEtat + 1 if nEtat >= 4 then # La variable nEtat boucle de 0 à 3 nEtat = 0 end new_state[anEtat[nEtat + 0]] = 0 # éteint la lumière d'état new_state[anEtat[nEtat + 1]] = 1 # allume la lumière d'état suivante # Change l'intensité du rouge en fonction de la valeur de nCompte nCompte = nCompte + 1 if nCompte >= 5 then # La variable nCompte boucle de 0 à 4 nCompte = 0 end call leds.top(anRouge[nCompte],0,0) end # when button.forward == 1 do call math.copy(state, new_state) callsub display_state