Fotocellula con due diodo led IR per accendere un led

ciao a tutti
scusatemi per il disturbo .
ho usato 2 led ir per rilevare gli ostacoli , allora io vorrei collegare questo 2 led sulle parete della mia stanza che quando qulcuno entra mi accende una lamapdina e quando esce mi spegne la lampadina, vorrei fare un modo mi memorizza una valore HIGH quando qualcuno entra e mi accende la lampada , e quando quella persona esce mi converte il valore HIGH in LOW.
solo che è importante anke la distanza perchè voglio che il mio sensore riesce a leggere fino a 130cm .

non lo so se puo funzionare con questo sensore.
spero che mi sono spiegato bene
il programma è questo :

#define irEmitter 13 // polo positivo emettitore - positive emitter pin
#define irReceiverN 12 // polo negativo ricevitore - negative receiver pin
int Ledvar = 2; // variabile del led
int soglia = 1000;
long ambient = 0;
long emission = 0;
boolean ledstatus = false; //variabile dell'if
long distance = 0;
long setDistance = 0;
long lightTime = 0;
int currentInit = 0;
//// Valori di setup - setup&tune values ////
long gain = 4; //gain crescita valore distanza
long maxRangeSetDistanceValue = 666666; //valore setDistance range massimo
long maxRange = 2000; //distanza range massimo in mm
int startDriftDistance = 15; //valore distanza inizio drift distanza
////////////////////////////////////////////

void setup() {
Serial.begin(9600);
}

void getDistance() {
if(currentInit == 0){if(digitalRead(irReceiverN) == LOW){ ambientLightCheck();}}
if(currentInit == 1){if(digitalRead(irReceiverN) == LOW){ reflectionLightCheck();}}
}

void ambientLightCheck() {
ambient = micros() - lightTime;
init(1);
}

void reflectionLightCheck() {
emission = micros() - lightTime;
distance = emission * (ambient / (ambient - emission));
setDistance = distance;
distance = map(distance, 0, maxRangeSetDistanceValue, 0, maxRange);
if(distance <= 0) distance = 0;
if(distance > startDriftDistance) distance = sqrt(distance) * gain;
Serial.println(distance);
emission = 0;
ambient = 0;
init(0);
}

void init(int emitter) {
if(emitter == 0)digitalWrite(irEmitter, LOW);
if(emitter == 1)digitalWrite(irEmitter, HIGH);
lightTime = micros();
pinMode(irReceiverN, OUTPUT);
digitalWrite(irReceiverN, HIGH); //carico ricevitore di induttanza
pinMode(irReceiverN, INPUT);
digitalWrite(irReceiverN, LOW);
if(emitter == 1) currentInit = 1;
if(emitter == 0) currentInit = 0;
}

void loop() {

getDistance();
if (distance > soglia & ledstatus == false )
ledstatus = true;
else if (distance > soglia & ledstatus == true )
ledstatus = false;

if (ledstatus == true)
digitalWrite(Ledvar, HIGH);
else
digitalWrite(Ledvar, LOW);

}

è normale che non si accende il mio led????

grazie

ti avevo detto di modificare int soglia = 1000;
con int soglia = 70;
prova :wink:

Madwriter:
ti avevo detto di modificare int soglia = 1000;
con int soglia = 70;
prova :wink:

grazie
ma il led devo attacare a pin digital 2 giusto , ??
ma solo devo cambiare la soglia e posso cambiare anke la distance???

la distance è quella letta quindi non puoi cambiarla, puoi cambiare la soglia a cui far scattare il led tipo 20/30/40 etc
prova con un valore molto basso se rilevi che è troppo sensibile sali ok?
si il led va al pin 2!

Madwriter:
la distance è quella letta quindi non puoi cambiarla, puoi cambiare la soglia a cui far scattare il led tipo 20/30/40 etc
prova con un valore molto basso se rilevi che è troppo sensibile sali ok?
si il led va al pin 2!

sei un genio , grazie mille per aiuto , adesso si accende il led , solo la luce è molto debole, cmq si accende e si spegneee grazie per i consigli e aiuto , allora buone vacanze ,

ok ora prova con qualche resistenza sui led dovrebbe intesificare la potenza del raggio parti anche qui da volori molto bassi come ti avevo anticipato qui dovrai fare delle prove,cambi i valori delle resistenze e controlli sia vedendo a che distanza arriva sia con la fotocamera quanto è intenso il led inoltre procurati un tubicino e metti i led al'linterno in modo tale da renderlo più direzionale.
Buon divertimento,tranquillo il forum ti aiuterà al posto mio :wink:

ciao a tutti

avevo un problema con il codice che ho scritto sopra il mio led si accende e si spegne automaticamente , qualcuno che può aiutare per favore??

grazie