Статьи » Разработки |
2018-02-12 в 19:53 (последнее изменение 2023-11-09 в 11:02)
В статье познакомлю вас со способом, как можно вывести некоторую информацию на LCD дисплей разрешением 128x64 пикселей и контроллере ST7920 с помощью Arduino Mega. Будем выводить температуру и влажность датчиком DHT 11, время и дату с помощью модуля реального времени, уровень освещения двумя аналоговыми датчиками освещенности на фоторезисторах. Начнем с подключения библиотек. Код
#include "U8glib.h" // библиотека для работы с LCD дисплеем
#include "dht11.h" // библиотека для работы с датчиком влажности и температуры #include <Wire.h> // библиотека для работы с I2C интерфесом #include "RTClib.h" // библиотека для работы с модулем часов реального времени (RTC - Real_time_clock) Библиотека U8glib - скачать Далее производим объявление переменных. Код
RTC_DS1307 rtc;
dht11 DHT; // Объявление переменной класса dht11 Код
int chk;
#define DHT11_PIN 12 // Датчик DHT11 подключен к цифровому пину номер 12 const int ledlight = 9; // К 9 выводу подключен MOSFET модуль для включения светодиодной ленты const int sensor1 = 2; // Первый датчик освещенности подключен к аналоговому пину 2 const int sensor2 = 0; // Второй датчик освещенности подключен к аналоговому пину 0 Код
U8GLIB_ST7920_128X64_1X u8g( 13, 11, 10); // Создаём объект u8g для работы с дисплеем, указывая номер вывода CS для аппаратной шины SPI
Следующий шаг - назначение вводов и выводов. Код
pinMode(ledlight, OUTPUT); // Определяем переменную ledlight как вывод
pinMode(sensor1, INPUT); // Определяем переменную sensor1 как ввод Теперь нужно сделать прорисовку на дисплее. Сверху делаем белую строку сплошной закраски. Код
u8g.setColorIndex(1); // Определяем закрасить (1) или нет (0)
u8g.drawBox(0, 0, 128, 10); // Рисуем прямоугольник 128х10 пикселей в самом верху Устанавливаем шрифт, которым будем писать в этой самой строке. Его, кстати, тоже нужно скачать и поместить в папку библиотеки дисплея. Шрифт LCD дисплея u8g_font_5x8 - скачать. Код
u8g.setFont(u8g_font_5x8);
Нужно указать, что следующие символы мы будем писать на белом фоне отключая пиксели (0). Код
u8g.setColorIndex(0);
В этой строке мы выведем время и дату. Код
u8g.setPrintPos( 2, 8); u8g.print(now.day() / 10); u8g.setPrintPos( 101, 8); u8g.print(now.hour() / 10); Заметьте, каждому символу в строке попиксельно указано, где он будет находиться. Теперь настроим вывод температуры и влажности. Все это уже будет написано другим шрифтом 6х10. Шрифт LCD дисплея u8g_font_6x10 - скачать. Код
u8g.setFont(u8g_font_6x10);
Код
chk = DHT.read(DHT11_PIN);
Код
u8g.setPrintPos( 3, 20); u8g.print("Humidity"); u8g.setPrintPos( 3, 31); u8g.print("Temp"); u8g.setPrintPos( 3, 42); u8g.print("Light"); И тут добавляем число, которое в процентом отношении показывает уровень освещенности. Подробнее об этом уже рассказывалось. Код
u8g.setPrintPos( 65, 43); u8g.print("=");
int val = analogRead(sensor2); И вот что должно получиться. Код
#include "U8glib.h" \\библиотека для работы с LCD дисплеем RTC_DS1307 rtc; int chk; U8GLIB_ST7920_128X64_1X u8g( 13, 11, 10); // Создаём объект u8g для работы с дисплеем, указывая номер вывода CS для аппаратной шины SPI void setup() { pinMode(ledlight, OUTPUT); if (! rtc.begin()) { if (! rtc.isrunning()) { } void loop () { u8g.setPrintPos( 101, 8); u8g.print(now.hour() / 10); chk = DHT.read(DHT11_PIN); u8g.setPrintPos( 3, 20); u8g.print("Humidity"); u8g.setPrintPos( 3, 31); u8g.print("Temp"); u8g.setPrintPos( 3, 42); u8g.print("Light"); u8g.setPrintPos( 65, 43); u8g.print("="); int val = analogRead(sensor2);
Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 29851. Оценка статьи: 5.0 из 5. Уже оценило 7 читателей |
Всего комментариев: 0 | |