95

Программный ШИМ на arduino NANO

Приветствую всех!

Сегодня я хочу затронуть тему реализации программного ШИМ на Ардуино НАНО.

Бывают такие моменты, что надо ШИМ там где его нет, например на Аналоговых пинах.. почему нет?


Что такое ШИМ я затрагивал ТУТ, Напомню в краце: ШИМ - это отношение высокого и низкого сигнала за какой-либо период, который называется частотой ШИМ.

Картинка из интернетов:

Программный ШИМ на arduino NANO Arduino Nano V3, Шим, Программирование

И вот понадобилось мне сделать ШИМ там, где его нет в Ардуине.

Да простит меня сообщество, - не вижу смысла заливать код куда либо, если там несколько строк:

Программный ШИМ на arduino NANO Arduino Nano V3, Шим, Программирование

Котэ работает на прерывании по таймеру2, так как на нем висит Аппаратный ШИМ пинов 3 и 11, то никаких критичных "базовых" функций этим не испортим.

Значит в блоке setup просто переводим таймер в режим работы по CLK, т.е. 16 мГц, и разрешаем прерывание по таймеру.

Для включения ШИМ на каком-либо пину делаем так: в массиве пинов пишем пины какие надо, через запятую,.. ну там {13, A0, A7, 5} и тд...

Затем в Массиве значений ШИМ записываем им всем начальное значение, лучше нули, ... т.е. {0, 0, 0, 0} - 4 Пина юзаем, 4 значения записали,.. хотя наверное можно вообще не писать, они и так при инициализации нулями будут..

Ну а дальше в цикле программы, когда нужно записываем в переменную нужное значение, т.е. надо на пин A0 подать 50%, - пишем PWM_pins[1] = 127; обьясняю: в 1 ячейке массива пинов записан A0,.. 127 - это половина от 255 (0-255 значения). Вот и всё.

Надеюсь кому поможет.

Arduino & Pi

1.5K поста20.8K подписчика

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Вы этого хотели? да?

Специально для желающих, 50 Гц кому-то было мало?, ок... держите 16мГц... надеюсь хватит.

analogWrite - не нравится, хочется писать в ПОРТЫ? - Да ради бога...

Иллюстрация к комментарию
раскрыть ветку (3)
0
Автор поста оценил этот комментарий

не подскажешь такую вещь...

какой самый простой способ получить текстовый 80х24 символов вывод на ардуине?

хотел я получить реальный терминал на основе ардуины. но проблема в том, что на ТВ например памяти маловато (ну или надо брать ардуину с большим ОЗУ, и то не факт что уложусь в норм разрешение), ВГА подключается только какими-то дикими методами (ну или брать более быструю ардуину...), тфт-дисплеи - стоят денег и не слишком быстры зачастую

при этом в идеале для обработки эскейп-последовательностей было бы неплохо весь массив держать в памяти (и при таком раскладе тратить много памяти на саму генерацию видео не очень хочется)
вот и не знаю, в каком направлении копать, что б оптимально было

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Raspbery Pi 3 оптимально, сразу HDMI выход. Ардуина шлет данные на Raspbery Pi тот показывает. Или более дешевые Banana Pi.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

э не, идея как раз в том что б ардуина была как vt100, мб именно к распберри на подключение
просто выводить инфу на экран ПК и так можно....

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку