/* Demo per Grove Beginner Kit for Arduino Modulo: Grove - Light Sensor File: SensoreLuce.ino Rilevazione dell'intensita' della luce tramite un sensore ottico: se il valore rilevato supera 500, si accende il LED e viene emesso un suono di 1000 Hz. Modulo collegato al pin analogico A6 adalborgo@gmail.com (25-10-2020) = Nota = Il segnale emesso dal sensore di luce (fototransistor) è collegato ad un amplificatore, che oltre ad aumentare il segnale, genera anche un "rumore elettrico": per questo è opportuno usare qualche accorgimento per ridure il rumore almeno in parte. Per l'analisi del segnale può essere utile la rappresentazione grafica tramite il Plotter seriale dell'IDE Arduino. */ #define PIN_ANALOG A6 // Sensore di luce #define PIN_LED 4 // LED #define PIN_BUZZER 5 // Cicalino (buzzer) void setup() { Serial.begin(9600); pinMode(PIN_ANALOG, INPUT); // Pin impostato come ingresso analogico pinMode(PIN_LED, OUTPUT); // Pin impostato come uscita digitale pinMode(PIN_BUZZER, OUTPUT); // Pin impostato come uscita digitale Serial.println("Test del Grove - Light Sensor"); } void loop() { // Calcoliamo la media per ridurre il rumore int n = 100; // N° letture per la media int media = 0; long somma = 0; for (int i = 0; i < n; i++) { // Una lettura impiega circa 100 microsecondi int sensor_value = analogRead(PIN_ANALOG); Serial.println(sensor_value); somma += sensor_value; delay(10); // Pausa di 10 millisecondi } media = somma / n; // Calcolo della media // Mostra il valore Serial.println(media); if (media > 500) { // Accendi il LED e una nota di 1000 Hz digitalWrite(PIN_LED, HIGH); tone(PIN_BUZZER, 1000); // 1000 Hz } else { // Spegni il LED e disattiva il suono digitalWrite(PIN_LED, LOW); noTone(PIN_BUZZER); } delay(100); // Pausa in millisecondi }