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
==========
*/
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
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");
}
--- /dev/null
+/*
+ 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);
+ }
+}
--- /dev/null
+/*
+ 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);
+
+ }
+}
+
+
+
--- /dev/null
+/*
+ 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);
+ }
+}
+
+
+
+
+
-/* 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
// 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:
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++ ;
}
}
+