Борьба с энергосберегающими лампами.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

 Написал вот такую програаму для управления роботом с ИК пульта .

Работает нормально.

Но при работе энергосберегающих ламп моторы не отключаются .

Импульсная засветка не дает программе перевести моторы в LOW.

Что можно сделать ?

 

int val=0;
 int val2=0;
 int val3=0;
 int val4=0;
 int val5=0;
 int  val6=0;
 int  val7=0;
 int val8=0;
 int val0=0;
 int val10=0;

void setup()

{
   pinMode(2,INPUT);
    pinMode(1,OUTPUT);
   pinMode(10,OUTPUT);
   pinMode(11,OUTPUT);
   pinMode(12,OUTPUT);
   pinMode(13,OUTPUT);
   pinMode(18,OUTPUT);
   
 
}
void loop()

{ 
 

 

 
   if(pulseIn(2,LOW)==0)
   {
    digitalWrite(12,LOW);
  digitalWrite(11,LOW);
  digitalWrite(10,LOW);
  digitalWrite(13,LOW);
  digitalWrite(18,LOW);
   }
   
 
 
 
 
   
val=pulseIn(2,LOW);
 val=(val/1000);
 
 if(val==2)
 {
 val2=pulseIn(2,LOW); 
 val3=pulseIn(2,LOW); 
 val4=pulseIn(2,LOW); 
 val5=pulseIn(2,LOW);
 val6=pulseIn(2,LOW);
  val7=pulseIn(2,LOW);
  val8=pulseIn(2,LOW);
  
 

 
 
 if((val2/1000)==0&&(val3/1000)==0&&(val4/1000)==0&&(val5/1000)==0&&
 (val6/1000)==0&&(val7/1000)==0&&(val8/1000)==0)
 {
 
   
 digitalWrite(18,HIGH);

  
 }
 
 
 if((val2/1000)==1&&(val3/1000)==0&&(val4/1000)==0&&(val5/1000)==0&&
 (val6/1000)==0&&(val7/1000)==0&&(val8/1000)==0)
 {
 
   
 digitalWrite(1,!digitalRead(1));
 delay(500);

  
 }
 
 
 
 
 
 
 if((val2/1000)==0&&(val3/1000)==0&&(val4/1000)==1&&(val5/1000)==0&&
 (val6/1000)==1&&(val7/1000)==1&&(val8/1000)==1)
 {
 
   
 digitalWrite(13,HIGH);//вперд
  digitalWrite(12,LOW);
  digitalWrite(11,LOW);
   digitalWrite(10,HIGH);
  
 
  
  
  
  
 }
 

  
 
 
 
 
 if((val2/1000)==0&&(val3/1000)==0&&(val4/1000)==1&&
 (val5/1000)==0&&(val6/1000)==1&&(val7/1000)==1&&(val8/1000)==0)
 {
 
  digitalWrite(13,HIGH);//лево
  digitalWrite(12,LOW);
  digitalWrite(11,HIGH);
   digitalWrite(10,LOW);

 }

 
 
 
 
 if((val2/1000)==1&&(val3/1000)==1&&(val4/1000)==0&&
 (val5/1000)==0&&(val6/1000)==1&&(val7/1000)==1&&(val8/1000)==0)
 {
 
  
  digitalWrite(13,LOW);//вправо
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);
   digitalWrite(10,HIGH);
  
 
 val10=1;
 
 }
 

 
 if((val2/1000)==1&&(val3/1000)==0&&(val4/1000)==1&&
 (val5/1000)==0&&(val6/1000)==1&&(val7/1000)==1&&(val8/1000)==1)
 {
 
 
   
  digitalWrite(13,LOW);//назад
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
   digitalWrite(10,LOW);
  
 }
  }
 

 
 
 

  
 
 }

 
  

 


 
  

 

 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

ИК датчик TSOP1736 (несущяя частота - 36КГц).

Лог1-нет сигнала , лог0-есть сигнал.

Подключен ко второму пину.