Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Гайд по использованию 0,96-дюймового OLED-дисплея с Arduino

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2703 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Гайд по использованию 0,96-дюймового OLED-дисплея с Arduino[1]

В этой статье объясняется, как использовать маленький 0,96-дюймовый OLED-дисплей вместе с платой Arduino.

Описание

На то, как выглядит OLED-дисплей, можно посмотреть на фото ниже:

0.96 inch OLED 1.jpg

Это очень маленький дисплей, его размеры составляют 25 на 14 мм, а разрешение – 128 на 64 пикселя. Подсветка не требуется. Данная модель – монохромная (т.е. только с черным и белым цветами), но есть и такие, что поддерживают несколько цветов.

Кроме того, этот дисплей использует коммуникацию типа I2C. Это значит, что для коммуникации с Arduino ему нужно всего два контакта.

Подключение контактов

В подключении OLED-дисплея к Arduino нет ничего сложного:

  • Контакт Vin на дисплее – к контакту 5V на Arduino
  • Контакт GND – к контакту GND
  • Контакт SCL – к контакту A5
  • Контакт SDA – к контакту A4

Если вы используете не Uno, а другую модель Arduino, то у нее контакты интерфейса I2C могут быть другими:

Библиотеки

Чтобы управлять 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 кОм
  • Провода-перемычки

Схема

Подключите эти компоненты друг к другу, как показано на схеме ниже:

Display-dht11-OLED bb 2.png

Код

Убедитесь, что установили обе библиотеки для управления 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 код, показанный ниже:

  1. /*
  2.  * Автор – Руи Сантос (Rui Santos)
  3.  * Более подробно о проекте на: http://randomnerdtutorials.com
  4.  */
  5.  
  6. #include <Wire.h>
  7. #include <Adafruit_GFX.h>
  8. #include <Adafruit_SSD1306.h>
  9. #include <DHT.h>
  10.  
  11. #define DHTPIN 2     // контакт, к которому подключаемся
  12. #define DHTTYPE DHT11   // для датчика DHT11
  13. #define OLED_RESET 4
  14. Adafruit_SSD1306 display(OLED_RESET);
  15.  
  16. // создаем экземпляр класса для датчика DHT11:
  17. DHT dht(DHTPIN, DHTTYPE);
  18.  
  19. void setup()
  20. {
  21.   Wire.begin();
  22.   dht.begin(); // инициализируем объект «dht»
  23.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  24.   // инициализируем объект «display» с I2C-адресом «0x3C», для 128x32
  25.   Serial.begin(9600);
  26. }
  27. void displayTempHumid(){
  28.   delay(2000);
  29.   // считывание данных о температуре и влажности
  30.   // занимает около 250 мс; кроме того, это считывание
  31.   // может запаздывать примерно на 2 секунды
  32.   // (это очень медленный датчик):
  33.   float h = dht.readHumidity();
  34.   // считываем температуру в градусах Цельсия:
  35.   float t = dht.readTemperature();
  36.   // считываем температуру в градусах Фаренгейта:
  37.   float f = dht.readTemperature(true);
  38.  
  39.   // проверяем, корректны ли данные, и если нет,
  40.   // то выходим и пробуем снова:
  41.   if (isnan(h) || isnan(t) || isnan(f)) {
  42.     display.clearDisplay();  //  очищаем дисплей
  43.     display.setTextColor(WHITE);  //  задаем цвет
  44.     display.setTextSize(1);  //  задаем шрифт
  45.     display.setCursor(5,0);  //  задаем координаты курсора
  46.     display.print("Failed to read from DHT sensor!");
  47.     //  "Не удалось прочесть данные с датчика DHT!"
  48.     return;
  49.   }
  50.   display.clearDisplay();
  51.   display.setTextColor(WHITE);
  52.   display.setTextSize(1);
  53.   display.setCursor(0,0);
  54.   display.print("Humidity: ");  //  "Влажность: "
  55.   display.print(h);
  56.   display.print(" %\t");
  57.   display.setCursor(0,10);
  58.   display.print("Temperature: ");  //  "Температура: "
  59.   display.print(t);
  60.   display.print(" C");
  61.   display.setCursor(0,20);
  62.   display.print("Temperature: ");  //  "Температура: "
  63.   display.print(f);
  64.   display.print(" F");
  65. }
  66. void loop()
  67. {
  68.   displayTempHumid();
  69.   display.display();
  70. }

Демонстрация

После загрузки кода OLED-дисплей начнет работать следующим образом:

Demonstration 0.96 inch OLED 3.jpg

См.также

Внешние ссылки

  1. randomnerdtutorials.com - Guide for 0.96 inch OLED Display with Arduino