Comuni Led utilizzati come sensori di luminosità

Ciao a tutti
Un ragazzo Olandese sul sito Instructables (http://www.instructables.com/id/4-x-4-x-4-interactive-led-cube/) mi ha spiegato e fornito il codice per utilizzare un comune led luminoso di qualsiasi colore, come sensore di luminosità, le applicazioni sono varie ad es cubi 4-5x5 di led etc, sul sito ce ne sono diversi.
Nel codice di esempio si posiziona un led sull' A0 (che funge da sensore) e uno sul pin 13

Questo post solamente per condividere con chi, come me, da niubbo non conosceva questa possibilità e magari per chiedere ai più esperti quale è il principio di funzionamento.

Vi passo il video e il codice, se volete quello per un cubo è nella pagina del cubo lincata sopra.

A presto

// LED come sensore di luce

int led = 13;
int basis = 0;
int sens = 0;
int x = 0;
int y = 0;
int totaal = 0;
int totaal1 = 0;

void setup() {
pinMode(led, OUTPUT);
}

void loop() { // here we do 50 readings to set the sensors
for(x =0; x < 50; x++) {
sens = analogRead(0);
totaal = totaal1 + sens; totaal1 = totaal;
}
sens = totaal/x; // divide the 50 readings by 50 again
totaal = 0;
totaal1 = 0;
basis = sens-20; // setting sensitivity - now it will react if the LED is 20 lower than the setting above
for(y=0;y<1000;y++){ // after every 1000 tests the program will reset the led to cope with changing light
for(x =0; x < 50; x++) { // 50 readings to see if the sensor is in the dark
sens = analogRead(0);
totaal = totaal1 + sens;
totaal1 = totaal;
delay(10); }
sens = totaal/x;
if (sens < basis) // testing is the led was in the dark
digitalWrite(led, HIGH); // turning the led in port 13 or on the board on if the sensor-led was 20 darker than now than in the setting
else
digitalWrite(led, LOW); // turning it of if not
totaal = 0;
totaal1 = 0;
delay(10); } }

è stato sperimentato qualche mese fa da qualche amico del forum ,grazie comunque verra buono di certo a qualcuno :slight_smile:

Per approfondimenti:
e' presente anche un articolo nel playground
http://www.arduino.cc/playground/Learning/LEDSensor

..addirittura i comuni led son stati utilizzati per implementare un sistema di riconoscimento ostacoli / di prossimità:

Bello, e funziona con due led qualsiasi???
Ho notato che i led del video sono collegati direttamente ai pin di arduino, questo non potrebbe danneggiare la scheda o rompere i led? nel senso, io ho sempre messo una resistenza quando collegavo un led.

Si usa un led ad alta luminosità bianco, si se lo accendi bruci l'ATmega quasi di sicuro.... ma te non devi accenderlo guarda per bene il codice postato in alto :slight_smile:

ieri sera ho provato e funziona con qualsiasi led, alta lum bianco, rosso 1,8 V e verde 2,6V - 20 ma

An forse mi son confuso ma mi pare di ricordare che avevano detto testandoli che il bianco è meno sordo alla luce ambiantale deglia altri poi non so :slight_smile:

Si gli effetti sono diversi, ma come risposta è vero. In ogni caso funziona uguale

Io attualmente in casa ho vari led gialli di quelli tradizionali (da piccolo avevo fatto il cielo per il presepio).
Vanno bene o no??? Sicuri che non ci devo mettere una resistenza????

No ti servono quelli con il cappuccio trasparente... cioè quelli ad alta luminosità....

come esempio, i led rossi non sono extra lum ma vanno bene.

http://www.robot-italy.com/product_info.php?products_id=440
http://www.robot-italy.com/product_info.php?products_id=421

ero io che avevo aperto una discussione 2 mesi fa :stuck_out_tongue:

i led rossi con case trasparente sono i piu' sensibili alla luce ambientale, i bianchi e blu avevo letto che erano i meno sensibili, io usavo i rossi per la luce solare e avevo messo un condensatore in parallelo al led per avere letture stabili

Ma cosa cambia tra un led ad alta luminosità e uno normale??
camba il materiale all'interno (giusto?), e quindi cambiano corrente e tensione necessari, ma se io attaccassi dei led normali otterrei semplicemete risultati minori, non funziona niente (magari non è in grado di notare la differenza di luce) oppure rischio di fare dei danni?

non capivo nemmeno io all'inizio

immaginate il led come una cella fotovoltaica, ad una data luminosita' ricevuta avrete ai capi del led una data tensione

prendi un tester, mettilo in tensione continua, metti i puntali sui 2 terminali del led e verifica la tensione letta nelle varie condizioni d'illuminazione, ti sara' tutto chiaro :wink:

La cosa che invece non ho capito è questa:
-nell'esempio riportato sopra da @pitusso

spiega chiaramente che il fenomeno si verifica sfruttato una proprietà fisica dei LED che è quella della capacitanza quando viene applicata una tensione positiva sul polo negativo e viceversa, capacitanza che viene scaricata con una velocità in rapporto alla luce che colpisce la giunzione successivamente, da cui l'esempio di collegare un led con i poli opposti e uno con i poli "normali".

Ma l'esempio che ho postato io non è così (e funziona), io li ho collegati normalmente, +sull' A0 - GND e l'altro +Pin13 e - sul GND
stiamo parlando di due cose diverse?

Ciao! Si stiamo parlando di due cose diverse. L'analisi della capacitanza con una porta digitale è un metodo. L'altro che è quello ottenuto nell'esempio che hai postato è semplicemente la misura della tensione prodotta dal LED se colpito da luce. Infatti, i LED proprio come i pannelli solari producono corrente. Di solito un LED 5mm colpito da sole diretto produce 1.2v variaible in rapporto ai colori. Dai un occhio a questo vecchio post: Gioblu.com is for sale | HugeDomains

Ciao gbm
Infatti, mi sembrava strano..
In ogni caso mi stupisco ugualmente in quanto ho provato a casa ieri sera illuminando il led solamente con la lampada al neon (quelle classica con la lente di ingrandimento) non ho misurato la tensione ma funziona benissimo come da video postato all'inizio, non è necessario il sole.

Scusate il piccolo OT.... ma non avete mai provato a farvi in casa una piccola celle fotovoltaica usando dei transistor tipo 2N3055 o 2N6055 gli si taglia il coperchio e tra Base e collettore se non sbaglio se esposti al sole producono una piccola tensione....

ma dai?! carina questa!!