Вопрос по прерыванию
- Войдите на сайт для отправки комментариев
Втр, 24/09/2013 - 13:10
Привет всем , собрал устройства для управления ходовыми огнями на шесть входов вроде бы всё работает но есть одно но когда включаешь поворот ходовой огонь с нужной стороны гаснет и начинает мигать в месте с поворотом , а нужно чтобы он просто погас и когда поворот выключил он загорелся, нужен какой та таймер пока поворот мигает он сбрасывается, а когда его выключили таймер отработался и включил ходовой огонь.
Подскажите пожалуйста как это сделать чтобы пока подворотник мигает флаг не включался или как не будь ещё?
int LED_L1 = 5; int LED_L2 = 6; int LED_R1 = 11; int LED_R2 = 10; int PovorotL = 4; int PovorotR = 8; int Drive = 7; int Signal = 9; int Svet = 12; int Goborit = 13; int flag=1; int flag2=0; int flag3=1; int flag5=1; int value = 0; int value2 = 0; void setup() { pinMode(LED_L1, OUTPUT); pinMode(LED_L2, OUTPUT); pinMode(LED_R1, OUTPUT); pinMode(LED_R1, OUTPUT); pinMode(PovorotL, INPUT); pinMode(PovorotR, INPUT); ; pinMode(Drive, INPUT); pinMode(Signal, INPUT); pinMode(Svet, INPUT); pinMode(Goborit, INPUT); } void loop() { ///////////////// Включим драйв плавно зажигаем ходовые огни if(digitalRead(Drive)==HIGH&&flag2==0) { for(value = 0 ; value <= 255; value+=5) { analogWrite(LED_L1, value); analogWrite(LED_L2, value); analogWrite(LED_R1, value); analogWrite(LED_R2, value); delay(30); } flag2=1; } ////////////Выключим драйв плавно гасим ходовые огни if(digitalRead(Drive)==LOW&&flag2==1) { for(value = 255; value >=0; value-=5) { analogWrite(LED_L1, value); analogWrite(LED_L2, value); analogWrite(LED_R1, value); analogWrite(LED_R2, value); delay(30); } flag2=0; } ////////////Если включен драйв и включен левы поворот то гасим левы ходовой огонь if(digitalRead(Drive)==HIGH) { if(digitalRead(PovorotL)==HIGH&&flag==1) { for(value = 255; value >=0; value-=5) { analogWrite(LED_L1, value); analogWrite(LED_L2, value); delay(3); } flag=0; } } ////// Если включен драйв и выключен левы поворот то зажигаем левый ходовой огонь if(digitalRead(Drive)==HIGH) { if(digitalRead(PovorotL)==LOW&&flag==0) { for(value = 0 ; value <= 255; value+=5) { analogWrite(LED_L1, value); analogWrite(LED_L2, value); delay(30); } flag=1; } } /////////////////Если включен драйв и включен правый поворот то гасим правый ходовой огонь if(digitalRead(Drive)==HIGH) { if(digitalRead(PovorotR)==HIGH&&flag3==1) { for(value = 255; value >=0; value-=5) { analogWrite(LED_R1, value); analogWrite(LED_R2, value); delay(3); } flag3=0; } } //////Если включен драйв и выключен правый поворот то зажигаем правый ходовой огонь if(digitalRead(Drive)==HIGH) { if(digitalRead(PovorotR)==LOW&&flag3==0) { for(value = 0 ; value <= 255; value+=5) { analogWrite(LED_R1, value); analogWrite(LED_R2, value); delay(30); } flag3=1; } } }
http://arduino.ru/forum/programmirovanie/pomogite-s-simpletimer#comment-41203
Спасибо за подсказку maksim всё получилась