Борьба с энергосберегающими лампами.
- Войдите на сайт для отправки комментариев
Чт, 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-есть сигнал.
Подключен ко второму пину.