#define DELAY 6000 #define N 100 float I[4] = {0., 0., 0., 0.}; int onLed; float intensity(int led, int pin) { // esegue N misurazioni di intensita' luminosa sul pin indicato // e ne restituisce la media, accendendo il led indicato float S = 0.; // spegne tutti i LED for (int i = 0; i < 4; i++) { digitalWrite(i*2+6, LOW); } // accende il LED led digitalWrite(led*2+6, HIGH); // esegue la misura for (int i = 0 ; i < N; i++) { S += analogRead(pin); } return S/N; } void setup() { onLed = 0; // attiva la comunicazione USB Serial.begin(9600); // definisce i pin sui quali sono connessi i LED pinMode(12,OUTPUT); pinMode(10,OUTPUT); pinMode(8,OUTPUT); pinMode(6,OUTPUT); Serial.println("LED\tI1\tI2\tI3\I0"); } void loop() { // accende il LED onLed e misura l'intensita' sui 4 // sensori for (int i = 0; i < 4; i++) { I[i] = intensity(6 + 2*onLed, i); } // stampa le intensita' misurate Serial.print(onLed); Serial.print ("\t"); for (int i = 0; i < 4; i++) { // per ciascun sensore stampo l'intensita' misurata senza filtro // meno quella con filtro Serial.print(I[N-1] - I[i]); Serial.print("\t"); } Serial.println(""); // introduce un ritardo e cambia led onLed++; if (onLed == 4) { onLed = 0; } }