]> git.piffa.net Git - sketchbook_andrea/commitdiff
for loop
authorAndrea Manni <andrea@piffa.net>
Mon, 30 Mar 2015 10:54:50 +0000 (12:54 +0200)
committerAndrea Manni <andrea@piffa.net>
Mon, 30 Mar 2015 10:54:50 +0000 (12:54 +0200)
README
basic/buttons/button_state_3/button_state_3.ino
programming/loops/loop_3_multi_led/loop_3_multi_led.ino [new file with mode: 0644]
programming/loops/loop_4_multi_led_array/loop_4_multi_led_array.ino [new file with mode: 0644]
programming/loops/loop_5_multi_led_random/loop_5_multi_led_random.ino [new file with mode: 0644]
programming/loops/loop_match_2_while_loop/loop_match_2_while_loop.ino

diff --git a/README b/README
index e43243218d347405a9e69ffd42eacbad8f79a731..6601373eb79bc1739d4636cb74009ec52ffc1486 100644 (file)
--- a/README
+++ b/README
@@ -108,6 +108,12 @@ basic/pwm/pwm_3_fade_reverser/pwm_3_fade_reverser.ino
 basic/pwm/pwm_4_analog_input/pwm_4_analog_input.ino
 
 
+For loop
+==========
+
+sketchbook_andrea/programming/loops/
+Random e interruzione del flusso del programma tramite if
+
 Status
 ==========
 
index 83b274f17b45fd68deedde388f5cefba211482cb..7eee7e4a1df9a87ab3844038f2c03defbf23c130 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 int switchPin = 2;              // switch connesso al pin 2
+                                // Nota: le prossime due variabili sono 
+                                // solo "dichiarate" e non "definite"
 int statoAttuale;               // Variabile per leggere lo stato del bottone
 int ultimoStato;                // Variabile per registrare l'ultimo stato del bottone
 
@@ -19,8 +21,9 @@ void setup() {
 
 void loop(){
   statoAttuale = digitalRead(switchPin);      // Legge lo stato del bottone e lo resistra in val
-   delay(20)                                // riduce l'effetto bounce
-  if (statoAttuale != ultimoStato) {          // lo stato del bottone e' cambiato
+   delay(20);                                // riduce l'effetto bounce
+  if (statoAttuale != ultimoStato) { 
+      // verifica due condizioni che devono realizzarsi contemporaneamente
     if (statoAttuale == HIGH) {               // il bottone e' stato premuto
       Serial.println("Bottone premuto");
     } 
diff --git a/programming/loops/loop_3_multi_led/loop_3_multi_led.ino b/programming/loops/loop_3_multi_led/loop_3_multi_led.ino
new file mode 100644 (file)
index 0000000..e736eb0
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+  For Loop Iteration
+ Demonstrates the use of a for() loop.
+ Lights multiple LEDs in sequence, then in reverse.
+ The circuit:
+ * LEDs from pins 2 through 9 to ground
+ Schemi:
+ - http://lab.piffa.net/schemi/8_led_single_res_bb.png
+ - http://lab.piffa.net/schemi/8_led_single_res_schem.png
+ http://www.arduino.cc/en/Tutorial/ForLoop
+ */
+
+int timer = 100;           // The higher the number, the slower the timing.
+
+void setup() {
+  // use a for loop to initialize each pin as an output:
+  for (int thisPin = 2; thisPin <= 9; thisPin++)  {
+    pinMode(thisPin, OUTPUT);      
+  }
+}
+
+void loop() {
+  // loop from the lowest pin to the highest:
+  for (int thisPin = 2; thisPin <= 9; thisPin++) {
+    // turn the pin on:
+    digitalWrite(thisPin, HIGH);  
+    delay(timer);                  
+    // turn the pin off:
+    digitalWrite(thisPin, LOW);    
+  }
+
+  // loop from the highest pin to the lowest:
+  for (int thisPin = 9; thisPin >= 2; thisPin--) {
+    // turn the pin on:
+    digitalWrite(thisPin, HIGH);
+    delay(timer);
+    // turn the pin off:
+    digitalWrite(thisPin, LOW);
+  }
+}
diff --git a/programming/loops/loop_4_multi_led_array/loop_4_multi_led_array.ino b/programming/loops/loop_4_multi_led_array/loop_4_multi_led_array.ino
new file mode 100644 (file)
index 0000000..3b5ddef
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+  For Loop Iteration
+ Demonstrates the use of a for() loop.
+ Lights multiple LEDs in sequence, then in reverse.
+ The circuit:
+ * LEDs from pins 2 through 9 to ground
+ Schemi:
+ - http://lab.piffa.net/schemi/8_led_single_res_bb.png
+ - http://lab.piffa.net/schemi/8_led_single_res_schem.png
+ http://www.arduino.cc/en/Tutorial/ForLoop
+ */
+
+byte ledPins[8] = {  // Domanda: cosa succede se uso int?
+  2,3,4,5,6,7,8,9} 
+; //Array
+int timer = 100;           // Pausa per far brillare i LED
+
+void setup() {
+  Serial.begin(9600);
+  // use a for loop to initialize each pin as an output:
+  for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++)  {
+    pinMode(ledPins[thisPin], OUTPUT);
+    Serial.print("Inizializzato pin n. ");
+    Serial.println(  thisPin);
+  }
+
+  Serial.print("Dimesione array: ");
+  Serial.println(sizeof(ledPins));
+}
+
+void loop() {
+  // loop from the lowest pin to the highest:
+  for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) {
+    Serial.print("Accensione pin n. ");
+    Serial.println(thisPin);
+    // turn the pin on:
+    digitalWrite(ledPins[thisPin], HIGH);  
+    delay(timer);                  
+    // turn the pin off:
+    digitalWrite(ledPins[thisPin], LOW);    
+    // Debug
+
+  }
+
+  // loop from the highest pin to the lowest:
+  for (int thisPin = sizeof(ledPins) -1 ; thisPin > 0; thisPin--) {
+    Serial.print("Accensione pin n. "); // Gli array sono indicizzati da 0
+    Serial.println(thisPin);
+    // ><<turn the pin on:
+    digitalWrite(ledPins[thisPin], HIGH);
+    delay(timer);
+    // turn the pin off:
+    digitalWrite(ledPins[thisPin], LOW);
+
+  }
+}
+
+
+
diff --git a/programming/loops/loop_5_multi_led_random/loop_5_multi_led_random.ino b/programming/loops/loop_5_multi_led_random/loop_5_multi_led_random.ino
new file mode 100644 (file)
index 0000000..70cfc62
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+  Random Rainbow
+  
+  Generazione di un numero casuale per modificare il flusso del programma.
+  
+
+ The circuit:
+ * LEDs from pins 2 through 9 to ground
+ Schemi:
+ - http://lab.piffa.net/schemi/8_led_single_res_bb.png
+ - http://lab.piffa.net/schemi/8_led_single_res_schem.png
+ http://www.arduino.cc/en/Tutorial/ForLoop
+ */
+
+byte ledPins[8] = {  // Domanda: cosa succede se uso int?
+  2,3,4,5,6,7,8,9} 
+; //Array
+int timer = 100;           // Pausa per far brillare i LED
+int randNumber ;
+
+void setup() {
+  Serial.begin(9600);
+  // use a for loop to initialize each pin as an output:
+  for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++)  {
+    pinMode(ledPins[thisPin], OUTPUT);
+    Serial.print("Inizializzato pin n. ");
+    Serial.println(  thisPin);
+  }
+
+  Serial.print("Dimesione array: ");
+  Serial.println(sizeof(ledPins));
+  randomSeed(analogRead(0));  // Rilevazione di un valore esterno
+ // per scegliere il primo elemento del pseudorandom generators
+}
+
+void loop() {
+  // print a random number from 0 to 8
+  randNumber = random(8);
+  // turn the pin on:
+  Serial.print("Accensione pin  n. ");
+  Serial.println(randNumber);
+  digitalWrite(ledPins[randNumber], HIGH);  
+  delay(timer);                  
+  // turn the pin off:
+  digitalWrite(ledPins[randNumber], LOW);    
+
+  if (randNumber == 0) {
+    rainbow() ;
+  }
+}
+
+////////////////
+// Funzioni
+
+void rainbow() {
+  // Esegue un pattern con i led
+  
+  Serial.println(">>> Rainbow! <<<");
+  for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) {
+    // turn the pin on:
+    digitalWrite(ledPins[thisPin], HIGH);  
+    delay(timer / 2);                  
+    // turn the pin off:
+    digitalWrite(ledPins[thisPin], LOW);    
+    // Debug
+
+  }
+
+  // loop from the highest pin to the lowest:
+  for (int thisPin = sizeof(ledPins) -1 ; thisPin > 0; thisPin--) {
+    // ><<turn the pin on:
+    digitalWrite(ledPins[thisPin], HIGH);
+    delay(timer / 3);
+    // turn the pin off:
+    digitalWrite(ledPins[thisPin], LOW);
+  }
+}
+
+
+
+
+
index c2df5b457921aca590f9e74f3839f4d948509318..92d930d9d3d50a84e8d18f7092d9d61641f25777 100644 (file)
@@ -1,7 +1,9 @@
-/* Exercise 2, with a WHILE loop
+/* Exercise 2, with a WHILE loop and a Break statement:
+- http://arduino.cc/en/Reference/Break
+
  Test a random number agains a value: 
  a iteretive loop perform 255 runs to see if a random number in range 0-255
- is equal tothe target value of 200.
+ is equal to the target value set to 200.
  
  Light a led in case
  Light the other LED if a run of 255 test has gone
@@ -29,10 +31,7 @@ void setup() {
   // Serial stuff
   Serial.begin(9600);
   Serial.println("Initializing random sequence, please wait for results.");
-
-  // Random stuff
   randomSeed(analogRead(0)); // Random initializer
-
 }
 
 void loop() {  // put your main code here, to run repeatedly: 
@@ -42,20 +41,23 @@ void loop() {  // put your main code here, to run repeatedly:
 
   while (count < 255) {
     randomNumber = random(0,255); //Randoom value generated
+    Serial.print("|");
+    count++ ;  
+    delay(REST);
     if (randomNumber == TARGET) {  // When we catch the value
+      Serial.println();
       Serial.print("--> Match found! Counter was at: "); // serial message
       Serial.println(count);
       digitalWrite(GREEN, HIGH);
       delay(WAIT);
       count++ ;
+      break; // Interrompe il ciclo
     }
-    //Serial.println(count);
-    count++ ;  
-    delay(REST);
   }
 
-
+  Serial.println();
   Serial.println("Counter resetted.");   // serial staff
+  count = 0;
   digitalWrite(RED, HIGH);
   delay(WAIT);
   count++ ;
@@ -68,3 +70,4 @@ void loop() {  // put your main code here, to run repeatedly:
   }
 } 
 
+