Урок №9 Подключение экрана на ESP32
В данном уроке мы научимся управлять встроенным экраном.
Описание
Экран на Esp32 хороший – OLED 0,96 дюймов диагональю и разрешением 128*64 пикселя. В общем для вывода данных с сенсоров очень даже достаточно. OLED — дисплей являются одним из самых привлекательным и современным дисплеем, при небольших размерах и незначительном энергопотребление OLED дисплей, обеспечивает насыщенную контрастность.

Итак, по схеме все просто – экран уже есть на плате и подключен к пину №16 поэтому нам достаточно подключить плату к компьютеру через шнур. Выбрать в среде разработки плату ESP32 ( Инструменты\Плата\ESP32 Dev Module) и загрузить код.
Что нам понадобится?
Достаньте и подготовьте необходимые детали из коробки.
Arduino Uno
Мозг нашей схемы
Популярный микроконтроллер, его мощности достаточно пока нам для начальных экспериментов
Светодиод
Любого цвета
Длинная ножка на положительно заряженный, короткая на отрицательно
Макетная плата
на 400 точек
Соединения идут параллельно, плата разделена на 2 части горизонтальной линией
Резистор
На 10 кОм
О резисторах подробно мы подробно поговорим чуть ниже в разделе "Базовые знания"
Код
/*Обьявление переменных экрана*/
#include "SSD1306.h" 
#define SDA_PIN 4// GPIO4 -> SDA
#define SCL_PIN 15// GPIO15 -> SCL
#define SSD_ADDRESS 0x3c
SSD1306  display(SSD_ADDRESS, SDA_PIN, SCL_PIN);

void setup() {
  pinMode(ledPin, OUTPUT); //Обьявляем пин как выходной

  /*Включаем экран*/
  pinMode(16,OUTPUT); //Обьявляем пин как выходной. Reset экрана
  digitalWrite(16, LOW);    
  delay(50); 
  digitalWrite(16, HIGH); 
  display.init();
  display.flipScreenVertically();
}

void loop() {
  

  display.setTextAlignment(TEXT_ALIGN_RIGHT); //Выравнивание текста по левому краю
  display.setFont(ArialMT_Plain_10); //Шрифт и размер шрифта, крупнее 16, 24
  display.clear(); //Очистить экран
  delay(500);
  display.drawString(64,32, "HELLO"); //Вывод текста на экран по координатам 64 32
  display.display();
  delay(500);
  display.clear();
  drawRect;
  //display.display(); // Вывод информациии из буфера на экран                 
}

void drawRect(void) {
  for (int16_t i=0; i<DISPLAY_HEIGHT/2; i+=2) {
    display.drawRect(i, i, DISPLAY_WIDTH-2*i, DISPLAY_HEIGHT-2*i);
    display.display();
    delay(10);
  }
}
Программирование
Мы добавили библиотеку SSD1306.h – она создана специально для OLED дисплеев и существенно облегчает жизнь.

Экран подключен к пину № 16 – поэтому мы выключаем и включаем его, чтобы экран заработал.

Мы видим что экрану нужно объяснить куда ( по каким координатам) поместить текст и как именно - горизонтально или вертикально это сделать.

Координаты расположения надписи можно менять, помните разрешение нашего экрана 128*64 пикселя, это значит что когда мы задаем координаты 64 и 32 – мы располагаем надпись ровно по центру.

Далее во всех уроках этот код будет повторяться, меняться будет лишь текст который выводит экран, но не алгоритм благодаря которому он это делает.

Задания для самостоятельного выполнения:

1. Поменять "HELLO" на «HELLO WORLD»

2. Попробуйте добавить код для того чтобы после появления надписи шла задержка на пол секунды

3. Поменяйте координаты, что текст появлялся в других местах – например 0,10; 128,33;