SHOW:
|
|
- or go back to the newest paste.
1 | ...... | |
2 | unsigned int state = 0; | |
3 | unsigned int blinkTime = 333; | |
4 | unsigned long blinkStartTime; | |
5 | ......... | |
6 | ||
7 | void loop(){ | |
8 | if (digitalRead(selbutton) == HIGH){ | |
9 | ||
10 | // Per evitare il rimbalzo del pulsante e che la variabile venga incrementata in modo incontrollato | |
11 | while (digitalRead(selbutton) == HIGH) { | |
12 | delay(50); | |
13 | } | |
14 | ||
15 | /* Il simbolo % rappresenta l'operatore modulo, ovvero quell'operazione che restituisce il resto della divisione tra i due fattori. | |
16 | Il risultato che si ottiene è che ogni volta che premi il pulsante la variabile state incrementerà di 1 ma nel range definito dal modulo ovvero da 0 a 6 | |
17 | */ | |
18 | state = (state + 1) % 7; | |
19 | } | |
20 | ||
21 | switch(state){ | |
22 | case 0: | |
23 | blinkTime = 333; | |
24 | break; | |
25 | case 1: | |
26 | blinkTime = 166; | |
27 | break; | |
28 | ..... e cosi via | |
29 | } | |
30 | ||
31 | ||
32 | if(digitalRead(startbutton) == HIGH){ | |
33 | if(millis() - blinkStartTime > blinkTime) { | |
34 | blinkStartTime = millis(); | |
35 | // Inverto lo stato del LED (operatore di negazione "!" ) | |
36 | digitalWrite(LED, !digitalRead(LED)); | |
37 | } | |
38 | } | |
39 | else { | |
40 | digitalWrite(LED, LOW); | |
41 | } | |
42 | } |