Как увеличить количество ШИМ

правильно собрать железо

Вопросы от новичков
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#1

Сообщение Rishelie » 10.03.2018{, 23:48}

Привет честной компании!
Ну, как водится, сами мы не местные, помогите, кто чем может... :)

Нужно сделать такую штуку: 8 кнопок с LED подсветкой. В режиме ожидания кнопки "гирляндят" по всякому, а при нажатии какой то одной, должен появиться некий другой эффект, каким либо образом, завязанный на эту кнопку. Ну типа улетающий из кнопки огонек, пролетающий через панель и возвращающийся взад. Ну как пример.

Сделать хочется с плавностями, то бишь ШИМ на огоньки пустить. Контроллер - Нано.
Собственно и вопрос отсюда. Даже два.
Главный вопрос. Как наиболее оптимально увеличить количество выходов ШИМ до 8 ? Почитал, поискал, есть некие программные алгоритмы, есть через дополнительную микросхему. Сам я в программировании ноль, поэтому мне лучше второй вариант. Хотелось бы узнать у знатоков, какой лучше микросхемой? А может еще какой вариант есть, не известный чайнику?

Ну и второй вопрос, он как бы сопутствующий, вытекающий из незнания первого. Как грамотно распределить выходы Ардуино? Например из 14 цифровых, я использую 6 под ШИМ-выходы, остается 8 на входы. Из 8 аналоговых можно взять 6 на использование под цифровые входы... Ну как бы все ясно, но в разрезе необходимости увеличить количество ШИМ, и незнания, как это делается, возникает вопрос, а правильно ли это?
Ну т.е. интересует грамотная конфигурация выходов.

Кнопки LED на 12В, но работают и от 5В. Ток ниже 10мА, поэтому планирую прямо на Ардуино вешать. Работать должно всегда, на протяжении оставшейся жизни. :) Кроме перебора светоэффектов и реагирования на нажатие, других функций не будет. Если кто даст какие либо подсказки для качественной работы этого космического агрегата - буду благодарен. :)

whitevip
Лейтенант
Сообщения: 492
Зарегистрирован: 01.04.2017{, 20:25}
Репутация: 5
Имя: Имя

Как увеличить количество ШИМ

#2

Сообщение whitevip » 11.03.2018{, 00:46}

Я думаю по расширение ШИМ выходов, это взять ардуино мегу или 2 шт ардуино любых дапустим Ваших НАНО соединив их по юарту. :yes:
А еще лучше возьмите адресную светодиодную ленту и подключите ее, у нее даже блок есть тут на форуме уже с готовыми разными эффектами. :meowth:
:smile37:

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#3

Сообщение Rishelie » 11.03.2018{, 00:58}

Ну как вариант, две Наны, отложу в голове. Хотя на мое ИМХО перебор для подобного устройства.

А адресные ленты при чем тут? Я же говорю - кнопки с подсветкой.

whitevip
Лейтенант
Сообщения: 492
Зарегистрирован: 01.04.2017{, 20:25}
Репутация: 5
Имя: Имя

Как увеличить количество ШИМ

#4

Сообщение whitevip » 11.03.2018{, 01:00}

Rishelie писал(а):
11.03.2018{, 00:58}
А адресные ленты при чем тут? Я же говорю - кнопки с подсветкой.
их можно и там приминить с эффекиами.

Отправлено спустя 1 минуту 30 секунд:
нужно или купить эти светодиоди или выпаять из ленты, далее блок есть тут на нем можно разные эффекты сделать и даже шим ненужно увеличивать
:smile37:

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#5

Сообщение Rishelie » 11.03.2018{, 01:11}

whitevip писал(а):
11.03.2018{, 01:01}
нужно или купить эти светодиоди или выпаять из ленты, далее блок есть тут на нем можно разные эффекты сделать и даже шим ненужно увеличивать
Нет, этот вариант не подходит.
Кнопки уже готовые.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Как увеличить количество ШИМ

#6

Сообщение Phazz » 11.03.2018{, 08:10}

Драйвер TLC5940NT поможет

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#7

Сообщение Rishelie » 11.03.2018{, 13:37}

Phazz писал(а):
11.03.2018{, 08:10}
Драйвер TLC5940NT поможет
Уже едет с Алиэкспресса.
Я посмотрел темы тут, на форуме, по этому чипу, темы вроде как не окончены. Не ясно, есть результат, или нет. Из тех, кто занимался, можете ткнуть на отработанный блок?
В темах, по этому чипу, блок имеет два входа, "канал" и "яркость". Ни одного выхода. А вот по даташитам, по подключениям, TLC5940NT, использует, как минимум 4 пина Ардуино. В описании ПБ нет назначаемых пинов. Не могу въехать, как собственно подключать чип к Ардуино? Где то, наверно, есть описание, только я его пока не нашел. Не может же быть так, что подключение только к определенным пинам Ардуино. Не логично вроде.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Как увеличить количество ШИМ

#8

Сообщение Phazz » 11.03.2018{, 14:15}

Я так понимаю выходы там не меняются, подключение по схеме.
СпойлерПоказать
breadboard-arduino-tlc5940-1-.png

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Как увеличить количество ШИМ

#9

Сообщение Sancho » 11.03.2018{, 14:21}

Вопрос- дисплеи и иже тормоза есть в проекте?
Если нет - вопрос в количестве пинов, но вроде по описанию хватает.
Сделать подобие шима, чисто для яркости, програмно вообще не проблема.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#10

Сообщение Rishelie » 11.03.2018{, 15:18}

Phazz писал(а):
11.03.2018{, 14:15}
Я так понимаю выходы там не меняются, подключение по схеме.
Я видел эту схему.
Так я вот и задаю этот же вопрос. Вот эти пины: 3,9,10,11,13 - они разве в Ардуино как то завязаны на указанные сигналы\функции? Это вроде как в программе (ПБ) должно задаваться? Или это на уровне библиотеки какой либо задается? Но библиотеки под этот ЧИП вроде не встречал в описаниях. Я просто на уровне чайника. Хотя проект на столе один сделал, но знаний все равно мало.
Sancho писал(а):
11.03.2018{, 14:21}
Вопрос- дисплеи и иже тормоза есть в проекте?
Если нет - вопрос в количестве пинов, но вроде по описанию хватает.
Нет, это вызывная панель на этаж. 8 квартир. Железо, кнопки, контроллер замка, аля "Антиклон", - это все уже реализовано, отдельный контроллер, от IronLogic-a. Купил кнопки с подсветкой, красивые, ну и задумка, что бы панель "гирляндила" сама по себе и "гирляндила" на кнопку, когда звЕнишь в какую либо квартиру. Т.е. по уму, от Ардуино нужно 8 выходов и 8 входов. Все, типа пучком, но вот ШИМа захотелось, красоты. Все будет в дверь похоронено, поэтому хочется сразу сделать надежно.
Понять с железом, потом уже придумывать всякие эффекты.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Как увеличить количество ШИМ

#11

Сообщение Sancho » 11.03.2018{, 15:22}

Ок, понято.
Завтра сделаю блочок а-ля шим, вход будет 0-250.
отрабатывает по алгоритму брезенхема, в каждом цикле.
Железо готово к тесту?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#12

Сообщение Rishelie » 11.03.2018{, 15:33}

Sancho писал(а):
11.03.2018{, 15:22}
Ок, понято.
Завтра сделаю блочок а-ля шим, вход будет 0-250.
отрабатывает по алгоритму брезенхема, в каждом цикле.
Железо готово к тесту?
Ахренеть! Неожиданная приятность!
Да, железо готово. Осталось провода по нужным пинам припаять. Не паял, по озвученной причине.
Этот ПБ позволит (оставит место) под отработку кнопок? Я, просто почитал, как программно люди увеличивают количество ШИМ, и везде есть сноска, что такая программа занимает почти весь ресурс контроллера.
Тут, как бы гирлянда, но с небольшим нюансом. Под нюанс останется место? :)

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Как увеличить количество ШИМ

#13

Сообщение Sancho » 11.03.2018{, 15:43}

Ресурса займёт с булькин нос. фигурально выражовываясь. :)
Используется цикл, точнее время цикла - есть 1, нет 1. Почитайте, занимательно и интересно!
Поэтому, если есть замедляющие работу(увеличивающее время цикла) процессы - дисплеи, датчики тмп/влж, и т.д. то не фонтан.
В Вашем случае их нет - свобода!!!
Завтра, готовьтесь к тесту, надеюсь, в первой половине дня...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#14

Сообщение Rishelie » 11.03.2018{, 16:05}

Sancho писал(а):
11.03.2018{, 15:43}
Используется цикл, точнее время цикла - есть 1, нет 1. Почитайте, занимательно и интересно!
Я не совсем понял, про что почитать? Что такое цикл, я, в принципе, знаю. Вы о каком то нюансе в написании программы? Так мне до нюансов, как до Китая раком. :) Вот FBD программирование - прям находка. Столкнулся с таким способом на контроллере ALPHA XL Mitsubishi, и понял, что и моя дорожка к контроллерам, наконец то, открылась :)
Sancho писал(а):
11.03.2018{, 15:43}
Завтра, готовьтесь к тесту, надеюсь, в первой половине дня...
Всегда готов!!! :)

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Как увеличить количество ШИМ

#15

Сообщение Sancho » 11.03.2018{, 16:30}

Rishelie,
Я о простом и великом одновременно - алгоритме Брезенхема.
Пожалуйста, почитайте. Обязательно, для понятия простых, гениальных и элементарных вещах.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Как увеличить количество ШИМ

#16

Сообщение Sancho » 12.03.2018{, 15:53}

Rishelie,
Собственно, как и обещал.
Тестовый пример с блоком.
Просьба о тестах отписаться.
Вложения
Брезенхем_PDM_v1.flp
(83.05 КБ) 62 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Яйкс
Рядовой
Сообщения: 49
Зарегистрирован: 23.01.2018{, 13:14}
Репутация: 5
Откуда: Москва
Имя: Сергей

Как увеличить количество ШИМ

#17

Сообщение Яйкс » 12.03.2018{, 17:42}

Rishelie писал(а):
11.03.2018{, 13:37}
Уже едет с Алиэкспресса.
Я бы PCA9685 взял. В FL уже есть штатный блок для работы с этой платой. Есть возможность подключать несколько плат по одним проводам.

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#18

Сообщение Rishelie » 12.03.2018{, 20:51}

Sancho писал(а):
12.03.2018{, 15:53}
Тестовый пример с блоком.
Просьба о тестах отписаться.
Только добрался до стола. :) Обязательно отпишусь. Про Брезенхема почитал. Суть уловил.
Яйкс писал(а):
12.03.2018{, 17:42}
Я бы PCA9685 взял. В FL уже есть штатный блок для работы с этой платой.
Н-да, действительно, уже все есть. Не знал. Заказал на Али, на всякий случай. Пусть будет.

Отправлено спустя 1 час 52 минуты 18 секунд:
Sancho,
Что бы не тянуть.
Пример программы с вашим блоком работает.
Буду делать дальше эффекты, по ходу отпишусь.
Я так понимаю, их (Блоков) может быть по количеству выходов Ардуино?

Спасибо!!!

Отправлено спустя 2 часа 17 минут 39 секунд:
Sancho,
- Разрешите доложить, товарищ майор!? :)
Докладаю о промежуточном результате.
Видео по ссылке, ибо всем оно не надо.
Попробовал все 8 LED зажечь одновременно. Суммарно, от 12В кушает 60мА. Так что вполне можно вешать на Ардуино напрямую.
Кнопки пока не вешал в проект, только заложил. Добавил защиту от зависания.
На данный момент замечаний нет, все пучком. Чешу потихоньку репу над эффектами.

Панель-В3.flp
(205.88 КБ) 48 скачиваний

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Как увеличить количество ШИМ

#19

Сообщение Rishelie » 13.03.2018{, 16:04}

Sancho,
Появилась проблема. При попытке ввести в схему второй блок ( по разному подключал), компиляция выдает ошибку.
Наверно много лишнего будет.
Этот блок должен быть один в программе?
СпойлерПоказать
Arduino: 1.8.1 (Windows 10), Плата:"Arduino Nano, ATmega328P"

c:\Program Files (x86)\FLProg\ideV2\arduino-builder -dump-prefs -logger=machine -hardware c:\Program Files (x86)\FLProg\ideV2\hardware -hardware C:\Users\ххх\AppData\Local\Arduino15\packages -tools c:\Program Files (x86)\FLProg\ideV2\tools-builder -tools c:\Program Files (x86)\FLProg\ideV2\hardware\tools\avr -tools C:\Users\ххх\AppData\Local\Arduino15\packages -built-in-libraries c:\Program Files (x86)\FLProg\ideV2\libraries -libraries C:\Users\ххх\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10801 -build-path C:\Users\ххх\AppData\Local\Temp\arduino_build_481936 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.1.1 -prefs=runtime.tools.avr-gcc.path=C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2 -prefs=runtime.tools.avrdude.path=C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino9 -verbose C:\Users\Xxx\AppData\Local\Temp\flprog\pr7\pr7.ino
c:\Program Files (x86)\FLProg\ideV2\arduino-builder -compile -logger=machine -hardware c:\Program Files (x86)\FLProg\ideV2\hardware -hardware C:\Users\Xxx\AppData\Local\Arduino15\packages -tools c:\Program Files (x86)\FLProg\ideV2\tools-builder -tools c:\Program Files (x86)\FLProg\ideV2\hardware\tools\avr -tools C:\Users\Xxx\AppData\Local\Arduino15\packages -built-in-libraries c:\Program Files (x86)\FLProg\ideV2\libraries -libraries C:\Users\Xxx\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10801 -build-path C:\Users\Xxx\AppData\Local\Temp\arduino_build_481936 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.1.1 -prefs=runtime.tools.avr-gcc.path=C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2 -prefs=runtime.tools.avrdude.path=C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino9 -verbose C:\Users\Xxx\AppData\Local\Temp\flprog\pr7\pr7.ino
Using board 'nano' from platform in folder: C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20
Using core 'arduino' from platform in folder: C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20
Detecting libraries used...
"C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20\cores\arduino" "-IC:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20\variants\eightanaloginputs" "C:\Users\Xxx\AppData\Local\Temp\arduino_build_481936\sketch\pr7.ino.cpp" -o "nul"
Generating function prototypes...
"C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20\cores\arduino" "-IC:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20\variants\eightanaloginputs" "C:\Users\Xxx\AppData\Local\Temp\arduino_build_481936\sketch\pr7.ino.cpp" -o "C:\Users\Xxx\AppData\Local\Temp\arduino_build_481936\preproc\ctags_target_for_gcc_minus_e.cpp"
"c:\Program Files (x86)\FLProg\ideV2\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\Xxx\AppData\Local\Temp\arduino_build_481936\preproc\ctags_target_for_gcc_minus_e.cpp"
Компиляция скетча...
"C:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20\cores\arduino" "-IC:\Users\Xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20\variants\eightanaloginputs" "C:\Users\Xxx\AppData\Local\Temp\arduino_build_481936\sketch\pr7.ino.cpp" -o "C:\Users\Xxx\AppData\Local\Temp\arduino_build_481936\sketch\pr7.ino.cpp.o"
pr7:6: error: redefinition of 'int temp_01'

int temp_01, error_01_5897129_2;

^

C:\Users\Xxx\AppData\Local\Temp\flprog\pr7\pr7.ino:3:7: note: 'int temp_01' previously declared here

int temp_01, error_01_5897129_1;

^

exit status 1
redefinition of 'int temp_01'
Панель-В5.flp
(345.27 КБ) 57 скачиваний

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Как увеличить количество ШИМ

#20

Сообщение Sancho » 13.03.2018{, 16:31}

Найдено, починено.
Не нравилось FLProg как я описываю переменные. :haha:

Код: Выделить всё

// я писал:
int peremenay_1, peremenay_2;
// надо писать:
int peremenay_1;
int peremenay_2;
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Ответить

Вернуться в «Начинающим»