помогите реализовать новечку скейч
- Войдите на сайт для отправки комментариев
Сб, 11/11/2017 - 23:34
здраввствуйте помогите.
Когда брался за это думал смогу выглядело просто, после 2 суток руки опустились.
задача в том, при появления сигнала +5v на pin3 на pin4 появился сигнал +5v на 10 секунд, при повторном появлении сигнала на pin3 чтобы появился на pin5 5v на 15сек и так по кругу
5v=pin3 pin4=5v на 10 сек pin5=0 1 сигнал
5v=pin3 pin5=5v на 15 сек pin4=0 2 сигнал
Ну если очень по простому то пробуйте
#define pin3 3 #define pin4 4 #define pin5 5 bool regim; void setup(){ pinMode(pin3, INPUT); pinMode(pin4, OUTPUT); pinMode(pin5, OUTPUT); } void loop(){ if (digitalRead(pin3)== HIGH && regim == 0) { regim = 1; digitalWrite(pin4,HIGH); delay(10000); digitalWrite(pin4,LOW); } if (digitalRead(pin3)== HIGH && regim == 1) { regim = 0; digitalWrite(pin5,HIGH); delay(20000); digitalWrite(pin5,LOW); } }Задача поставлена не в полном объеме для нормальной реализации.
Как часто на pin3 появляется сигнал? Что должно происходить если сигнал появится в момент, когда включен pin4 и 10 сек еще не прошло - ничего не делать или включать pin5? Для pin5 аналогично - игнорировать и ждать 15 сек или включать pin4?
Сигнал не часто происходит, одновременно включать pin4 и pin5 нельзя, при подаче сигнала во время интервала в указанное промежуток времени можно произвести сигнал на pin5 по окончании времени 10 сек.
Пример: pin4 и pin5 как действие открыть закрыть, дверь закрывается по pin4 открывается по pin5 нажал во время открытия она открылась потом закрылась.
я пробовал по этому коду но он испорчен чемто наверно
int Levo = 3; int Pravo = 4; int ButPin = 7; int flag = 0; int regim = 0; void setup() { pinMode(Levo, OUTPUT); pinMode(Pravo, OUTPUT); } void loop() { if(digitalRead(ButPin) == HIGH && flag == 0) { regim ++; flag = 1; if(regim > 3) regim = 0; } } if(digitalRead(ButPin) == LOW && flag == 1) { flag = 0; } if(regim == 0) { digitalWrite(Levo, LOW); digitalWrite(Levo, LOW); } // РЕЖИМ 1: R if(regim == 1) { digitalWrite(Levo, HIGH); digitalWrite(Pravo, LOW); } // РЕЖИМ 2: G if(regim == 2) { digitalWrite(Levo, LOW); digitalWrite(Pravo, HIGH); } }я пробовал по этому коду но он испорчен чемто наверно
похоже , что это код от какой-то другой технической задачи, явно не от той, что Вы описали.
я пробовал по этому коду но он испорчен чемто наверно
Протух.
Приветствую! Кое-что получилось с русификацией дисплея. Теперь возник вопрос как убрать непонятные символы (которые раньше были символом-стрелочкой в конце каждого слова в меню). Заместо этих стрелочек теперь выводится буква "л".
дисплей lcd1306 128х64 в прошивке repetor.