Апгрейд скетча
- Войдите на сайт для отправки комментариев
Ср, 15/05/2019 - 13:18
Многоуважаемые жители форума, помогите модернизировать готовую рабочую программу. Необходимо переключить две кнопки к одному аналогову входу...
const int green=8; const int green1=7; const int green2=6; const int green3=5; const int red=13; const int red1=12; const int red2=11; const int red3=10; const int BUTTON=2; const int BUTTON1=3; boolean lastButton = LOW; boolean currentButton = LOW; int ledMode = 0; void setup() { pinMode (green, OUTPUT); pinMode (green1, OUTPUT); pinMode (green2, OUTPUT); pinMode (green3, OUTPUT); pinMode (red, OUTPUT); pinMode (red1, OUTPUT); pinMode (red2, OUTPUT); pinMode (red3, OUTPUT); pinMode (BUTTON, INPUT); pinMode (BUTTON1, INPUT); } void loop() { int c; for(;;) { if(digitalRead (BUTTON) == HIGH) { c=gg(BUTTON); setMode(c,green,green1,red,red1); } if(digitalRead (BUTTON1) == HIGH) { c=gg(BUTTON1); setMode(c,green2,green3,red2,red3); } } } int gg(int BUTTONX) { currentButton = debounce(lastButton,BUTTONX); if (lastButton == LOW && currentButton == HIGH) { ledMode++; } lastButton = currentButton; if (ledMode == 3) ledMode = 1; return(ledMode); } boolean debounce(boolean last,int BUTTONX) { boolean current = digitalRead(BUTTONX); if (last != current) { delay(5); current = digitalRead(BUTTONX); } return current; } void setMode(int mode,int svet,int svet1,int svet2,int svet3) { if (mode == 1) { digitalWrite(svet,LOW); digitalWrite(svet1,LOW); digitalWrite(svet2, HIGH); delay(1000); digitalWrite(svet3, HIGH); } else if (mode == 2) { digitalWrite(svet2,LOW); digitalWrite(svet3,LOW); digitalWrite(svet, HIGH); delay(1000); digitalWrite(svet1,HIGH); } }
вы хотите научится это делать самостоятельно или вам нужен просто готовый результат?
если научиться, то почитайте здесь
Хочу научиться самостоятельно, но и был бы не против, если бы доработали скетч под аналоговые кнопки :))
был бы не против, если бы доработали скетч под аналоговые кнопки :))
в платном разделе
Милости прошу туда :)
Несколько дней назад была аналогичная тема. Даже дежавю какое то словил. Там было достаточно советов, что бы всё сделать самому.
Вероятнее всего вы про эту тему
http://arduino.ru/forum/programmirovanie/nuzhna-pomoshch-so-sketchem-dve-knopki
Несколько дней назад была аналогичная тема. Даже дежавю какое то словил. Там было достаточно советов, что бы всё сделать самому.
Так во #2, дали верное направление, а лень, она дорого стоит.
Кто сказал что я ленюсь. Программу переделал и сейчас уже собираю схему для проверки. Я предпочитаю иметь несколько вариантов решения моей проблемы. На случай, если всё же мне не удастся это реализовать самому :)
А как назвать то, что не прочитали заголовки форума хотя бы за пару дней или не воспользововались поиском? По мне это как раз лень. В найденных темах можно найти множество мнений. Объясните, пожалуйста, почему я должен в очередной, энный, раз писать одно и то же?
Вот подпрограмма и дефайны под 5 аналоговых кнопок с примером использования. Пользуйтесь
Огромное вам спасибо!
Вот пакароче
Вот пакароче
Спасибо! И повеселее - сейчас у себя в программе поменяю.
Кстати эта подпрограмма для шилда LCD1602 с кнопками.
Кстати эта подпрограмма для шилда LCD1602 с кнопками.
Я знаю. Вот еще можно сократить
Если не сложно, можете немного пояснить эту часть
цикл for , если быть конкретнее
тоись, ты даже этого не понимаешь? тогда точно наданапица. мне.
Не понимаю значение i < 16
16 раз читаем analogRead(A0)
спомни математику, класс, примерна, пятый. Как найти среднее значение?
спомни математику, класс, примерна, пятый. Как найти среднее значение?
Точно, как сейчас помню: >>=4; )))))
тоись, ты даже этого не понимаешь? тогда точно наданапица. мне.
Ну и как с такими бросишь пить!)
у меня, канеш, процедура чтения кнопок шилда 1602 несколько посложнее, но давай пока с этой разберемся, пока я синячить не ушол
Ааа, всё, тупанул. Спасибо!
и так непонятно?
for
(uint8_t i = 0; i < 16; i++) buttonValue += analogRead(A0);
// читаем 16 рас
аналог:
Ааа, всё, тупанул. Спасибо!
Б-ть!
Если въехал чо к чему, теперь подумай, что будет, если кнопку отпустить в середине цикла?
Если въехал чо к чему, теперь подумай, что будет, если кнопку отпустить в середине цикла?
Эт значит, что у тебя реакция как у Шумахера, а то и покруче :)
Как там у Мерфи - если гадость может случится, то она случится. Так что только так и раз и на середине.
Кто-ниубдь, прошу! Объясните мне, почему светодиоды зараграются сами собой без нажатия на аналоговые кнопки.АААААААААААААААААА
Кто-ниубдь, прошу! Объясните мне, почему светодиоды зараграются сами собой без нажатия на аналоговые кнопки.АААААААААААААААААА
А строку 19 прочитать слабо? Чего Вы там просите сделать?
[quote=GOODZMКто-ниубдь, прошу! Объясните мне, почему светодиоды зараграются сами собой без нажатия на аналоговые кнопки
[/quote]
а вход А0 к питанию или к земле подтянул? - если нет, то и будут загораться
А вот эта строчка класссная...
Без вопросов на вопрос...ПРОШУУ ВАС!!
Схему собрал верно...Проблема в коде и моих руках
О! В сетапе определите начальное состояние выходов led.
Заливая этот скетч светодиоды не загараются без нажатия на кнопку ...В схеме ничего не менял.
А гасить светодиоды при BUTTON_NONE Пушкин будет?
И 23 строку удалите
А гасить светодиоды при BUTTON_NONE Пушкин будет?
И 23 строку удалите
23 строчку удалил, но куда вписать BUTTON_NONE ?
Кто-ниубдь, прошу! Объясните мне, почему светодиоды зараграются сами собой без нажатия на аналоговые кнопки.АААААААААААААААААА
Потомк, чтот у вас такая фигня написана, что выдает полное непонимание основ программирования Могу только порекомендовать поискать в сети что нибудь вроде "Основы программирование на С" или "С для чайникав".
Не спорю! Но я пытаюсь разобраться в этом. А вы, если видите ошибку, помогите, пожалуйста :)
Да там не ошибка, там все неправильно.
Не может быть всё, ибо часть кода взята со скетча человека, который писал выше!
Гля!!!
Изучайте си!!!
Только что попробовал ваш новый скетч. Светодиоды не зажигаются. Огромнейшая вам благодарность... Если не секрет, где ошибка в моём скетче ?
В том, что Вы не использовали подпрограмму, а опять читали аналоговый вход
Но в моем варианте покороче, а если подтянутся гуру, так и мою программу сократят
Если не секрет, где ошибка в моём скетче ?
строки 11, 19, 23. 36, 41
А вообще -вам верно сказаи. Вы программировать не умеете СОВСЕМ. И с таким знаниями вам на форуме делать нечего, пока не прочитаете какой-нибудь учебник СИ хотя бы до половины - не тратье время участников
В том, что Вы не использовали подпрограмму, а опять читали аналоговый вход
не только. "Там всю систему менять надо" (с)
В том, что Вы не использовали подпрограмму, а опять читали аналоговый вход
не только. "Там всю систему менять надо" (с)
А чего тогда в песочницу не отправите?