Имитация бортовых огней самолета
- Войдите на сайт для отправки комментариев
Приветствую!
Думал значит, что почитаю форумы, посмотрю ютуб и смогу сделать, а нет! фиг там. Обращаюсь к вам, может кто поможет?!
В свободное время собираю модельки самолетов и недавно задумался сделать одну модель с освещением.
Пример для наглядности лучше посмотреть на видео. Единственное, камера не передает двойное мигание белых стробов, которые находятся на законцовках крыла и в хвостовой части самолета.
Из того что смог сделать сам, это переключение режимов и мигание, но с ним беда, настроить его не реально, чтоб было хотя бы похоже на реальность.
В интернете нашел похожие проекты, но их авторы не делятся кодом.
Мой недокод тут, более подробно расписано в комментариях.
Научите меня мигать нормально диодами)
p.s. прошу не кидаться тапками :)
int regim = 0; // объявляем переменную для переключения режимов int flag = 0; // хз что это int cabin = 10; // освещение салона 10 пин int logo = 9; // освещение логотипа 9 пин int taxi = 8; // рулежная фара 8 пин int landing = 7; // посадочные фары 7 пин int strobe = 6; // мигающие белые (по две вспышки) 6 пин int beacon = 5; // мигающие красные 5 пин int nav = 4; // красный_зеленый_белый_ 4 пин int button = 2; // сенсорная кнопка для переключения режимов int dly = 100; // интервал мигания void setup() { pinMode(cabin, OUTPUT); pinMode(logo, OUTPUT); pinMode(taxi, OUTPUT); pinMode(landing, OUTPUT); pinMode(strobe, OUTPUT); pinMode(beacon, OUTPUT); pinMode(nav, OUTPUT); pinMode(button, INPUT); } void loop() { if (digitalRead(button) == HIGH && flag == 0) // не уверен что написан код правильно для переключения, но работает { regim++; flag = 1; if (regim > 9) { regim = 1; } } if (digitalRead(button) == LOW && flag == 1) { flag = 0; } if (regim == 1) // тестовый (первый) режим, все огни включить поочередно с интервалом { delay (1000); digitalWrite(cabin, HIGH); delay (500); digitalWrite(logo, HIGH); delay (500); digitalWrite(taxi, HIGH); delay (500); digitalWrite(landing, HIGH); delay (500); digitalWrite(strobe, HIGH); delay (500); digitalWrite(beacon, HIGH); delay (500); digitalWrite(nav, HIGH); delay (500); digitalWrite(cabin, LOW); delay (500); digitalWrite(logo, LOW); delay (500); digitalWrite(taxi, LOW); delay (500); digitalWrite(landing, LOW); delay (500); digitalWrite(strobe, LOW); delay (500); digitalWrite(beacon, LOW); delay (500); digitalWrite(nav, LOW); // ну и как по мне, тут нужно остановить мигание. Одного круга достаточно } if (regim == 2) // второй режим_самолет на стоянке { digitalWrite(cabin, HIGH); //работает освещение салона digitalWrite(logo, HIGH); // работает освещение логотипа на хвосте digitalWrite(taxi, LOW); digitalWrite(landing, LOW); digitalWrite(strobe, LOW); digitalWrite(beacon, LOW); digitalWrite(nav, HIGH); // включены красный и зеленый диоды на крыле, белый диод в задней части фюзеляжа } if (regim == 3) // третий режим_руление { digitalWrite(cabin, HIGH); //работает освещение салона. Идеально бы его подключить к ШИМ и сделать на 50% тусклее digitalWrite(logo, HIGH); // работает освещение логотипа на хвосте digitalWrite(taxi, HIGH); // работает рулежная фара digitalWrite(landing, LOW); digitalWrite(strobe, LOW); digitalWrite(beacon, HIGH); // мигают два красных диода. с интервалом: High - 200мс, Low - 1500мс digitalWrite(nav, HIGH); // включены красный и зеленый диоды на крыле, белый диод в задней части фюзеляжа } if (regim == 4) // четвертый режим_взлет { digitalWrite(cabin, LOW); digitalWrite(logo, HIGH); // работает освещение логотипа на хвосте digitalWrite(taxi, HIGH); // работает рулежная фара digitalWrite(landing, HIGH); // включены взлетно посадочные огни digitalWrite(strobe, HIGH); // мигают белые диоды. Две вспышки одна за одной, буквально мгновение и пауза 1500мс. Srtobe и Beacon разведены в интервале ровно на половину. // т.е. одни огни не догоняют другие в частоте. Одновременно горят только одни из двух. Подробнее и понятнее в видео. digitalWrite(beacon, HIGH); // мигают два красных диода. с интервалом: High - 200мс, Low - 1500мс digitalWrite(nav, HIGH); // включены красный и зеленый диоды на крыле, белый диод в задней части фюзеляжа } if (regim == 5) // пятый режим_полет на эшелоне { digitalWrite(cabin, HIGH); //работает освещение салона digitalWrite(logo, HIGH); // работает освещение логотипа на хвосте digitalWrite(taxi, LOW); digitalWrite(landing, LOW); digitalWrite(strobe, HIGH); // мигают белые диоды. Две вспышки одна за одной, буквально мгновение и пауза 1500мс. Srtobe и Beacon разведены в интервале ровно на половину. // т.е. одни огни не догоняют другие в частоте. Одновременно горят только одни из двух. Подробнее и понятнее в видео. digitalWrite(beacon, HIGH); // мигают два красных диода. с интервалом: High - 200мс, Low - 1500мс digitalWrite(nav, HIGH); // включены красный и зеленый диоды на крыле, белый диод в задней части фюзеляжа } if (regim == 6) // шестой режим_посадка (тоже самое, что и взлет) { digitalWrite(cabin, LOW); digitalWrite(logo, HIGH); // работает освещение логотипа на хвосте digitalWrite(taxi, HIGH); // работает рулежная фара digitalWrite(landing, HIGH); // включены взлетно посадочные огни digitalWrite(strobe, HIGH); // мигают белые диоды. Две вспышки одна за одной, буквально мгновение и пауза 1500мс. Srtobe и Beacon разведены в интервале ровно на половину. // т.е. одни огни не догоняют другие в частоте. Одновременно горят только одни из двух. Подробнее и понятнее в видео. digitalWrite(beacon, HIGH); // мигают два красных диода. с интервалом: High - 200мс, Low - 1500мс digitalWrite(nav, HIGH); // включены красный и зеленый диоды на крыле, белый диод в задней части фюзеляжа } if (regim == 7) // седьмой режим_руление (тоже самое, что и третий режим) { digitalWrite(cabin, HIGH); //работает освещение салона. Идеально бы его подключить к ШИМ и сделать на 50% тусклее digitalWrite(logo, HIGH); // работает освещение логотипа на хвосте digitalWrite(taxi, HIGH); // работает рулежная фара digitalWrite(landing, LOW); digitalWrite(strobe, LOW); digitalWrite(beacon, HIGH); // мигают два красных диода. с интервалом: High - 200мс, Low - 1500мс digitalWrite(nav, HIGH); // включены красный и зеленый диоды на крыле, белый диод в задней части фюзеляжа } if (regim == 8) // восьмой режим_самолет на стоянке { digitalWrite(cabin, HIGH); //работает освещение салона digitalWrite(logo, HIGH); // работает освещение логотипа на хвосте digitalWrite(taxi, LOW); digitalWrite(landing, LOW); digitalWrite(strobe, LOW); digitalWrite(beacon, LOW); digitalWrite(nav, HIGH); // включены красный и зеленый диоды на крыле, белый диод в задней части фюзеляжа } if (regim == 9) //девятый режим_новогодняя елка_все включено и мигает (strobe и beacon) { digitalWrite(cabin, HIGH); digitalWrite(logo, HIGH); digitalWrite(taxi, HIGH); digitalWrite(landing, HIGH); digitalWrite(strobe, HIGH); // мигают белые диоды. Две вспышки одна за одной, буквально мгновение и пауза 1500мс. Srtobe и Beacon разведены в интервале ровно на половину. // т.е. одни огни не догоняют другие в частоте. Одновременно горят только одни из двух. Подробнее и понятнее в видео. digitalWrite(beacon, HIGH); // мигают два красных диода. с интервалом: High - 200мс, Low - 1500мс digitalWrite(nav, HIGH); // включены красный и зеленый диоды на крыле, белый диод в задней части фюзеляжа } if (regim == 10) //девятый режим_Off_или как-то реализовать режим сна { digitalWrite(cabin, LOW); digitalWrite(logo, LOW); digitalWrite(taxi, LOW); digitalWrite(landing, LOW); digitalWrite(strobe, LOW); digitalWrite(beacon, LOW); digitalWrite(nav, LOW); } }
Я делитант в авиации, поэтому кроме мигающих огней (раз в пять секунд вроде?) ничего другого не заметил (на видео). Поясните «тонкости» огней.
Да конечно, сейчас попробую.
Я сейчас пишу про реальный самолёт, не модель.
1. Освещение салона. Ну тут думаю вск понятно, белый свет который вкл или выкл.
2. Освещение хвоста самолёта двумя белыми лампами. Установлены на горизонтальном стабилизаторе, на хвосте в общем. Тоже вкл или выкл. Называется также как logo light. Так как они подсвечивают логотип авиакомпании.
3. Рулежная фара находится на передней стойке шасси. Используется при рулении по аэропорту и иногда при взлете. Вкл-выкл.
4. Посадочные огни, используют при взлете и посадке. Вкл-выкл.
5. Beacon - это красные огни внизу и вверху фюзеляжа самолёта( нижний по центру, верхний ближе к передней части). Мигают синхронно между собой. Одна вспышка на 100-200мс и пауза на полторы секунды. И так всегда от момента запуска двигателей и до выключения.
6. Strobe - белые огни по краям крыла и в хвосте. Мигают с момента как самолёт выруливает на полосу. Мигают двойной вспышкой и потом пауза полторы секунды.
Стробы и биконы обычно рассинхронизированы.
7. Навигационные огни -красный и зелёный огонь рядом со строками на конце крыла. Горят во время полёта.
yauhenibabuk, задачка-то вроде несложная. Пункты 1-4 и 7 - обычные лампочки, вкл-выкл, и только две мигалки - Strobe и Beacon. Это все программируется на раз.
Чуть сложнее только синхронизация (точнее РАС-синхронизация Strobe и Beacon на половину периода). Сложнее с учетом того, что Strobe может быть выключен...
yauhenibabuk, - честно говоря я не очень понимаю, как у вас работает кнопка в коде. Подозреваю, что там не слишком правильно написано, так что лучше обьясните просто словами, как оно должно работать
Конечно они не поделятся - модели же делают на выставки, стенды за денежки. Зачем им конкуренту подарок делать ))
yauhenibabuk, во-первых, найдите и тщательно изучите, как работают два варианта кода, которые называются "blink" и "blink without delay". На самом деле тщательно изучите. Если для этого потребуется несколько десятков раз прочитать каждый - не страшно, оно того стоит. Проект следует делать на основе второго, но для этого надо хорошо понимать, как он работает.
Во-вторых, слона нужно есть по частям. Т.е. не пытайтесь сделать сразу все, делайте по частям: сделали один вид огней, отладили, проверили, и только после того, как убедитесь, что они работают, как задумано, добавляйте следующие.
Я бы еще посоветовал разрисовать на шкале времени циклические сигналы. Очень способствует пониманию.
вот тут библиотека DetSimen как раз и пригодилась бы
yauhenibabuk, задачка-то вроде несложная. Пункты 1-4 и 7 - обычные лампочки, вкл-выкл, и только две мигалки - Strobe и Beacon. Это все программируется на раз.
Чуть сложнее только синхронизация (точнее РАС-синхронизация Strobe и Beacon на половину периода). Сложнее с учетом того, что Strobe может быть выключен...
Не сложная для человека, который понимает как работает код и arduino, мне пока это кажется космосом.
yauhenibabuk, - честно говоря я не очень понимаю, как у вас работает кнопка в коде. Подозреваю, что там не слишком правильно написано, так что лучше обьясните просто словами, как оно должно работать
Данный код на кнопку был найден на одном из форумов. Все работает исправно, проверено на реальной модели. Получается каждое нажатие на кнопку меняет переменную regim, максимальное значение 9, потом все по новой идет, как и с режимами свечения диодов. Единственное, что она плохо работает при использовании delay, но это логично.
yauhenibabuk, во-первых, найдите и тщательно изучите, как работают два варианта кода, которые называются "blink" и "blink without delay". На самом деле тщательно изучите. Если для этого потребуется несколько десятков раз прочитать каждый - не страшно, оно того стоит. Проект следует делать на основе второго, но для этого надо хорошо понимать, как он работает.
Во-вторых, слона нужно есть по частям. Т.е. не пытайтесь сделать сразу все, делайте по частям: сделали один вид огней, отладили, проверили, и только после того, как убедитесь, что они работают, как задумано, добавляйте следующие.
про blink without delay - принял к сведению, попробую въехать в то, что там написано.
а по второй части, так я так и сделал. Сразу научил гореть лампы. Потом научил переключать режимы.
На стенде у меня в первом режиме горит первый диод, во втором второй и тд.
Теперь осталось научить моргать один диод, чтоб это применить к другим.
вот тут библиотека DetSimen как раз и пригодилась бы
хм, вроде что понял и по-моему смогу попробовать это сделать сам.
Благодарю!
Я извиняюсь, сразу вставил сюда не самую актуальную часть кода. Вот как я пытался сделать мигание
часть кода убрал
yauhenibabuk, чтобы Вам помочь, нужно понимать, чего Вы вообще хотите от программы.
В сообщении №2 Вы перечислили огни, которые есть на самолете. При таком подходе было бы логично для каждой из 7 групп написать функции включения и выключения. Проще это будет через классы, т.е. создаете родительский класс и от него 3 наследника: с постоянным включением, с одним миганием и с двойным миганием. Соответственно получается 5 экземпляров первого наследника и по одному - других.
А в loop() по совокупности условий производите включение или выключение соответствующих огней.
В скетче же у Вас все совершенно по-другому: неизвестно откуда вдруг появляются 9 режимов, которые нигде ранее текстом описаны не были, причем пишете реакцию только для одного режима - рулежки. Правильно или нет - понять невозможно в связи с отсутствием описания, как это должно работать.
И как вообще это все понимать? Вы текстом пишете одно, а кодом - совершенно другое.
yauhenibabuk, чтобы Вам помочь, нужно понимать, чего Вы вообще хотите от программы.
В сообщении №2 Вы перечислили огни, которые есть на самолете. При таком подходе было бы логично для каждой из 7 групп написать функции включения и выключения. Проще это будет через классы, т.е. создаете родительский класс и от него 3 наследника: с постоянным включением, с одним миганием и с двойным миганием. Соответственно получается 5 экземпляров первого наследника и по одному - других.
А в loop() по совокупности условий производите включение или выключение соответствующих огней.
В скетче же у Вас все совершенно по-другому: неизвестно откуда вдруг появляются 9 режимов, которые нигде ранее текстом описаны не были, причем пишете реакцию только для одного режима - рулежки. Правильно или нет - понять невозможно в связи с отсутствием описания, как это должно работать.
И как вообще это все понимать? Вы текстом пишете одно, а кодом - совершенно другое.
а так всегда, идея у автора в голове сидит, он ее понимает отлично, а вот объяснить другим не всегда получается.
Пытался вроде просто написать, попробую еще раз:
Есть самолет (моделька), с кучей диодов в ней. Есть arduino nano, сенсорная кнопка, аккумулятор (со своей отдельной кнопкой, для включения arduino).
Хочу сделать так, чтоб нажатием сенсорной кнопки я мог переключать 9-10 режимов.
В каждом из режимов светодиоды должны гореть по разному и тем самым имитировать один из режимов полета.
Будь бы один режим - delay меня устроила без проблем.
В одном режиме работают диоды которые просто горят, в некоторых режимах подключаются диоды которые должны мигать. С последними у меня проблема.
но вроде я смог сделать мигание с нужными мне интервалами через millis. Попробую в скором времени запихнуть это все в общий код и проверить.
Вот чем заставил мигать, осталось научиться включать в нужных режимах это
Есть самолет (моделька), с кучей диодов в ней. Есть arduino nano, сенсорная кнопка, аккумулятор (со своей отдельной кнопкой, для включения arduino).
Хочу сделать так, чтоб нажатием сенсорной кнопки я мог переключать 9-10 режимов.
Странное решение переключать режимы сенсорной кнопкой .... Почему не с пульта? Или у Вас не летающие модельки?
Сделайте 7 флагов и соотвественно 7 if к флагам ну или сколько там по количеству Ваших независимых систем ламп. При установке флага система включается и работает и всё равно - просто горит или моргает. Введите массив режимов и пропишите в нем флаги каждого режима - каким системам ламп работать, а каким нет. Этих режимов может быть много. При нажатии кнопки переинициируйте флаги в соответствии с прописанными для следующего режима. И так по кругу. Взяв титановый велосипед для кнопки можно одной кнопкой кроме перключения переходить сразу на наиболее востребованные режимы длинным или двойным нажатием.
yauhenibabuk, написал для Вас класс бортовых огней с проверкой его функционирования.
Класс содержит инициализацию (указываем нужный пин) и две функции для управления: одна включает/выключает огни, а вторая осуществляет основную работу - ее нужно вызывать как можно чаще, минимум каждый раз при проходе цикла loop().
Далее - проверочный код.
Для проверки нам достаточно 4 групп огней, понадобится больше - добавите.
Собственно, описываем каждый из 4-х огней, а дальше складываем их адреса в массив для удобства.
В setup() собственно ничего не нужно, вся инициализация происходит в описанных выше объектах, а работа - в loop().
ну а дальше - сам проверочный код.
Перебираются все возможные комбинации включения огней. Для 4 групп огней 2^4 = 16 комбинаций.
Проверочный код можно разбить на 3 части:
в первой части с интервалом в полсекунды показывается очередная комбинация огней. Сама комбинация записывается в переменную flags, каждый бит которой соответствует факту включения (1) или выключения (0) соответствующей группы огней.
Вторая часть - переводит содержимое flags непосредственно в команды управления огнями.
И третья часть - вызов функций работы с огнями - вызывать как можно чаще.
Первую часть Вам нужно будет заменить на собственную логику включения и выключения разных групп огней. Вы можете использовать для этого либо переменную flags, либо непосредственную работу с классами. В последнем случае как переменную flsgs, так и 2-ю часть можно удалить.
Пока - вариант только со стационарными огнями. Когда посмотрите его работу, напишу еще дочерний класс - для двойного мигания. Тогда дополните код и посмотрите, что изменилось.
Странное решение переключать режимы сенсорной кнопкой .... Почему не с пульта? Или у Вас не летающие модельки?
Модельки стационарные, размером 20-50 см в длину. И они только могут мечтать о полете.
вот это я вчера получается и смог сделать, примитивно и просто.
yauhenibabuk, написал для Вас класс бортовых огней с проверкой его функционирования.
Спасибо Вам за проделанную работу, но пока к сожалению половина Ваших слов для меня темный лес, надеюсь я захочу улучшать работу огней и буду дальше изучать это все.
Вот, что у меня в данный момент получилось. Код работает, кнопка переключает.
На данный момент из улучшений планирую:
1. разобраться со спящим режимом arduino.
2. ШИМ регулировку яркости на одном и режимов.
3. В первом режиме хочу один раз включить и выключить все диоды по очереди. Как сделать один цикл вкл-выкл?
Также есть вопрос, три диода (красный, зеленый, белый) последовательно включены, белый не загорается. Не хватает питания?
yauhenibabuk, написал для Вас класс бортовых огней с проверкой его функционирования.
Спасибо Вам за проделанную работу, но пока к сожалению половина Ваших слов для меня темный лес, надеюсь я захочу улучшать работу огней и буду дальше изучать это все.
Если собранный код поместите на форум, я скажу что куда добавить, чтобы били и режимы с миганием. Поверьте, с объектами работать намного удобнее.
Вот, что у меня в данный момент получилось. Код работает, кнопка переключает.
На данный момент из улучшений планирую:
1. разобраться со спящим режимом arduino.
2. ШИМ регулировку яркости на одном и режимов.
3. В первом режиме хочу один раз включить и выключить все диоды по очереди. Как сделать один цикл вкл-выкл?
Также есть вопрос, три диода (красный, зеленый, белый) последовательно включены, белый не загорается. Не хватает питания?
Включены последовательно? Тогда это очень странно. При последовательном соединении через все детали проходит одинаковый ток. Если Вы верно описали проблему, то неисправен (пробит) белый светодиод.
Вы бы собрали код из фрагментов (по сути он приведен в сообщении полностью). Запустили его и посмотрели, как работает. Просто создайте отдельный скетч, не пытаясь интегрировать в существующий у Вас.
Если собранный код поместите на форум, я скажу что куда добавить, чтобы били и режимы с миганием. Поверьте, с объектами работать намного удобнее.
Понимаю, что удобнее. К этому я наверное приду, но думаю не сразу, нет необходимых знаний еще.
Я попробую разобраться, но ближе к вечеру или завтра. На мобилке писать и загружать в arduino такое себе удовольствие.
А зачем это Вам? Тема достаточно сложная и для Вашего проекта совершенно неактуальная. Я бы ее даже не переставил на последнее место, а вообще выкинул из планов.
Я Вас услышал, но и да, я с Вами согласен. Зачем? Наверное, чтоб не думать об герконе или выключателе.
Про ШИМ, я хочу просто в двух режимах уменьшить яркость освещения салона. К примеру в режиме стоянки - свет 100%, при рулении 50, а при взлете и посадке 10%. Да, я уже разобрался сейчас как это сделать. Осталось добраться до личного компа.
хм, у меня уже 200. Правда много пробелов для своего удобства и многое можно сократить.
Включены последовательно? Тогда это очень странно. При последовательном соединении через все детали проходит одинаковый ток. Если Вы верно описали проблему, то неисправен (пробит) белый светодиод.
Да, последовательно. Пробовал менять и чередовать диоды (3мм), все рабочие., но вот вместе три не горят. Три белых - без проблем.
Про ШИМ, я хочу просто в двух режимах уменьшить яркость освещения салона. К примеру в режиме стоянки - свет 100%, при рулении 50, а при взлете и посадке 10%. Да, я уже разобрался сейчас как это сделать. Осталось добраться до личного компа.
С классами просто - делается еще один наследник, в который добавляется новый метод - регулировка ШИМ.
Да, последовательно. Пробовал менять и чередовать диоды (3мм), все рабочие., но вот вместе три не горят. Три белых - без проблем.
При параллельном соединении без резисторов на каждом - да, белый не должен гореть.
Измерьте ток, напряжение на каждом из диодов. Ну и схему желательно привести.
Поредактировал Вашу программу под мою идею. Глубоко не копал. Кнопка по минимуму. Ваша проверка всех лампочек - вынес в сетап - один раз при загрузке будут переливаться. Флаг кабины совмещён с яркостью освещения, поэтому в массиве данных режима есть значения 255 - полное освещение, 200 - около 80%, 25 - 10%. Моргание в подпрограммах тоже по минимуму, длительности горит-негорит в массивах. Режимы можно добавлять и убирать методом изменения размерности массива данных или ещё как. Программа сырая. Собрана на коленке и не проверена. Только иллюстрация идеи.
http://forum.modelka.com.ua/threads/95164-%D0%91%D0%90%D0%9D%D0%9E-%D0%BD%D0%B0-%D0%BC%D0%BE%D1%89%D0%BD%D1%8B%D1%85-%D1%81%D0%B2%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BE%D0%B4%D0%B0%D1%85/page3
может так стоить имитировать
может так стоить имитировать
окей, интересно сколько у вас уйдет времени чтоб подобрать такой интервал мигания?
да и купить arduino nano по цене тоже самое, что купить необходимые компоненты в оффлайн магазине
Beacon_Lights в период 600-650 мс из 1450 по циклу
первая вспышка стробы в период 1300-1340 мс из 1450 по циклу
вторая вспышка стробы в период 1400-1440 мс из 1450 по циклу
Вот мой итоговый вариант. Примитивно, просто, но самое главное работает. Надеюсь буду дальше развиваться в этом направлении и конечный результат лучше станет.
Все, что выше предлагали, пробовал разбираться, но пока реально очень трудно дается понимание. Надо наверное брать книгу и читать, а не обрывками искать что значит тот или иной участок в коде.
Для наглядности видео
ужоснах.
ужоснах.
Зря Вы, сэр - человек старался. Но не получилось...
Дак я и не сэр. :-)
Дак я и не сэр. :-)
Дык и не получилось...
Не знаю, будет и полезно ТС, но,, раз обещал, выкладываю вариант с двойным миганием:
Чтобы добавить одиночное мигание, по образу и подобию aeroLEDGroup2 делается aeroLEDGroup1. Описываются соответствующие объекты и включаются в общий массив.
Кстати, вариант с использованием переменной flags очень плодотворен в данном случае: позволяет одной строкой ввести массив режимов - битовых масок, а второй строкой - заменить строки с 65 по 177 из поста №27.
Правда, из общей картины выпадает т.н. режим 1, т.к. он на самом деле не режим - а последовательный перебор нескольких режимов. Но и он записывается намного короче - по сути в фрагменте строк 51-53 настоящего поста нужно заменить сложение на сдвиг влево.
PS. Кстати, ТС, в строках 46-62 у Вас какая-то лажа творится в digitalWrite.
Не знаю, будет и полезно ТС,
Правда, из общей картины выпадает т.н. режим 1...
Не пойиуть... ИМХО. Проще надо, мягче.
Не знаю, будет и полезно ТС, но,, раз обещал, выкладываю вариант с двойным миганием:
Чтобы добавить одиночное мигание, по образу и подобию aeroLEDGroup2 делается aeroLEDGroup1. Описываются соответствующие объекты и включаются в общий массив.
Кстати, вариант с использованием переменной flags очень плодотворен в данном случае: позволяет одной строкой ввести массив режимов - битовых масок, а второй строкой - заменить строки с 65 по 177 из поста №27.
Правда, из общей картины выпадает т.н. режим 1, т.к. он на самом деле не режим - а последовательный перебор нескольких режимов. Но и он записывается намного короче - по сути в фрагменте строк 51-53 настоящего поста нужно заменить сложение на сдвиг влево.
PS. Кстати, ТС, в строках 46-62 у Вас какая-то лажа творится в digitalWrite.
Ваши сообщения, как и многие другие здесь я уже сохранил, в будущем к ним вернусь 100%. Учитывая, что я первый раз столкнулся с arduino да и вообще с этой тематикой - для меня многие слова до сих пор не понятные.
А строки 46-62... работает ну и ладно.
Зря Вы, сэр - человек старался. Но не получилось...
почему не получилось, мою задачу выполняет уже. Переключение есть, мигание есть.
p.s. не могу реализовать через ШИМ такое действие:
диод горит на 50% к примеру и потом он на 100мс загорается на 100% и снова горит на 50%.
Пробовал через ШИМ делать, но в режиме 50% горения он мерцает сильно.
диод горит на 50% к примеру и потом он на 100мс загорается на 100% и снова горит на 50%.
Пробовал через ШИМ делать, но в режиме 50% горения он мерцает сильно.
А чем Вас корёжит analogWrite()? Ну да, не на всех пинах корректно работает, так Вам не на всех и надо.
А если сильно мерцает - добавьте конденсатор.
Хотя туплю - более 100Гц человеческий глаз не видит. А тута - килогерцы.
Пробовал через ШИМ делать, но в режиме 50% горения он мерцает сильно.