View difference between Paste ID: hRdcHTxX and iMcb7PsH
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
}