Problema HIGH LOW

ho fatto un progetto molto semplice con arduino… ho collegato un sensore di luminosità ad arduino, e un semplice led.

quando il sensore rileva una luce tra 520 e 540 fa accendere il led se la luce è diversa da questi parametri arduino fa spegnere il led.
Per fare quasto programma ho scritto il seguente codice:

#define SENSOR 0
#define LED 13
int val = 0;

void setup() {
pinMode(LED, OUTPUT);
}
void loop(){
val = analogRead(SENSOR);

if (( val > 520 ) && ( val < 540 )) {
digitalWrite(LED, HIGH );
}
else{
digitalWrite(LED, LOW);
}
}

adesso mi sono posto l’idea di fare il contrario, il led sia sempre spento, e quando l’intensità luminosa cambia il led si accende.
Ed ho scritto il seguente codice:

#define SENSOR 0
#define LED 13
int val = 0;

void setup() {
pinMode(LED, OUTPUT);
}
void loop(){
val = analogRead(SENSOR);

if (( val > 520 ) && ( val < 540 )) {
digitalWrite(LED, LOW);
}
else{
digitalWrite(LED, HIGH);
}
}

L’unico problema è che la luce rimane sempre accesa, e cambia di pochissimo la sua intensità.

com’è possibile??

cmq ho un altro problema ho il mio serial monitor che scrive i dati che riceve in orizzontale invece che in verticale

se avete bisogno di altre informazioni chiede pure!!

Grazie a tutti in anticipo :smiley:

per il serial monitor usa Serial.println(); così scrive una riga nuova ogni volta.. per il sensore hai provato a vedere se i valori cambiano o sono fissi?

prova a replicare la lettura su seriale e vedi il valore se cambia

garinus: per il serial monitor usa Serial.println(); così scrive una riga nuova ogni volta.. per il sensore hai provato a vedere se i valori cambiano o sono fissi?

prova a replicare la lettura su seriale e vedi il valore se cambia

Cosa intendi per valori fissi?? comunque su seriale continua ad oscillare sempre tra 520 e 540.

2 cose: * Come hai collegato il sensore di luminosità e che tipo di sensore é? * fai il range di accensione/ spegnimento un pó piú ampio. 20 su una gamma di 1024 é pochissimo. Incomincia con 200 e poi diminuisci. Ciao Uwe

uwefed: 2 cose: * Come hai collegato il sensore di luminosità e che tipo di sensore é? * fai il range di accensione/ spegnimento un pó piú ampio. 20 su una gamma di 1024 é pochissimo. Incomincia con 200 e poi diminuisci. Ciao Uwe

-il tipo non lo so di preciso... te lo descrivo: e' molto simile ad un led ma ha la testa piatta con una specie di serpentina.(se vuoi ti posto una foto)

il sensore l'ho collegato da una estremità con l' input analogico A0 ed una resistenza da 10k ohm collegata a gnd. l'altra estremità all'alimentazione da 5V.

il led l'ho attaccato semplicemente nel pin 13 e gnd.

-cos'è il range?? non capisco...

Un range è un intervallo. Nel tuo caso un intervallo (o "finestra") di valori buoni di 20 punti su 1024 è poco perché è circa 1/50 dei valori possibili, e forse la lettura si perde nelle approssimazioni del uC. Il Led sul pin 13 lo devi cmq collegare con una resistenza: il pin 13 ha una resistenza propria per il led INTEGRATO, non per il canale.

Il sensore credo tu l'abbia collegato male. Non me ne intendo molto (aspetto conferme) ma credo tu debba seguire uno schema tipo questo: http://www.libelium.com/squidbee/index.php?title=Adding_a_light_sensor

leo72: Un range è un intervallo. Nel tuo caso un intervallo (o "finestra") di valori buoni di 20 punti su 1024 è poco perché è circa 1/50 dei valori possibili, e forse la lettura si perde nelle approssimazioni del uC. Il Led sul pin 13 lo devi cmq collegare con una resistenza: il pin 13 ha una resistenza propria per il led INTEGRATO, non per il canale.

Il sensore credo tu l'abbia collegato male. Non me ne intendo molto (aspetto conferme) ma credo tu debba seguire uno schema tipo questo: http://www.libelium.com/squidbee/index.php?title=Adding_a_light_sensor

Perfetto il sensore è uguale a quello che hai postato tu!!

Ho capito cos'è il range proverò a mettere un range più grande, e metterò anche una resistenza al led.

anche se mi è strano che nel primo caso funziona tutto e nella seconda non funziona :(

Fatto sta che adesso proverò e poi ti farò sapere

Grazie