Борьба с энергосберегающими лампами.
- Войдите на сайт для отправки комментариев
Чт, 27/10/2011 - 12:39
Написал вот такую програаму для управления роботом с ИК пульта .
Работает нормально.
Но при работе энергосберегающих ламп моторы не отключаются .
Импульсная засветка не дает программе перевести моторы в 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);
}
}
}
ИК датчик TSOP1736 (несущяя частота - 36КГц).
Лог1-нет сигнала , лог0-есть сигнал.
Подключен ко второму пину.