Проекты с OLED дисплеями на Arduino

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Введение

OLED дисплеи становятся все более популярными в проектах на Arduino благодаря их высокой контрастности, низкому энергопотреблению и широким углам обзора. Эти дисплеи идеально подходят для отображения текстовой информации, графики и даже анимации. В этой статье мы рассмотрим, как использовать OLED дисплеи с Arduino, какие компоненты необходимы для начала работы, как подключить дисплей к плате и приведем несколько примеров проектов, которые можно реализовать.

OLED дисплеи отличаются от традиционных ЖК-дисплеев тем, что каждый пиксель излучает свет самостоятельно, что позволяет достичь высокой контрастности и насыщенности цветов. Это делает их идеальными для использования в условиях низкой освещенности или для создания дисплеев с высоким разрешением. Кроме того, OLED дисплеи потребляют меньше энергии, что особенно важно для портативных и автономных устройств.

Кинга Идем в IT: пошаговый план для смены профессии

Необходимые компоненты

Для работы с OLED дисплеями на Arduino вам понадобятся следующие компоненты:

  • Arduino (например, Arduino Uno, Nano или Mega)
  • OLED дисплей (обычно используются дисплеи с разрешением 128x64 или 128x32)
  • Соединительные провода
  • Резисторы (в некоторых случаях)
  • Бредборд (макетная плата)

Также может понадобиться программное обеспечение, такое как Arduino IDE, и библиотеки для работы с OLED дисплеями, например, Adafruit SSD1306 и Adafruit GFX.

Arduino IDE — это интегрированная среда разработки, которая позволяет писать, компилировать и загружать код на плату Arduino. Библиотеки Adafruit SSD1306 и Adafruit GFX предоставляют удобные функции для работы с графикой и текстом на OLED дисплеях, что значительно упрощает процесс разработки.

Подключение OLED дисплея к Arduino

Подключение OLED дисплея к Arduino может варьироваться в зависимости от модели дисплея. Наиболее распространенные варианты подключения включают использование интерфейсов I2C и SPI.

Подключение через I2C

Интерфейс I2C (Inter-Integrated Circuit) позволяет подключать несколько устройств к одной шине с использованием всего двух проводов: SDA (данные) и SCL (тактовый сигнал).

  1. Подключите выводы VCC и GND дисплея к соответствующим выводам на Arduino.
  2. Подключите вывод SDA дисплея к выводу A4 на Arduino (для Arduino Uno) или к другому соответствующему выводу на других моделях.
  3. Подключите вывод SCL дисплея к выводу A5 на Arduino (для Arduino Uno) или к другому соответствующему выводу на других моделях.
Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Подключение через SPI

Интерфейс SPI (Serial Peripheral Interface) обеспечивает более высокую скорость передачи данных по сравнению с I2C, но требует больше проводов для подключения.

  1. Подключите выводы VCC и GND дисплея к соответствующим выводам на Arduino.
  2. Подключите вывод D0 (SCK) дисплея к выводу 13 на Arduino.
  3. Подключите вывод D1 (MOSI) дисплея к выводу 11 на Arduino.
  4. Подключите вывод CS дисплея к выводу 10 на Arduino.
  5. Подключите вывод DC дисплея к выводу 9 на Arduino.
  6. Подключите вывод RES дисплея к выводу 8 на Arduino.

После подключения дисплея, необходимо установить библиотеки Adafruit SSD1306 и Adafruit GFX через Arduino IDE. Для этого откройте Arduino IDE, перейдите в меню "Скетч" -> "Подключить библиотеку" -> "Управление библиотеками" и найдите нужные библиотеки.

Примеры проектов

Простой текстовый дисплей

Этот проект демонстрирует, как вывести простой текст на OLED дисплей. Вы можете использовать этот пример в качестве основы для создания более сложных текстовых интерфейсов.

cpp
Скопировать код
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  if(!display.begin(SSD1306_I2C_ADDRESS, OLED_RESET)) {
    for(;;);
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,0);
  display.println(F("Hello, world!"));
  display.display();
}

void loop() {
}

Графический дисплей

В этом проекте мы создадим простой графический дисплей, который отображает различные фигуры. Это может быть полезно для создания визуальных индикаторов или простых игр.

cpp
Скопировать код
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  if(!display.begin(SSD1306_I2C_ADDRESS, OLED_RESET)) {
    for(;;);
  }
  display.clearDisplay();
  display.drawRect(10, 10, 50, 30, SSD1306_WHITE);
  display.drawCircle(80, 30, 20, SSD1306_WHITE);
  display.display();
}

void loop() {
}

Часы на OLED дисплее

Этот проект показывает, как создать простые часы на OLED дисплее с использованием библиотеки RTClib для работы с реальным временем. Часы могут быть полезны в различных проектах, таких как будильники или системы мониторинга.

cpp
Скопировать код
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

RTC_DS3231 rtc;

void setup() {
  if(!display.begin(SSD1306_I2C_ADDRESS, OLED_RESET)) {
    for(;;);
  }
  if (!rtc.begin()) {
    for(;;);
  }
  display.clearDisplay();
}

void loop() {
  DateTime now = rtc.now();
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,0);
  display.print(now.hour(), DEC);
  display.print(':');
  display.print(now.minute(), DEC);
  display.display();
  delay(1000);
}

Температурный монитор

Этот проект демонстрирует, как использовать OLED дисплей для отображения температуры, измеренной с помощью датчика температуры, такого как DHT11 или DHT22.

cpp
Скопировать код
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  if(!display.begin(SSD1306_I2C_ADDRESS, OLED_RESET)) {
    for(;;);
  }
  dht.begin();
  display.clearDisplay();
}

void loop() {
  float temperature = dht.readTemperature();
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,0);
  display.print("Temp: ");
  display.print(temperature);
  display.print(" C");
  display.display();
  delay(2000);
}

Анимация на OLED дисплее

Этот проект показывает, как создать простую анимацию на OLED дисплее, что может быть полезно для создания визуальных эффектов или игр.

cpp
Скопировать код
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  if(!display.begin(SSD1306_I2C_ADDRESS, OLED_RESET)) {
    for(;;);
  }
  display.clearDisplay();
}

void loop() {
  for(int i = 0; i < SCREEN_WIDTH; i++) {
    display.clearDisplay();
    display.drawCircle(i, SCREEN_HEIGHT/2, 10, SSD1306_WHITE);
    display.display();
    delay(50);
  }
}

Заключение

Использование OLED дисплеев в проектах на Arduino открывает множество возможностей для создания интерактивных и информативных устройств. В этой статье мы рассмотрели основные шаги по подключению и использованию OLED дисплеев, а также привели несколько примеров проектов, которые помогут вам начать работу. Экспериментируйте и создавайте свои уникальные проекты с использованием этих замечательных дисплеев!

OLED дисплеи предоставляют гибкость и функциональность, которые могут значительно улучшить ваши проекты. Независимо от того, создаете ли вы простой текстовый дисплей или сложную анимацию, эти дисплеи помогут вам достичь ваших целей. Не бойтесь экспериментировать и пробовать новые идеи — возможности ограничены только вашим воображением!

Читайте также

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какие компоненты необходимы для работы с OLED дисплеями на Arduino?
1 / 5