Официальный сайт компании Arduino по адресу arduino.cc
Конечные автоматы, зажигание светодиода на определенное время
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Сб, 16/03/2019 - 13:26
Здравствуйте! Бьюсь вторую неделю, не могу реализовать следующую задачу:
Нажимаем кнопку - светодиод горит одну секунду.
Нажимаем два - две секунды и тд. Если во время горения светодиода нажимаем кнопку, то добавляется еще время равное количеству нажатий. Методом конечных автоматов не смог сделать, сделал проще. Все загорается, но когда начинаю нажимать на кнопку во время горения кнопки таймер может остановиться. В чем проблема так и не нашел.
Буду признателен, если хорошие и опытные люди помогут дилетанту :)
#include <SimpleTimer.h> #define LED_PIN 13 #define BUTTON_PIN 7 SimpleTimer timer; bool wasButtonDown = false; int secCount = 0; int timer1 = 0; void setup() { digitalWrite(BUTTON_PIN, LOW); pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT); Serial.begin (9600); } void loop() { timer.run(); bool isButtonDown = digitalRead(BUTTON_PIN); if (isButtonDown && !wasButtonDown) { digitalWrite(LED_PIN, HIGH); timer.disable(timer1); secCount++; Serial.print("+1 second. Total: "); Serial.println(secCount); timer1 = timer.setInterval(1000, repeatMe); } wasButtonDown = isButtonDown; if (secCount < 1) { digitalWrite(LED_PIN, LOW); } delay(10); } void repeatMe() { if (secCount > 0) { Serial.print("Uptime (s): "); Serial.println(secCount); secCount--; } }
Нажимаем кнопку - светодиод горит одну секунду.
Нажимаем два - две секунды и тд. .... Методом конечных автоматов не смог сделать
"и т.д." предполагает потенциальную бесконечность. Как Вы собирались впихивать её в конечный автомат?
Не понятно в каком конечном автомате Вы запутались. Но автомат с лямда-функцией выглядит так
И да Вы так и не сказали что Вы хотите от старожилов форума.
автомат с лямда-функцией
Ну, слава Богу! Теперь всё в порядке, а то я уж переживать начал, что не то что-то с задачей :)
Всё не решаюсь спросить: лямда-функция - это какая-то обязанность, возложенная на бурлаков? Типа там "тянуть лямду" или типа того. Или это новая прогрессивная технология, от которой даже Илон Маск очешуеет?
Конечно можно программировать и без автоматов. Но такой код становится непредсказуемый, а значит тратится время на отладку его частей и взаимодествия.
Так, чисто поржать. Можно использовать такой вариант
Тут есть нюанс - кнопка должна срабатывать на отпускании :(
Задание звучит так:
Автомат управления освещением по кнопке. Количество нажатий кнопки должно соответствовать времени свечения светодиода.
Пробовал так:
Делал так еще, но преподаватель нажал раз 10 и забраковал, за эти 10 нажатий switch уже успел несколько раз прогнаться по кругу и естественно что десять ожидаемых секунд не прогорело :) Поэтому решил попробовать без автоматов, а потом и вовсе отчаялся. Несколько вопросов знатокам:
1. Сколько лучше заложить возможных значений в switch.
2. Светодиод догорает свои 9 секунд, ему остается секунда и нажимаем еще раз на кнопку, тогда он будет гореть 10(переход в следующий case). Будет ли это считаться как неверно выполненное задание? Потому что по-моему это слишком проблематично считать количество секунд с запуска кнопки, навязывать тонну if'ov и тд.
На лекции надо было ходить
arlover, вот зачем вам код с форума. Если я выложу свое решение 1- скорее всего не поймете всего механизма 2- преподователь поймет что а) код не ваш б) вы ничего не понимаете в коде в) бездельник и лентяй 3- зачем так "палится".
ПС: Состояний надо всего два. А вот при фронте нажатия удлинять время задержки отключения на 1 секунду. И все
Спасибо за подсказку :)
А по коду, если вы выложите свой код:
а) я разберусь в сложных механизмах
б) посмотрю, как опытные люди мыслят и одну и ту же задачу решают своим профессионализмом с минимальным количеством кода
...если вы выложите свой код:
а) я разберусь в сложных механизмах
б) посмотрю, как опытные люди мыслят и одну и ту же задачу решают своим профессионализмом с минимальным количеством кода
с) не исключен шанс, что просто свихнетёсь или узнаете от qwone многое из теорий и практик альтернативных развитий Вселенной.
Спасибо за подсказку :)
А по коду, если вы выложите свой код:
а) я разберусь в сложных механизмах
б) посмотрю, как опытные люди мыслят и одну и ту же задачу решают своим профессионализмом с минимальным количеством кода
Начните с простого, обработка нажатия и отпускания кнопки
Спасибо за подсказку :)
А по коду, если вы выложите свой код:
а) я разберусь в сложных механизмах
б) посмотрю, как опытные люди мыслят и одну и ту же задачу решают своим профессионализмом с минимальным количеством кода
Начните с простого, обработка нажатия и отпускания кнопки
Здравствуйте, не постесняюсь задать вопрос, вы смотрели код? Там есть обработка нажатия и отпускания кнопки.
а) я разберусь в сложных механизмах
Хрен там. Разбираться в кодах квона у тебя - двоечника ещё разбиралка не выросла. Не такие разобраться не могут.
Так, чисто поржать. Можно использовать такой вариант
А лямбды где? Низачёт!
Когда-то давно, когда ты только начинал сериал "классы по квону", человка четыре-пять (разных!!!) пытались тебе объяснить, что ты "банально не понимаешь что такое классы и для чего они". Помнишь?
Объяснять тебе что ты где-то что-то прочитал про лямбды, но при этом "банально не понимаешь что такое лямбды и для чего они" уже никто не пытается, все на классах затрахались :))))
ПС: не загружал и не проверял
А лямбды где? Низачёт!
Извините, дядечка, но не дорос я еще до лямбды. Мы как-нибудь и без этой лямбды-шмабды...
я и написал в надежде, что ТС выделит обработку кнопки в отдельную функцию, для начала
А коробит меня не использование классов (которые ты от пространств имён не отличаешь), а твои высокомерные, менторские предъявы людям, типа
Не наезжай на людей (особенно по тем вопросам, в которых сам ни ухом, ни рылом) и будет тебе много счастья.
Вы же не одеваетесь с минимальным количеством одежды и обуви -
))) улыбнул, напомнил анекдот..".что простыл то?... та легко одетым вышел на балкон...???...в одном ..."
Судя по строчной букве - "вам" это множественное число. Тогда поясни, кто Сэдмену предъявлял? Не ты? Твой экаунт взломали?
В общем прекращай наезжать на людей и свысока рассказывать чего они не понимают. И тебя тоже не будут трогать. Ибо сказано: "всяком взъ@@нувшему, да отъ@@нётся, ибо нех".
Ты ещё глюк в своём классе не исправил, а туда же.
ПС: не загружал и не проверял
Не работает, после первого case срабатывает сразу же второй
Вы чего-то покурили?
Вы чего-то покурили?
А я давно заметил, что квон злоупотребляет. Классы скурил, миллис, прогмем еле отбили, так он на case отыгрался.
да, Пух, мне б такую забористую травку...
qwone, не привыкайте к этой гадости.
Вот .это работает, спасибо!
Буду разбираться
Вот .это работает, спасибо!
Буду разбираться
Круто, несколько раз пытался с налёта понять, как это работает, увы... )))
Ну, вот, написали готовый код двоешнику. Помгли парню так и остаться без мозгов. Взрослые люди, мля!
qwone, искренне желаю, чтобы эта ленивая задница с дипломом, прости Господи, специалиста и с акуеть какими знаниями, пришла в твою контору тобой руководить.
Что не понятно? Как образован обработчик кнопки или автомат на лямде. Или о ужас вы спрашиваете о switch- е?
Ворота, не городите ерунды. Точно такая ленивая задница пришла руководить мой страной.И таких задниц полная Верховная Рада. Или вы думаете что лишняя ленивая задница испортит дерьмо в бочке.
Ну, вот, написали готовый код двоешнику. Помгли парню так и остаться без мозгов. Взрослые люди, мля!
qwone, искренне желаю, чтобы эта ленивая задница с дипломом, прости Господи, специалиста и с акуеть какими знаниями, пришла в твою контору тобой руководить.
Вы слишком токсичны, не понимаю откуда столько негатива
Что не понятно? Как образован обработчик кнопки или автомат на лямде. Или о ужас вы спрашиваете о switch- е?
Ворота, не городите ерунды. Точно такая ленивая задница пришла руководить мой страной.И таких задниц полная Верховная Рада. Или вы думаете что лишняя ленивая задница испортит дерьмо в бочке.
я к свитч конструкциям еще даже не подступался...
Вы же видите, мои наброски не сложнее блинка )))
Если нет желания помогать - можете пойти в другой раздел и писать чушь там.
Ну, вот, написали готовый код двоешнику. Помгли парню так и остаться без мозгов. Взрослые люди, мля!
qwone, искренне желаю, чтобы эта ленивая задница с дипломом, прости Господи, специалиста и с акуеть какими знаниями, пришла в твою контору тобой руководить.
А я ему сходу задачку, подсчитать объём бочки уложенной на бок через 1 миллиметр наполнения, как думаете - одолеет )))
Все владеют идеальными знаниями, но примеров вашего идеального кода я не нашел. По делу помог только qwone
Топ-менеджерам задачи про бочки не задают. Это только обслуживающий персонал должен доказывать, что "достоин" МРОТ*1.5.
Ворота, не городите ерунды. ... вы думаете что лишняя ленивая задница испортит дерьмо в бочке.
Да думаю. Легион ленивых безмозглых задниц состоит из отдельных одиночных экземпляров. И одному такоу экземпляру ты сегодня помог сдать на шару. А "одной больше - одной меньше" - ну, давай всем дегенератам сразу дипломы выдавать, чего время-то терять на форумные тёрки!
В общем, моё пожелание остаётся в силе.
sadman41, вот и пришли к выводу. Не сможет ТС найти место среди обслуживающего персонала, то придется идти в топ-менеджеры. А всякие оценки в универе или даже дипломы не гарантируют рабочего места. И да уровень кода "допускаемого выдавать новичкам" ну очень низок что бы даже работать программистом. Так что притензии Ворота ничем не обоснованы в реалиях современной жизни.
Ты много чего в этой жизни не понимаешь. Лучше тебе не знать откуда у меня негатив к таким, как ты. Но негатив есть и серьёзный, старожилы могут подтвердить, если чо.
Совершенно верно! А богадельня для дегенератов, неспособных освоить учебную программу!
Мальчик, ты это прекращай, а то я тебе объясню куда тебе пойти.
Ты много чего в этой жизни не понимаешь. Лучше тебе не знать откуда у меня негатив к таким, как ты. Но негатив есть и серьёзный, старожилы могут подтвердить, если чо.
Совершенно верно! А богадельня для дегенератов, неспособных освоить учебную программу!
Мальчик, ты это прекращай, а то я тебе объясню куда тебе пойти.
Объясни куда пойти. Мальчик - тут только ты, судя по поведению.
А меня интересует только один вопрос, сумеет ли ТС рассказать по коду, что, как и зачем )))
Может ПУХ спецом, чтобы ТС завалился на сдаче
Так, Володя. Вот прямо сейчас прекратил. Поздно пить Боржом. Да и один хрен он не сдаст, квоновский код сдать невозможно, разве что преподаватель совсем на всё забьёт.
arlover, тоже самое - немедленно прекратите.
Прекратил.
arlover, я просил вас обоих прекратить. У одного хватило ума, у другого - нет. Ваш пост удаляю.