Ну да, 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);
}
}
