Arduino:Примеры/Гайд по использованию 0,96-дюймового OLED-дисплея с Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Гайд по использованию 0,96-дюймового OLED-дисплея с Arduino[1]
В этой статье объясняется, как использовать маленький 0,96-дюймовый OLED-дисплей вместе с платой Arduino.
Описание
На то, как выглядит OLED-дисплей, можно посмотреть на фото ниже:
Это очень маленький дисплей, его размеры составляют 25 на 14 мм, а разрешение – 128 на 64 пикселя. Подсветка не требуется. Данная модель – монохромная (т.е. только с черным и белым цветами), но есть и такие, что поддерживают несколько цветов.
Кроме того, этот дисплей использует коммуникацию типа I2C. Это значит, что для коммуникации с Arduino ему нужно всего два контакта.
Подключение контактов
В подключении OLED-дисплея к Arduino нет ничего сложного:
- Контакт Vin на дисплее – к контакту 5V на Arduino
- Контакт GND – к контакту GND
- Контакт SCL – к контакту A5
- Контакт SDA – к контакту A4
Если вы используете не Uno, а другую модель Arduino, то у нее контакты интерфейса I2C могут быть другими:
- Arduino Nano: SDA – A4, SCL – A5
- Arduino MEGA и Arduino Leonardo: SDA – контакт 20, SCL – контакт 21
Библиотеки
Чтобы управлять OLED-дисплеем, вам понадобятся библиотеки «adafruit_GFX.h» и «adafruit_SSD1306.h».
Установка библиотеки «adafruit_GFX.h»
- Кликните здесь, чтобы скачать ZIP-архив с библиотекой.
- Распакуйте этот архив. В итоге у вас должна получиться папка под названием «Adafruit-GFX-Library-master».
- Переименуйте ее на «Adafruit_GFX_Library». Не забудьте поменять знаки тире на нижние подчеркивания.
- Переместите папку «Adafruit_GFX_Library» в папку «libraries» IDE Arduino.
- Перезапустите IDE Arduino.
Установка библиотеки «adafruit_SSD1306»
- Кликните здесь, чтобы скачать ZIP-архив с библиотекой.
- Распакуйте этот архив. В итоге у вас должна получиться папка под названием «Adafruit_SSD1306-master».
- Переименуйте ее на «Adafruit_SSD1306».
- Переместите папку «Adafruit_SSD1306» в папку «libraries» IDE Arduino.
- Перезапустите IDE Arduino.
Функции для рисования и печати текста на дисплее
Ниже – несколько функций, которые можно использовать в своих скетчах для написания текста и рисования примитивной графики:
- display.clearDisplay() – стирает все пиксели
- display.drawPixel(x,y, color) – помещает пиксель в координаты X и Y
- display.setTextSize(n) – задает размер шрифта (поддерживаются размеры от «1» до «8»)
- display.setCursor(x,y) – задает координаты, с которых начнется печать текста
- display.print(“сообщение”) – печатает символы
Скетч: Отображение на OLED-дисплее данных о температуре и влажности
Цель этого проекта – ознакомить вас с тем, как работает OLED-дисплей. Температура и влажность будут измеряться при помощи датчика DHT11. Если вы слышите о нем впервые, имеет смысл сначала почитать эту статью.
Необходимые компоненты
- Один 0,96-дюймовый OLED-дисплей (см. на eBay)
- Одна плата Arduino (см. на eBay)
- Один датчик температуры и влажности DHT11 (см. на eBay)
- Одна макетная плата
- Один резистор на 10 кОм
- Провода-перемычки
Схема
Подключите эти компоненты друг к другу, как показано на схеме ниже:
Код
Убедитесь, что установили обе библиотеки для управления OLED-дисплеем – «adafruit_GFX.h» и «adafruit_SSD1306.h». Кроме того, вам понадобится библиотека «DHT».
Установка библиотеки «DHT»
- Кликните здесь, чтобы скачать ZIP-архив с библиотекой.
- Распакуйте этот архив. В итоге у вас должна получиться папка под названием «DHT-sensor-library-master».
- Переименуйте ее на «DHT_sensor_library».
- Переместите папку «DHT_sensor_library» в папку «libraries» IDE Arduino.
- Перезапустите IDE Arduino
Затем загрузите на Arduino код, показанный ниже:
/*
* Автор – Руи Сантос (Rui Santos)
* Более подробно о проекте на: http://randomnerdtutorials.com
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define DHTPIN 2 // контакт, к которому подключаемся
#define DHTTYPE DHT11 // для датчика DHT11
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
// создаем экземпляр класса для датчика DHT11:
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Wire.begin();
dht.begin(); // инициализируем объект «dht»
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// инициализируем объект «display» с I2C-адресом «0x3C», для 128x32
Serial.begin(9600);
}
void displayTempHumid(){
delay(2000);
// считывание данных о температуре и влажности
// занимает около 250 мс; кроме того, это считывание
// может запаздывать примерно на 2 секунды
// (это очень медленный датчик):
float h = dht.readHumidity();
// считываем температуру в градусах Цельсия:
float t = dht.readTemperature();
// считываем температуру в градусах Фаренгейта:
float f = dht.readTemperature(true);
// проверяем, корректны ли данные, и если нет,
// то выходим и пробуем снова:
if (isnan(h) || isnan(t) || isnan(f)) {
display.clearDisplay(); // очищаем дисплей
display.setTextColor(WHITE); // задаем цвет
display.setTextSize(1); // задаем шрифт
display.setCursor(5,0); // задаем координаты курсора
display.print("Failed to read from DHT sensor!");
// "Не удалось прочесть данные с датчика DHT!"
return;
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.print("Humidity: "); // "Влажность: "
display.print(h);
display.print(" %\t");
display.setCursor(0,10);
display.print("Temperature: "); // "Температура: "
display.print(t);
display.print(" C");
display.setCursor(0,20);
display.print("Temperature: "); // "Температура: "
display.print(f);
display.print(" F");
}
void loop()
{
displayTempHumid();
display.display();
}
Демонстрация
После загрузки кода OLED-дисплей начнет работать следующим образом:
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino