Ну да, 65 сек хватит. Экономия называется.)
Ду уж… Это для тех кто не может выучить десяток-два иностранных слов, и которые пишут русские слова латиницей). Таких у нас тоже немало.(
ну зато задачка решается
не по фэншую, Тихонов бы за такие вольности выгнал бы нафиг
во блин, про сайт бухгалтеров электроников не слышал, это бухгалтер со стажем 17 лет и 6 мес.???
Вот пример из 21-ого века. ;)) Со стандартной библиотекой Ticker.
#include "Ticker.h"
const byte LED = LED_BUILTIN;
const uint32_t BlinkPeriod = 2000; //ms
const uint32_t BlinkHIGH = 500; //ms
Ticker setHIGH([](){digitalWrite(LED, HIGH);}, BlinkPeriod);
Ticker setLOW([](){digitalWrite(LED, LOW);}, BlinkPeriod);
void setup() {
pinMode(LED, OUTPUT);
setHIGH.start();
delay(BlinkHIGH);
setLOW.start();
}
void loop() {
setHIGH.update();
setLOW.update();
}
Еще интереснее выйдет с библиотекой от нашего коллеги DetSimen
Его Блинк и библиотека доступны на ГитХабе:
Это гораздо больше, чем просто штатный “тикер”.
Эти приемы позволят запустить несколько ЛЕД с различными частотами и скважностью и менять их в процессе работы программы.
Собственно работа с тикером знакома каждому программисту интерфейсов. Для контроллеров с многозадачной ОС (FreeRTOS) есть привычные тикеры. Для AVR нужно учитывать специфику, просто добавляется апдейтер в loop() для каждого тикера.
Эта библиотека достойна размещения отдельным постом в разделе Wiki - если, конечно, автор не против. Лично я ее во многих своих поделиях использую.
А на Гитхабе найти ее не просто, поиск выдает: " We couldn’t find any repositories matching ‘DetSimen’ "
Ну, если использовать “спецсредства”, то можно и так
#include <shTaskManager.h> // https://github.com/VAleSh-Soft/shTaskManager
shTaskManager tasks(1); // создаем список на одну задачу
// обработчик задачи
void blink()
{
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
tasks.addTask(500, blink); // добавляем задачу для мигания светодиод
}
void loop()
{
tasks.tick(); // опрос списка задач, необходимо запускать как можно чаще
}
Это тоже позволяет запустить несколько ЛЕД с различными частотами и скважностью и менять их в процессе работы программы.
ЗЫ: Ничего не хочу сказать против дедовой библиотеки, но в моей нет ограничения на 10 таймеров. Потому как и самих таймеров нету
ЗЫЫ: на старом форуме делал пост по подобной методе, но без внешних библиотек
Блинк?
Да еще и с подключением внешних библиотек?
Нет, ребяты, это извращение.
А по существу: BwD - очень полезная вещь. Я помещаю его практически в каждый проект - он позволяет убедиться, что скетч работает, не завис и т.п. Ну и заодно еще немного диагностики: при помощи частоты мигания можно индицировать, в каком режиме (если их несколько) в настоящее время находится скетч.
Если только для блинка, то да. Если блинк - только одна из задача, почему бы и нет?
Не читал но одобряю))
Ну вот у меня пунктик - самописный код. А тот же BwD - тут уже как-то поднимался вопрос - так вот, BwD прекрасно позволяет устроить мигание любого количества светодиодов с самыми различными частотами. Так что, используя этот шаблон, можно организовать периодический запуск любых действий, не только светодиодов. Так что и в этом случае подключение каких-либо других модулей также не вызвано необходимостью.
Не нужно плодить лишние сущности!
Полностью поддерживаю, код самописный, библиотека моя. Используется, нстественно , не только и не столько для блинков. В основе - тот же BwD
Ну, если мы простой блинк утвердить не можем, без выебонов, тогда этот раздел форума точно не нужен.
Долой бюрократию!
Долой утверждения!
Да здравствует плюрализм блинков!
Во первых - всех с Новым Годом! Добра всем. Не зла - именно Добра!
Что значит “самописный” - вообще без использования библиотек? Даже без использования стандартных типа Serial или адафруитовских для периферии?
Ну а если в коде используются вышеупомянутые, то чем плохо использование других, качественно написанных библиотек, особенно если они будут одобрены нашим сообществом.
Согласитесь, что тот же блинк для десятка светодиодов с толковой библиотекой будет короче, проще и читабельнее. Или, например, опрос 5 - 10-и кнопок можно написать самому, но можно и “титановый велосипед” прикрутить, выйдет быстрее и не хуже.
Мне кажется, что именно этот раздел должен помочь не утонуть в мусоре флуда интересным решениям, коих было немало на форуме. А вот отыскать их - если сразу не сохранил для себя - та еще задачка.
Дед, этот раздел не для «поиска истины в бокале вина», а (как один из вариантов) для разных подходов к решению одной и той же или схожей задачи.
Так что ничего утверждать не нужно )))
Ну почему же? Настоящий священный блинк - он в первом сообщении. Ну а дальше обсуждение, можно ли его улучшить. Найдем лучший вариант - исправим - это же Wiki.
Почему бы и нет?) Даже без AVR libc.
#define LED LED_BUILTIN //8..13 only
#define LED_PERIOD 1000
#define out(x) DDRB |= 1<<(x - 8)
#define toggle(x) PINB = 1<<(x - 8)
#define every(x) for (static uint16_t t; ++t >= (x); t = 0)
#define delay_ms() for (uint16_t c = F_CPU / 5 / 1000; c; --c) asm volatile ("nop")
int main() {
out(LED);
while (true) {
delay_ms();
every(LED_PERIOD / 2)
toggle(LED);
}
}