проблесковые маяки
- Войдите на сайт для отправки комментариев
Пнд, 02/05/2016 - 10:05
здравствуйте. помогите пожалуйста исправить ошибки в коде.
int regim=1; int flag=0; void setup() { pinMode(10,OUTPUT); pinMode(9,OUTPUT); } void loop() { if(digitalRead(14)==HIGH&&flag==0) { regim++; flag=1; if(regim>4) { regim=1; } } if(digitalRead(14)==LOW&&flag==1) { flag=0; } if(regim==1) { digitalWrite(9,HIGH); delay(40); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(40); digitalWrite(10,LOW); } if(regim==2) { digitalWrite(9,HIGH); delay(200); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(200); digitalWrite(10,LOW); } if(regim==3) { digitalWrite(9,HIGH); delay(40); digitalWrite(9,LOW); delay(40); digitalWrite(9,HIGH); delay(40); digitalWrite(9,LOW); digitalWrite(10,HIGH); delay(40); digitalWrite(10,LOW); delay(40); digitalWrite(10,HIGH); delay(40); digitalWrite(10,LOW) delay(40); } if(regim==4) { digitalWrite(9,HIGH); delay(40); digitalWrite(9,LOW); delay(40); digitalWrite(9,HIGH); delay(40); digitalWrite(9,LOW); delay(500); digitalWrite(10,HIGH); delay(40); digitalWrite(10,LOW); delay(40); digitalWrite(10,HIGH); delay(40); digitalWrite(10,LOW) delay(40); } }
Опишите пожалуйста как код должен работать и какова проблема?
а так с налета:
- вы читаете из 14 порта не проинициализировав его как вход
- внутри ифов я бы выделил скобками сравнения
- погасание между 57 и 60 строкой вы не заметите.
- вместо иф/режим я применил бы case.
-при подаче питания, ни чего не происходит
-первое нажатие кнопки. включается первый режим короткие одиночные вспышки ,длит. 40мс )
-второе нажатие,длинные одиночные вспышки длит. 200мс
-третье нажатие, двойные вспышки без паузы длит. 40мс
-четвертое нажатие, двойные вспышки с паузой длит.40мс
класс титановый велосипед для delay без delay().
дело в том, что я только начинаю осваивать все это и части кода взяты с разных источников
дело в том, что я только начинаю осваивать все это и части кода взяты с разных источников
просто заставь себя - прочитай и вникни в предложенную тему.
Например 14 строку можно заменить на
if(DigitalRead(14)&&!flag)
При описании мигания декларирования длительности вспышек недостаточно, необходимо декларировать и длительность паузы между ними.
в третьем режиме группы вспышек визуально слиплись: действие 59 строки Вы не заметите глазом.
флаги и режимы наверно можно убрать вообще: ждать первое нажатие играть первую группу и ловить второе нажатия, при поступлении нажатия - играть втрую группу и ловить нажатие...
однако нажатия будут отлавливаться только на завершении каждой группы тк Вы применяете delay. Вкуривайте титановый велосипед , предложенный выше.
сижу вкуриваю и понять не могу
inspiritus, если есть возможность написать начало кода до первого режима(не сочтите за наглость). напиши пожалуйста, а дальше я разберусь