rilevare intensita luminosa

ciao a tutti..Volevo segnalarvi il seguente codice:

[code]int FotoPin = 0;
int FotoValue;
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
 
void setup() { 
  Serial.begin(9600);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(7,OUTPUT);
}
 
void loop() {
  FotoValue = analogRead(FotoPin);
  Serial.println(FotoValue);
  if (FotoValue< 100) {
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    tone(7,200,100);
} else if (FotoValue< 300) {
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    tone(7,300,100);
} else if (FotoValue< 600) {
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    tone(7,500,100);}
else {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    
}
 delay(500);
}

[/code]
ho collegato sulla mia breadboard 3 led posti posti sui pin digitali 11,12,13 e un fotoresistore (70..100K ohm LDR VT90N2) sul pin analogico a0. Inoltre ho aggiunto una resistenza da 10k ohm tra il piedino del fotoresistore collegato al pin analogico e massa.I led si accendono al diminiure dell'intensita luminosa.Volevo chiedervi xke va messa quella resistenza da 10k e qual'è il valore massimo ricevuto dal fotoresistore.Vi ringrazio anticipatamente

edit by mod: usa gli appositi tag per includere il codice

Metti anche una resistenza in serie a ciascun led altrimenti rischi di bruciare i pin di Arduino.
Usa il tag CODE per inglobare il codice.
Puoi editare il tuo post premendo "modify". Poi selezioni il codice e premi il pulsantino # che si trova sopra le faccine.

Gli schemi di collegamento li trovi qui, scheda 1 --> http://arduino.cc/forum/index.php/topic,146152.0.html
Per i led: scheda 2.

PaoloP:
Metti anche una resistenza in serie a ciascun led altrimenti rischi di bruciare i pin di Arduino.
Usa il tag CODE per inglobare il codice.
Puoi editare il tuo post premendo "modify". Poi selezioni il codice e premi il pulsantino # che si trova sopra le faccine.

Gli schemi di collegamento li trovi qui, scheda 1 --> http://arduino.cc/forum/index.php/topic,146152.0.html
Per i led: scheda 2.

grazie per la risposta quindi per ogni led aggiungo una resistenza di 10k? Solo a scopo informativo come mai si bruciano i led ? So che i pin digitali mandano 0V oppure 5V. ti ringrazio anticipatamente

No, la resistenza la puoi mettere da 220ohm, meglio 330ohm.
Con 10K quasi non si accende.

Quando tu colleghi un qualsiasi utilizzatore ad un pin di arduino devi sempre fare attenzione a 2 cose: tensione e corrente.
La tensione di funzionamento dei sensori o delle board che colleghi deve essere di 5V, pari a qualle di arduino, mentre per quanto riguarda la corrente devi calcolarti la massima richiesta.
Un pin di Arduino può erogare una corrente massima di 40mA alla tensione di 5V. Però quello è il limite massimo, si consiglia sempre di non superare i 20mA.
Adesso se tu colleghi un led rosso tra un pin e GND (non farlo!!), quando metti il segnale HIGH crei un circuito. La corrente dal pin di Arduino, attraverso il led e si riversa su GND. La corrente non essendo limitata da nessuna resistenza (quella interna al led è piccolissima) è eccessiva e brucerà sia il led che il pin di Arduino. Puff!!

Per calcolare il valore della resistenza usa la legge di Ohm in questo modo: R = (Vard - Vled)/Imax
La Vard è quella di Arduino = 5V
Vled cambia in base al colore

Da wikipedia (LED - Wikipedia):
Tipologia LED tensione di giunzione Vf (volt)
Colore infrarosso 1,3
Colore rosso 1,8
Colore giallo 1,9
Colore verde 2,0
Colore arancio 2,0
Flash blu/bianco 3,0
Colore Blu 3,5 V
Colore Ultravioletto 4 ÷ 4,5 V

La Imax di norma è sui 10-15mA

Tipologia LED Assorbimento (mA)
LED basso consumo 3 - 10
LED normali 10 - 15
LED flash 20 - 40
LED di potenza 100 - 20000

Per un normale LED ROSSO avresti:
R = (Vard - Vled)/Imax
R = (5 - 1.8 )/0.015 = 213ohm che approssimi al valore commerciale (perche 213 non la vendo) di 220ohm.

Spero di non aver detto molte stupidate. :sweat_smile:

PaoloP:
No, la resistenza la puoi mettere da 220ohm, meglio 330ohm.
Con 10K quasi non si accende.

Quando tu colleghi un qualsiasi utilizzatore ad un pin di arduino devi sempre fare attenzione a 2 cose: tensione e corrente.
La tensione di funzionamento dei sensori o delle board che colleghi deve essere di 5V, pari a qualle di arduino, mentre per quanto riguarda la corrente devi calcolarti la massima richiesta.
Un pin di Arduino può erogare una corrente massima di 40mA alla tensione di 5V. Però quello è il limite massimo, si consiglia sempre di non superare i 20mA.
Adesso se tu colleghi un led rosso tra un pin e GND (non farlo!!), quando metti il segnale HIGH crei un circuito. La corrente dal pin di Arduino, attraverso il led e si riversa su GND. La corrente non essendo limitata da nessuna resistenza (quella interna al led è piccolissima) è eccessiva e brucerà sia il led che il pin di Arduino. Puff!!

Per calcolare il valore della resistenza usa la legge di Ohm in questo modo: R = (Vard - Vled)/Imax
La Vard è quella di Arduino = 5V
Vled cambia in base al colore

Da wikipedia (LED - Wikipedia):
Tipologia LED tensione di giunzione Vf (volt)
Colore infrarosso 1,3
Colore rosso 1,8
Colore giallo 1,9
Colore verde 2,0
Colore arancio 2,0
Flash blu/bianco 3,0
Colore Blu 3,5 V
Colore Ultravioletto 4 ÷ 4,5 V

La Imax di norma è sui 10-15mA

Tipologia LED Assorbimento (mA)
LED basso consumo 3 - 10
LED normali 10 - 15
LED flash 20 - 40
LED di potenza 100 - 20000

Per un normale LED ROSSO avresti:
R = (Vard - Vled)/Imax
R = (5 - 1.8)/0.015 = 213ohm che approssimi al valore commerciale (perche 213 non la vendo) di 220ohm.

Spero di non aver detto molte stupidate. :sweat_smile:

grazie per la spiegazione...cmq per gli altri del x esempio giallo e verde posso sempre usare la resistenza da 220 ohm?

Non è necessario quotare il messaggi immediatamente precedente.
Si vanno bene.

grazie paolo..un'ultima cosa volevo chiederti..per quanto riguarda il fotoresistore ho seguito lo schema del partitore di tensione..la resistenza che ho inserito va bene (10K ohm)?

Il datasheet da da 24K a 500K al buio. (http://www.farnell.com/datasheets/612931.pdf)
Dovresti fare i calcoli per controllare il range di funzionamento.

EDIT:
Con 10K hai a 24Kohm 1.47V, mentre al buio (500Kohm)appena 0.098V, la scala è troppo ridotta. Uno step ogni 0.005V.
Sarebbe meglio una resistenza da 6.8K: in questo modo avresti in piena luce con 24Kohm una tensione in uscita di 1.104 (usando l'AnalogReference(INTERNAL) sei quasi perfetto), mentre al buio scendi a 0.067. Ma con una scala di 1024 valori su 1.1V quindi uno step ogni 0.001V.

scusa ma non ho capito bene come funziona con i calcoli..posso dirti che ho provato a mettere il sensore al sole e il valore massimo che mi ha rilevato è 1007,mentre mettendolo al buio arriva anche a 5..come posso fare questi calcoli?ti ringrazio anticipatamente

Sei sicuro del modello di fotoresistore che hai?

I calcoli sono quelli del partitore resistivo --> http://www.mindreamz.net/it/blog/2012/partitore-di-tensione.html

Però se hai quei valori la resistenza va bene, copri un bell'intervallo.

EDIT: guarda questo sketch --> How to: ligth measurement with LDR? - #10 by madepablo - Development - Arduino Forum
Qui un bel tutorial --> Overview | Photocells | Adafruit Learning System

sisi..il fotoresistore che ho è 70..100K ohm LDR VT90N2..