Статьи » Разработки |
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);
Посмотрите еще эти статьи
Управляем вытяжкой на кухне пультом от телевизора на Arduino Вывод картинки на дисплей 128x64 Детектор микронаушников Ethernet shield w5100 таймер включения на веб странице Вывод различных данных на дисплей LCD 128x64 Подключение датчиков газа и дыма серии MQ к Arduino Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 27954. Оценка статьи: 5.0 из 5. Уже оценило 7 читателей |
Всего комментариев: 1 | ||
|