]> git.piffa.net Git - sketchbook_andrea/blob - programming/structured_data_types/array_loop/array_loop.ino
Data type con funzione
[sketchbook_andrea] / programming / structured_data_types / array_loop / array_loop.ino
1 /* Knight Rider 2
2  
3  Array e uso dei cicli iterativi.
4  Gli array sono omogeni: possono contenere solo dati dello stesso tipo.
5  Per l'uso avanzato degli array puo' essere utile approfondire l'uso dei pointers
6  (in particolare per passare un array a una funzione).
7
8
9    Schema semplificato:
10    - http://lab.piffa.net/schemi/8_led_single_res_bb.png
11    - http://lab.piffa.net/schemi/8_led_single_res_schem.png
12  */
13
14 int pinArray[8] = {2, 3, 4, 5, 6, 7, 8, 9};
15 int timer = 100;
16
17 void setup() {
18   // we make all the declarations at once
19   for (int count = 0; count < 9; count++) {
20     pinMode(pinArray[count], OUTPUT);
21   }
22 }
23
24 void loop() {
25   for (int count = 0; count < 8; count++) { // 8 e' un numero magico
26     digitalWrite(pinArray[count], HIGH);
27     delay(timer);
28     digitalWrite(pinArray[count], LOW);
29     delay(timer);
30   }
31
32   // Ciclo inverso: dall'alto in basso
33   for (int count = 8; count >= 0; count--) {
34     digitalWrite(pinArray[count], HIGH);
35     delay(timer);
36     digitalWrite(pinArray[count], LOW);
37     delay(timer);
38   }
39 }
40
41 /* Domande:
42
43  1. Come posso fare per saltare un elemento del loop?
44  2. Come posso fare per uscire completamente dal loop?
45  3. 8 e' un numero magico: come posso evitarlo?
46
47 .
48 .
49 .
50 .
51 .
52 .
53 .
54 .
55 .
56 .
57 .
58 .
59 .
60 .
61 .
62 .
63 .
64 .
65 .
66 .
67 .
68 Soluzioni:
69  1. Utilizzare continue con un ciclo if, oppure eliminare un elemento dall'Array.
70  2. Utilizzare break
71  3. Utilizzare un variabile sarebbe gia' un inizio, ancora meglio estrarre il
72     valore tramite la funzione sizeof().
73 Links:
74 - http://www.tutorialspoint.com/cprogramming/c_continue_statement.htm
75 - https://www.arduino.cc/en/Reference/Sizeof
76 */
77
78