/* Questo semplice sketch ci consente di pilotare un LED fornendogli un quantitativo di energia inversamente proporzionale alla luminosità ambientale. Pertanto in condizioni di buio assoluto la luminosità del LED sarà massima, viceversa il LED risulterà spento. Il fotoresistore fornisce ad Arduino un insieme di valori compresi tra 0 e 1023: in condizioni di buio assoluto il valore della resistenza è massimo (1023) mentre è 0 quando la luminosità è al suo valore massimo. Il LED è collegato a un'uscita PWM che fornisce un insieme di valori compresi fra 0 e 255. La costante di tipo float "convRate" ci permette di convertire il valore letto dal fotoresistore nel range del PWM: 1023x = 255, x = 255/1023 = 0,25 Siccome noi vogliamo pilotare il LED in modo che risulti più luminoso in condizioni di scarsa luminosità ambientale dobbiamo sottrarre il valore letto dal fotoresistore, convertito nel range PWM, a 255: ledPower = 255 - (valore_analogico_letto_dal_fotoresistore * 0.25) */ #include #define PHOTO_RESISTOR_PIN 5 #define LED_PWM_PIN 9 const float convertionRatio = 0.25; uint8_t ledPower = 0; void setup() { pinMode(LED_PWM_PIN, OUTPUT); pinMode(PHOTO_RESISTOR_PIN, INPUT); } void loop() { ledPower = 255 - (uint8_t)(analogRead(PHOTO_RESISTOR_PIN) * convertionRatio); analogWrite(LED_PWM_PIN, ledPower); }