Не могу понять что я написал!
- Войдите на сайт для отправки комментариев
Пт, 28/02/2020 - 20:27
Здравствуйте. Химичил с аналоговыми кнопками и вот что нахимичил(Ардуино при этом ни как не реагирует ни на кнопки ни на пресутствие реле!):
#define PIN_RELAYONE 3 #define PIN_RELAYTWO 4 #define PIN_RELAYTREE 5 #define PIN_RELAYFOR 6 #define PIN_DIODONE 7 #define PIN_DIODTWO 8 #define PIN_DIODTREE 9 #define PIN_DIODFOR 10 #define PIN_DIODFIVE 11 #define PIN_DIODSIX 12 int count_1 = 0; int button_old_1 = 1; int count_2 = 0; int button_old_2 = 1; int count_3 = 0; int button_old_3 = 1; int count_4 = 0; int button_old_4 = 1; int state_1 = 0; int state_2 = 0; int state_3 = 0; void setup() { Serial.begin(9600); pinMode(PIN_RELAYONE, OUTPUT); pinMode(PIN_RELAYTWO, OUTPUT); pinMode(PIN_RELAYTREE, OUTPUT); pinMode(PIN_RELAYFOR, OUTPUT); digitalWrite(PIN_RELAYONE, HIGH); digitalWrite(PIN_RELAYTWO, HIGH); digitalWrite(PIN_RELAYTREE, HIGH); digitalWrite(PIN_RELAYFOR, HIGH); digitalWrite(PIN_DIODONE, LOW); digitalWrite(PIN_DIODTWO, LOW); digitalWrite(PIN_DIODTREE, LOW); digitalWrite(PIN_DIODFOR, LOW); digitalWrite(PIN_DIODFIVE, LOW); digitalWrite(PIN_DIODSIX, LOW); int analogread = 1000; } void loop() { if ((analogRead(A1) < 300)&&(button_old_1==1)) { count_1 = count_1 + 1; if (count_1 == 1) { digitalWrite(PIN_DIODONE, HIGH); digitalWrite(PIN_RELAYONE, LOW); digitalWrite(PIN_RELAYTWO, LOW); digitalWrite(PIN_RELAYTREE, LOW); delay(2500); digitalWrite(PIN_RELAYTREE, HIGH); delay(2500); digitalWrite(PIN_RELAYTREE, LOW); state_1 = 1; state_2 = 1; } if (count_1 == 2) { digitalWrite(PIN_RELAYONE, HIGH); digitalWrite(PIN_RELAYTREE, HIGH); count_1 = 0; state_1 = 0; digitalWrite(PIN_DIODONE, LOW); } } button_old_1 = 1; delay(10); if ((analogRead(A2) < 300)&&(button_old_2==1)) { count_2 = count_2 + 1; if (count_2 == 1) { if (state_2 == 0) { digitalWrite(PIN_RELAYTWO, LOW); state_2 = 1; digitalWrite(PIN_DIODTWO, HIGH); } else if(state_2 == 1) { digitalWrite(PIN_RELAYTWO, HIGH); state_2 = 0; digitalWrite(PIN_DIODTWO, LOW); } } if (count_2 == 2) { if (state_2 == 0) { digitalWrite(PIN_RELAYTWO, LOW); state_2 = 1; digitalWrite(PIN_DIODTWO, HIGH); } else if(state_2 == 1) { digitalWrite(PIN_RELAYTWO, HIGH); state_2 = 0; digitalWrite(PIN_DIODTWO, LOW); } count_2 = 0; } } button_old_2 = 1; delay(10); if ((analogRead(A3) < 300)&&(button_old_3==1)) { count_3 = count_3 + 1; if (state_3 <= 4 && state_1 == 1) { state_3 = state_3 + 1; count_3 = 0; } else if (state_3 >= 4 && state_1 == 1) { state_3 = 4; count_3 = 0; } else { state_3 = 0; } } button_old_3 = 1; delay(10); if ((analogRead(A4) < 300)&&(button_old_4==1)) { count_4 = count_4 + 1; if (state_3 > 0 && state_1 == 1) { state_3 = state_3 - 1; count_4 = 0; } else if (state_3 < 0 && state_1 == 1) { state_3 = 0; count_4 = 0; } else { state_3 = 0; } } button_old_4 = 1; delay(10); if (state_3 == 1) { digitalWrite(PIN_DIODTREE, HIGH); digitalWrite(PIN_DIODFOR, LOW); digitalWrite(PIN_DIODFIVE, LOW); digitalWrite(PIN_DIODSIX, LOW); digitalWrite(PIN_RELAYTREE, LOW); delay(2500); digitalWrite(PIN_RELAYTREE, HIGH); delay(2500); digitalWrite(PIN_RELAYTREE, LOW); } else if (state_3 == 2) { digitalWrite(PIN_DIODTREE, HIGH); digitalWrite(PIN_DIODFOR, HIGH); digitalWrite(PIN_DIODFIVE, LOW); digitalWrite(PIN_DIODSIX, LOW); digitalWrite(PIN_RELAYTREE, LOW); delay(5000); digitalWrite(PIN_RELAYTREE, HIGH); delay(2500); digitalWrite(PIN_RELAYTREE, LOW); } else if (state_3 == 3) { digitalWrite(PIN_DIODTREE, HIGH); digitalWrite(PIN_DIODFOR, HIGH); digitalWrite(PIN_DIODFIVE, HIGH); digitalWrite(PIN_DIODSIX, LOW); digitalWrite(PIN_RELAYTREE, LOW); delay(7000); digitalWrite(PIN_RELAYTREE, HIGH); delay(2500); digitalWrite(PIN_RELAYTREE, LOW); } else if (state_3 == 4) { digitalWrite(PIN_DIODTREE, HIGH); digitalWrite(PIN_DIODFOR, HIGH); digitalWrite(PIN_DIODFIVE, HIGH); digitalWrite(PIN_DIODSIX, HIGH); digitalWrite(PIN_RELAYTREE, LOW); } else if (state_3 == 0) { digitalWrite(PIN_RELAYTREE, HIGH); digitalWrite(PIN_DIODFOR, LOW); digitalWrite(PIN_DIODFIVE, LOW); digitalWrite(PIN_DIODSIX, LOW); digitalWrite(PIN_DIODTREE, LOW); } if (state_1 == 0) { digitalWrite(PIN_RELAYTREE, HIGH); } }
Да-с, херню-с Вы, батенька, какую то написали. И даже без комментариев. Совсем херня-с.
Может нормальным языком (русским) расскажете, а чего хотели-то?
Видимо что то связанное с подсчетом нажатий. Но по моему ну грамотно использована функция подсчета. Не совсем пойму например к чему там int analogread? Опиши подробнее пж..
Кнопки подключены к а налоговым входам. Хочу иметь подсчет количества нажатии. И в связи с этим управлять реле и светодиодами.
В принципе, плевать куда полключены, важен алгоритм. Вы его четко себе представляете? Типа:
Я нажал на кнопку А
Счетчик увеличился на 1
Если счетчик превысил 7, то счетчик равен 1
.........
Если счетчик равен 1, то ....
Если счетчик равен 2, то ....
и т.д.
на аналоговом пине нажатие тактовой кнопки надо фиксировать её отжатием (через флаги), вопрос если кнопка отжата, как фиксируете её отжатие? схему клавиатуры в студию