Arduino регулировка яркости дисплея

Эксперимент № 3. ШИМ. Управление яркостью светодиода

Введение. Понятие ШИМ

Широко-импульсная модуляция (сокращенно ШИП) — это техника, используемая для преобразования аналогового сигнала в цифровой. Ведь компьютер не может выдавать аналоговый сигнал: выходы цифровой техники могут принимать только одно из двух значений – например, 0V или 5V. Поэтому используется счетчик высокой точности для кодирования аналогового сигнала в ШИМ-сигнал, которые – уже цифровой, поскольку в любой момент времени он принимает значение либо 5V (ВКЛ), либо 0V (ВЫКЛ). Напряжение подается на аналоговую нагрузку (например, светодиод, или сервопривод) в виде повторяющейся последовательности ВКЛ и ВЫКЛ. Получаемое выходное напряжение вычисляется по продолжительности сигналов ВКЛ и ВЫКЛ, по следующей формуле:

Выходное напряжение = (Время ВКЛ / время импульса) * максимальное напряжение.

Взгляните на рисунок ниже для лучшего понимания.

ШИМ имеет множество применений, например:

ШИМ имеет 3 параметра:

У Ардуино 6 портов, поддерживающие ШИМ: это цифровые пины 3, 5, 6, 9, 10 и 11.

В предыдущем примере мы подключили LED к цифровому пину. Теперь мы будем менять его яркость с помощью ШИМ-сигнала.

Часть 1. Управление яркостью светодиода

Необходимые компоненты

Схема

Соберем вот эту схему:

Обратите внимание, что мы подключаем LED к цифровому пину 11, которые поддерживает ШИМ. Если подключить к пину 12, то желаемого результата мы не получим.

Скетч

Результат

Часть 2. Управление яркостью с помощью потенциометра

Необходимые компоненты

Схема

Добавим на схему потенциометр:

Среднюю ногу потенциометра мы подключаем к аналоговому входу A0.

Скетч

Результат

Когда вы вращаете ручку потенциометра, вы видите в мониторе последовательно порта как меняется напряжение и яркость светодиода в соответствии с ним.

Объяснение

В программе мы считываем аналоговое значение, задаваемое потенциометром, и применяем его к цифровому ШИМ порту, к которому подключен светодиод. В соответствии с изменением ШИМ-сигналом, меняется и яркость светодиода.

Читайте также:  Регулировка ручника чери тиго

Обратите внимание, что максимальное значение для порта ШИМ – это 255, а аналогового порта – 1024. Поэтому считанное значение приходится делить на 4.

Заключение

В этом примере мы показали как использовать ШИМ, изменять напряжение на цифровом выходе, использовать потенциометр для управления нагрузкой.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

Управление яркостью подсветки 7-ми дюймового TFT LCD

Введение

В настоящее время я занимаюсь проектом на Arduino с использованием TFT дисплея. Недавно мне захотелось добавить в него, казалось бы, простую функцию — функцию регулировки яркости. Нашёл в документации к библиотеке для работы с TFT дисплеем (UTFT Library) нужный метод: setBrightness(br);

Написал весь код, сделал все, как надо. Решил проверить, но, к моему удивлению, ничего не происходило. Начал разбираться. Спустя два дня, заметил небольшое примечание к методу: «This function is currently only supported on CPLD-based displays.» То есть, данная библиотека, не поддерживает мой дисплей. Но я узнал, что сам дисплей регулировку яркости поддерживает. Очень долго искал в интернете способы настройки, но так и не нашёл, поэтому решил добиться своей цели сам, несмотря ни на что, и у меня это получилось. И вот решил поделиться с теми, кому это может пригодиться.

Что нам понадобится?

Разберёмся с железом

Открыв схему дисплея, можно увидеть, что на конвертер mp3032 идет три входа: LED-A, PWM, 5V. Изначально, PWM неактивен. Этот вход не используется совсем. Подсветка управляется LED-A.

Программная часть

Так как наша библиотека не может дать то, что нам надо, мы сами напишем нужную функцию. Для этого откроем документацию к контроллеру, управляющему дисплеем (SSD1963). Управление SSD1963 осуществляется с помощью специальных команд, которые передаются с Arduino через специальные выходы, которые описаны в документации:

Управление осуществляется следующим образом: Arduino выводит через RS (D/C в таблице) 0, если мы собираемся передавать команду, 1 — если данные. После передачи команды, RS переключается на 1, и далее передаются необходимые параметры. Все команды и параметры передаются через выходы D0-D7. Если у вас ATmega2560, то все эти восемь выходов объединены в порт C.

Читайте также:  Холостой ход на скутере регулировка

Итак, для начала, напишем функцию передачи данных по шине. Для удобства использования, я буду писать прямо в UTFT.h:

Также стоит обратить внимание на названия методов, так как в библиотеке уже могут встретиться функции с такими же именами.
Добавим две функции для вывода команд и данных:

Теперь сама настройка подсветки. Чтобы узнать, как осуществить все это, открываем документацию и ищем команду для настройки PWM.

Примечание:

PWM может управляться, с помощью DBC — система динамической регулировки яркости, но я, для простоты, не стал её использовать. Вы же, если хотите, можете найти необходимую информацию в той же документации.

Итак, вот, что нам надо:

То есть, сначала мы должны передать команду «0xBE», а потом, в качестве 3-х параметров передать частоту сигнала, длительность рабочего цикла, а также третий параметр, который определяет, включен DBC или нет (0x01 — выключен, 0x09 — включен).

Источник

Arduino регулировка яркости дисплея

В данной серии уроков, мы поможем вам разобраться с этим вопросом. И подробно расскажем о всех тонкостях данного процесса.

Например, это можно применить в уличном освещении. Когда на улице темнеет, освещение включается, как только начинает светать, так освещение выключается.

Но мы, в данном уроке, разберем плавное нарастание и уменьшение яркости. Это в основном можно использовать в робототехнике, а так же в домашних условиях, например в домашнем освещении. Хотя никто не запрещает этот метод использовать и на уличных фонарях.

Для определения яркости мы будем использовать датчик освещенности, который построен на принципе фоторезистора.

В основе метода, как и в предыдущем уроке, лежит широтно-импульсная модуляция, она же ШИМ. Если вы не читали предыдущий урок, то советую для начала прочитать эту статью.

Для этого урока понадобятся следующие компоненты:

Далее переходим к подключению всех элементов к Arduino. Подключаем наш фоторезистор к контроллеру по схеме ниже (используется резистор на 10 кОм). Эта схема делителя напряжения.

Читайте также:  Регулировка турбокорректора тнвд дизеля

У меня получилось так:

Далее подключаем Arduino к компьютеру и заливаем скетч (код).

Давайте разберемся с кодом.

Таким образом, после того как мы включили наше устройство, через каждые 20мсек, на Arduino (аналоговый вход А0) будут поступать значения, которые в данном случае характеризуют освещенность.

После того, как мы загрузили скетч, в Arduino IDE открываем «монитор последовательного порта» (кнопка в виде лупы на верхней панели справа).

И смотрим какие значения у нас выводятся. У меня эти значения колебались от 300 до 700 где-то.

При большой освещенности:

При малой освещенности:

Максимальное и минимальное значения освещения мы получили. Теперь давайте подключим светодиод к нашей схеме и начнем управлять его яркостью, в зависимости от показаний освещенности.

К уже имеющейся схеме, подключаем светодиод:

Вы можете использовать любой пин Arduino, в номере которого имеется знак тильды «

«. Именно в этих пинах может использоваться ШИМ.

После добавления светодиода, у меня получилось следующее:

И теперь давайте зальем вот такой код:

Как мы видим, к предыдущему скетчу добавилось несколько новых строк. В функции setup() мы настроили пин для светодиода, на этом я останавливаться не буду. А в функции loop() появились новые функции. Давайте разберемся для чего они.

Таким образом весь цикл будет таков:

Давайте же посмотрим, как будет работать наше устройство с таким алгоритмом:

Задание для самостоятельного выполнения:

Это можно реализовать, изменив одну строку программы. Но не забывайте, что менять параметры нужно обдуманно.

Четвертый урок проекта «Arduino с нуля» подошел к концу. Надеюсь тема была для вас полезной, и вы узнали что-нибудь новое. Также надеюсь, что при выполнении задания у вас не возникнет вопросов и вы справитесь самостоятельно.

Если же что-нибудь не будет получаться, или у вас появятся какие-либо вопросы, не стесняйтесь, и оставляйте их в комментариях или же на форуме.

Если Вам понравился наш урок, поделитесь им с друзьями.

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Настройки и регулировки