Ciao a tutti!
Vi chiedo assistenza per un programma che sto scrivendo per comandare accensione/spegnimento e regolare la luminosità di un led attraverso un sensore ad ultrasuoni. Passando la mano sopra al sensore il led dovrebbe accendersi, ripassandola si spegne...ma tenendola sopra..alzandola dovrebbe aumentare la luminosità..
Per accendersi si accende facilmente..ma per regolare la luminosità mi da problemi...cosa sbaglio?
#define trig 8
#define echo 7
#define led 13
int distanza=0;
int tempo=0;
int stato=0;
int temp=0;
int pwm=64;
void setup(){
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
pinMode(led,OUTPUT);
Serial.begin(9600);
}
void loop(){
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
tempo=pulseIn(echo,HIGH);
distanza=tempo/58;
Serial.println(distanza);
if((distanza<30)&&(distanza!=0)&&(stato!=2)){
if(stato==0){
analogWrite(led,64);
stato=stato+1;
}
else{
temp=distanza;
stato=stato+1;
}
}
else{
if(stato==2){
if((distanza>=temp)&&(distanza<50)){
do{
delay(50);
pwm=pwm+10;
analogWrite(led,pwm);
} while (pwm<255);
pwm=64;
delay(1000);
stato=1;
}
else{
if(distanza>=50){
analogWrite(led,0);
stato=0;
}
}
}
}
}