int total = 0;
for (int i = 0; i < 10; i++) {
total = total + analogRead(sensorPin);
- delay(2); // Pausa per assestare il senstore
+ delay(2); // Pausa per assestare il sensore
}
return(total / 10); // Valore medio
+ /* Nota: i microcontroller non sono bravi a fare le divisioni,
+ sarebbe piu' efficiente ottenere 8 valori e fare uno shift dx. di 3 bit
+ total = total >> 3 ;
+Vedi: https://www.arduino.cc/en/Reference/Bitshift
+ */
}
--- /dev/null
+/* Flasher
+
+ Sequenza di lampeggi ad intervalli arbitrari
+ A ogni valore di intervallo viene fatto il toggle del PIN
+*/
+
+const int led = 13;
+
+unsigned long previousMillis = 0; // Ultimo aggiornamento
+unsigned int intervalli[] = {100, 100, 100, 100, 500, 500} ;
+unsigned int cur = 0 ;
+
+void setup() {
+ pinMode(led, OUTPUT);
+}
+
+void loop()
+{
+ if (millis() - previousMillis >= intervalli[cur]) {
+ previousMillis += intervalli[cur] ;
+ digitalWrite(led, !digitalRead(led));
+
+ if (cur < sizeof(intervalli) / sizeof(intervalli[0]) -1 ) {
+ cur++;
+ } else {
+ cur = 0;
+ }
+ }
+}
+++ /dev/null
-/*
- Blink v1
-
- Accensione e spegnimanto di un ledA utilizzando variabili
- per impostare la velocita' del lampeggio.
-
- */
-
-// Pin 13 ha un led collegato di default
-int ledA = 6;
-int ledB = 7;
-
-void setup() {
- // Inizializziamo il PIN 13 come OUTPUT
- pinMode(ledA, OUTPUT);
- pinMode(ledB, OUTPUT);
-}
-
-void loop() {
- // 1st step
- digitalWrite(ledA, HIGH);
- delay(150);
- digitalWrite(ledA, LOW);
- delay(50);
- digitalWrite(ledB, HIGH);
- delay(150);
- digitalWrite(ledB, LOW);
- delay(50);
-
- // 2st step
- digitalWrite(ledA, HIGH);
- delay(150);
- digitalWrite(ledA, LOW);
- delay(50);
-
-
- // 3st step
- delay(150);
- digitalWrite(ledA, LOW);
- digitalWrite(ledB, LOW);
- delay(50);
- digitalWrite(ledA, HIGH);
- digitalWrite(ledB, HIGH);
- delay(350);
- digitalWrite(ledA, LOW);
- digitalWrite(ledB, LOW);
- delay(50);
-
-
- // Reverse
- // 1st step
- digitalWrite(ledB, HIGH);
- delay(150);
- digitalWrite(ledB, LOW);
- delay(50);
- digitalWrite(ledA, HIGH);
- delay(150);
- digitalWrite(ledA, LOW);
- delay(50);
-
- // 2st step
- digitalWrite(ledB, HIGH);
- delay(150);
- digitalWrite(ledB, LOW);
- delay(50);
-
-
- // 3st step
- delay(150);
- digitalWrite(ledB, LOW);
- digitalWrite(ledA, LOW);
- delay(50);
- digitalWrite(ledB, HIGH);
- digitalWrite(ledA, HIGH);
- delay(350);
- digitalWrite(ledB, LOW);
- digitalWrite(ledA, LOW);
- delay(50);
-
-
-}
-
--- /dev/null
+/*
+ For Each Iteration
+
+ Il costrutto for each fa parte delle specifiche di C++11
+ abilitate di default nella Arduino IDE dalla versione 1.6.6.
+
+ Se state usando una versione piu' vecchia dell'IDE
+ il codice non compilera', se avete comunque le GCC >= 4.7
+ potete abilitare c++11 con i flag -std=c++11 :
+ https://stackoverflow.com/questions/16224746/how-to-use-c11-to-program-the-arduino
+*/
+
+byte valori[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+
+void setup()
+{
+ Serial.begin(9600);
+}
+
+void loop() {
+ for (int val: valori) {
+ Serial.println(val);
+ delay(100);
+ }
+}