Мигания LED без delay();
- Войдите на сайт для отправки комментариев
Чт, 19/12/2019 - 14:35
здравствуйте, подскажите пожалуйста, как сделать многозадачность. При включения arduino LED включился, на 1 секунду, пока горит LED, он выводил в сериал данные с ds1307 rtc, через 5 секунд включил, также на одно секунду. Заранее спасибо.
здравствуйте, подскажите пожалуйста, как сделать многозадачность. При включения arduino LED включился, на 1 секунду, пока горит LED, он выводил в сериал данные с ds1307 rtc, через 5 секунд включил, также на одно секунду. Заранее спасибо.
а зачем тут "многозадачность"?
включили ЛЕД - и он горит, МК в это время ничем не занят, можно выводить данные...
ну как я ему скажу, что через 5 секунд выключить, и включить через 1 секунду. Через делей не получится.
ну как я ему скажу, что через 5 секунд выключить, и включить через 1 секунду. Через делей не получится.
ищите пример "блинк без делей"
И что вы циклитесь на этом delay! Прям катастрофа.( Ставьте минимально возможный делай и играйтесь. Доходит?
ну надо чтоб светодиод горел или не горел, несколько секунд, а пока горит светодиод, в порт не выводится время
Вам ведь "Зеленый" уже сказал: "Минимально возможный", а между ними выводите.))))
Да я недавно начал изучать arduino
Да я недавно начал изучать arduino
ну так изучайте, а не попрошайничайте на форумах :)
Я просто не понимаю, что может такое делать. Вроде нашел, что примрно такое может делать прерывания, сейчас изучаю
Я просто не понимаю, что может такое делать. Вроде нашел, что примрно такое может делать прерывания, сейчас изучаю
рано вам прерывания изучать. миллис освойте сначала.
Я же вам сказал - посмотрите пример "блинк без делай" - он лежит в куче мест в инете, даже на нашем форуме есть
http://arduino.ru/tutorials/BlinkWithoutDelay
вроде немного понял про милис. Милис считал кол-времени с запуска arduino, а можно сделать так, что наоборот. Чтоб включился сразу, а потом ждал? как я понимаю на милиси такое не получится, если не прав, простите.
Кто кого ждал?
Вы как открытия магазина ждёте -- у Вас часы в другую сторону идут что ли?
вроде немного понял про милис. Милис считал кол-времени с запуска arduino, а можно сделать так, что наоборот. Чтоб включился сразу, а потом ждал? как я понимаю на милиси такое не получится, если не прав, простите.
простите, в этих трех строчках смысла не больше, чем в бреде сумасшедшего. Попробуйте пояснить свою мысль понятнее.
миллис - это просто часы. Положим, вам жена наказала выключить борщ через 2 часа. И показала на кухонный таймер. Далее у вас есть две стратегии
1) - можно сидеть перед плитой и ждать, пока прозвонит таймер. Это - делей
2) а можно просто посмотреть на свои часы, отметить, когда кончатся указанные 2 часа - и пойти пока книжку почитать. фуьбол посмотреть, творчеством заняться... в общем, поделать что-то полезное, а не просто тупо сидеть и ждать. Это - аналог миллис. И тут совершенно неважно, сколько сейчас на ваших часах времени - 2 часа ночи или 11 утра - вам ведь важно не время, а интервал. даже если у вас часы отстают или спешат на час - для правильной отсечки 2х часов варки борща это не играет роли. лишь бы часы ходили и не останавливалис
вроде немного понял про милис. Милис считал кол-времени с запуска arduino, а можно сделать так, что наоборот. Чтоб включился сразу, а потом ждал? как я понимаю на милиси такое не получится, если не прав, простите.
И снова: ЛЕШАК
Попробовал я сделать с милисам, как вы сказали, но чета не могу допереть. Он выдает данные с ds18b20, при старте, через секунду, он убрать 5v с пина и больше не подает на пин питания.
с диодом на 13 пине работает
Задержку уменьшил, все заработало
можете обьяснить, что вы делаете в строчках с 13-20? Как должен зажигаться диод?
можете обьяснить, что вы делаете в строчках с 13-20? Как должен зажигаться диод?
случайным образом
Включаю диод на 13 пине и выключаю, с таймером милис. А я хотел сделать, чтоб при включения ардуино, он горел, через 5 секунды включился, через 1 секунду выключился.
я хотел сделать, чтоб при включения ардуино, он горел, через 5 секунды включился, через 1 секунду выключился.
а в итоге вы его каждые 5 секунд включаете и каждые 2 секунды - выключаете. Причем выключаете не через 2 сек "после включения", как можно было подумать - а просто каждые 2 секунды . Так что Клапауций прав - получается что диод загорается и тухнет почти случайным образом.
Чтобы работало так, как вы хотите - время включения надо отсчитывать только тогда, когда светодиод горит, а время выключения - только когда он потушен, а не абы как
я имел ввиду, что переменные ON, OFF, TEMP у него в сетапе имеют случайные значения, т.к. нигде выше не определены - он этого не замечает, т.к. баг происходит единоразово - далее переменные имеют значение mlllis().
то, что он не учитывает состояние пина - это ега личная проблема.
космолёты обречены падать в Туву.
нет, не случайные, глобальные переменные численных типов автоматически инициализируются нулем.
но кривости кода это не отменяет.