Bt-teh.ru

БТ Тех
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Z-LCD Keypad Shield для Arduino сделай сам (DIY)

Z-LCD Keypad Shield для Arduino сделай сам (DIY)

В данной статье мы проведем рестайлинг DIY платы, представляющей из себя Шилд имеющий на своем борту символьный дисплей размерности 16×2, а также 5 кнопок (не считая кнопку RESET) для отладки различных проектов на базе Arduino.

Встречайте DIY Z-LCD Keypad Shield V2

Внешний вид передней стороны

Внешний вид нижней части

Функционал

Плата полностью повторяет функционал заводского шилда. Коротко расскажем о её функционале.

Итак, как уже говорилось, на своем борту плата имеет символьный дисплей. Размерность данного дисплея 16х2 символов (ячеек). Работа происходит в четырех битном режиме. Для настройки контрастности экрана служит подстроечный резистор. Для подключения пяти кнопок, благодаря не хитрой схеме с использованием резисторов, используется всего один аналоговый вход. На плате установлен сенсор шилд для аналоговых входов, в верхнем углу платы добавлены дополнительные разъемы +5V и GND. Как и на заводском варианте, имеется разъем для подключения блютуз модуля.

Плата также умеет программно регулировать яркость подсветки, для этого база транзистора соединяется с выводом D9 как показано на рисунке 1. В программном коде на данный вывод подается ШИМ сигнал, от скважности которого и зависит яркость подсветки. Однако, не всем нужна регулировка яркости, да и лишний ШИМ вывод всегда может пригодиться в проекте. В связи с этим, на плате предусмотрена возможность его отключения. Для этого необходимо кинуть перемычку между другими контактными площадками как показано на рисунке 2, тем самым подключив базу транзистора к линии +5V и включив подсветку на максимум.

Выбор подсветки

Задействуемые пины Arduino:

Выводы отвечающие за подключение дисплея:

D2, D3, D4, D5, D6, D7

Выводы отвечающие за яркость подсветки дисплея:

D9 при использовании регулировки подсветки

Выводы отвечающие за подключение кнопок:

Подключение к Arduino

Шилд полностью совместим с программными кодами для заводского варианта, единственное что потребуется — подправить строку инициализации пинов.

LiquidCrystal lcd(8, 9, 4, 5, 6, 7 ); заменить на LiquidCrystal lcd(2, 3, 4, 5, 6, 7 );

Скачать архив

В архиве лежит шаблон под ЛУТ, Eagle файлы и список деталей

Открываем изображение => Печать => Во всю страницу

Для облегчения распайки smd компонентов с обратной стороны платы, где нет маркировки, приведу картинку.

/DIY_Z-LCD_Keypad_Shield/Z-LCD_Keypad_Shield_SMD_installation.jpg

А как же комментарии?

В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.

Форум arduino.ua

Добрый день. Прошу пнуть в нужном направлении. Есть связка ардуино нано, LCD 1602  на шине I2C, DHT22, часы реального времени.

Подсветка включается посредством команды lcd.backlight(); Отключить ее можно командой lcd.noBacklight();
Основную задумку по коду реализовал, кроме вкл. и выкл. подсветки кнопкой. Я перечитал много тем, примеров, но так и не нашел как реализовать это. Если не сложно подскажите пожалуйста. Буду очень благодарен.

  • Цитувати

#2 2019-01-18 19:53:35

Re: Управление подсветкой дисплея 1602 I2C

только аппаратно — купите дисплей и модуль i2с отдельно.
при установке модуля ноги под подсветку не подключаете (я их просто откусил) , паяете провода под кнопку или шим (для регулировки яркости подсветки).

  • Цитувати

#3 2019-01-19 00:39:05

Re: Управление подсветкой дисплея 1602 I2C

Я думал про такой вариант, но не хотелось его применять.
А если библиотеку поковырять? Может можно там чего подправить?

Читать еще:  Как отрегулировать пластиковое окно трет

Остання редакція Marshall Kross (2019-01-19 00:39:42)

  • Цитувати

#4 2019-01-19 10:33:08

Re: Управление подсветкой дисплея 1602 I2C

ну попробуйте, вам же никто не запрещает и  не мешает.

  • Цитувати

#5 2019-01-19 11:33:16

Re: Управление подсветкой дисплея 1602 I2C

Подсветка включается посредством команды lcd.backlight(); Отключить ее можно командой lcd.noBacklight();
Основную задумку по коду реализовал, кроме вкл. и выкл. подсветки кнопкой. Я перечитал много тем, примеров, но так и не нашел как реализовать это. Если не сложно подскажите пожалуйста. Буду очень благодарен.

а в чем проблема если кнопкой (задействовать один вход контроллера) запускать команды .

  • Цитувати

#6 2019-01-22 15:30:14

Re: Управление подсветкой дисплея 1602 I2C

только аппаратно — купите дисплей и модуль i2с отдельно.
при установке модуля ноги под подсветку не подключаете (я их просто откусил) , паяете провода под кнопку или шим (для регулировки яркости подсветки).

Увы но это не так. Вопрос вполне решается программно. Просто нужно было некоторое время для понятия сути.

  • Цитувати

#7 2019-01-22 15:35:52

Re: Управление подсветкой дисплея 1602 I2C

Подсветка включается посредством команды lcd.backlight(); Отключить ее можно командой lcd.noBacklight();
Основную задумку по коду реализовал, кроме вкл. и выкл. подсветки кнопкой. Я перечитал много тем, примеров, но так и не нашел как реализовать это. Если не сложно подскажите пожалуйста. Буду очень благодарен.

а в чем проблема если кнопкой (задействовать один вход контроллера) запускать команды .

Проблема была в непонимании сути и как следствие реализации желаемого. В итоге после курения вики получился такой код:

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

Управление Яркостью подсветки дисплея 1602 происходит через полевой транзистор мне так больше нравится.Раньше я такими экранами 1602 i2c управлял биполярными транзисторами типа кт972 можно управлять любыми подходящими по нашим характеристикам.Я полевые транзисторы беру с материнских плат которые давно сгорели.В материнских платах есть много полезных деталей которые могут пригодится в быту или при создании своих проектов на ардуино.Так и дисплей 1602 arduino я применяю во всех своих самоделках.Как на ардуино так и на esp8266 который стоит в умном доме и следит за солнечными панелями и инвертором,а показания выводит на экран 1602.
Раньше подсветка горела всегда и яркость дисплея была очень сильной и мешала спать ночью.Потом я сделал Управление Яркостью Дисплея на транзисторе и спать стало намного лучше т.к. подсветка не била по глазам и не освещала комнату.Как сделать управление яркостью дисплея я показываю в видео и показываю на схеме.Яркость дисплея также можно изменить просто впаяв резистор подобрав его номинал.регулировка яркости ардуино можно сделать прописав код в самом скетче,но я писать код не умею и мне проще самому спаять схему.подсветка lcd 1602 состоит из обычного светодиода который управляется либо через странзистор в случае i2c модуля или резистором если не использовать модуль.регулировка подсветки lcd 1602 осуществляется простыми способами своими руками глядя на представленную схему в видео.регулировка подсветки lcd 1602 осуществляется аналоговым регулятором которым выступает в качестве потенциометра фоторезистор.
Фоторезистор это датчик, электрическое сопротивление которого меняется в зависимости от интенсивности падающего на него света. Чем интенсивней свет, тем больше создается свободных носителей зарядов и тем меньше становится сопротивление элемента.
Транзистор радиоэлектронный компонент из полупроводникового материала, обычно с тремя выводами[1], способный от небольшого входного сигнала управлять значительным током в выходной цепи, что позволяет его использовать для усиления, генерирования, коммутации и преобразования электрических сигналов. В настоящее время транзистор является основой схемотехники подавляющего большинства электронных устройств и интегральных микросхем.

Читать еще:  Нет регулировки скорости кулера процессора

Транзисторами также называются дискретные электронные приборы, которые, выполняя функцию одиночного транзистора, имеют в своем составе много элементов, конструктивно являясь интегральной схемой, например составной транзистор или многие транзисторы большой мощности[2].

Транзисторы по структуре, принципу действия и параметрам делятся на два класса — биполярные и полевые (униполярные). В биполярном транзисторе используются полупроводники с обоими типами проводимости, он работает за счет взаимодействия двух, близко расположенных на кристалле, p-n переходов и управляется изменением тока через база-эмиттерный переход, при этом вывод эмиттера всегда является общим для управляющего и выходного токов. В полевом транзисторе используется полупроводник только одного типа проводимости, расположенный в виде тонкого канала, на который воздействует электрическое поле изолированного от канала затвора[3], управление осуществляется изменением напряжения между затвором и истоком. Полевой транзистор, в отличие от биполярного, управляется напряжением, а не током. В настоящее время в аналоговой технике доминируют биполярные транзисторы (БТ) (международный термин — BJT, bipolar junction transistor). В цифровой технике, в составе микросхем (логика, память, процессоры, компьютеры, цифровая связь и т. п.), напротив, биполярные транзисторы почти полностью вытеснены полевыми. В 1990-е годы был разработан новый тип гибридных биполярно-полевых транзисторов — IGBT которые сейчас широко применяются в силовой электронике

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

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

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

Что нам понадобится?
  • В качестве основы, я использовал Frearduino ADK v.2.2 на базе процессора ATmega2560
  • TFT LCD Mega Shield v.2.2
  • Сам дисплей — 7″ TFT LCD SSD1963 (Тут вы найдёте его описание, а так же необходимую документацию)
  • UTFT Library — универсальная библиотека для работы с TFT дисплеями (Найти саму библиотеку, а так же документацию можно тут)
  • Паяльник
Разберёмся с железом

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

Читать еще:  Прибор для регулировки напряжения в сети

Если взглянуть на обратную сторону дисплея, можно найти область, подписанную как «Backlight control» . Здесь то мы и найдём эти самые входы. Для управления подсветкой методом ШИМ, необходимо сделать так, чтобы все было наоборот: LED-A — неактивен, PWM — активен. Для этого придётся перепаять перемычку. Вот фото того, что должно получиться:

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

Так как наша библиотека не может дать то, что нам надо, мы сами напишем нужную функцию. Для этого откроем документацию к контроллеру, управляющему дисплеем (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 — включен).

Для регулировки самой яркости, необходимо изменять лишь частоту рабочего цикла. Так как мы передаём данные в виде одного байта, то значения цикла могут быть от 0 до 255. Я решил определить 9 уровней яркости (от 0 до 8). Следовательно, все 256 значений нужно разбить на 9 ступеней. Но также стоит обратить внимание на то, что если ступени будут равными, то яркость будет изменяться не так плавно, как хотелось бы. То есть уже, к примеру, на 4-ой ступени, яркость будет почти максимальной, а с 4-ой по 8-ую ступень будет изменять почти незаметно. Учитывая это, я решил использовать геометрическую прогрессию со знаменателем 2. То есть яркость будет вычисляться по следующей формуле: (2 ^ lvl) — 1 , где lvl — уровень яркости от 0 до 8. Обратите внимание, что так как значения начинаются с нуля, то необходимо вычесть единицу. Конечно, вы можете выбрать ступени и их значения сами, но я привёл вот такой, довольно просто пример. Теперь сам код:

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector