
OLED 0.96″ с четырьмя кнопками
Восьмиконтактная плата OLED 128×64 с кнопками K1–K4; референс aitendo M096P4W1315K4A
Показания и меню с четырьмя кнопками ввода
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает Восьмиконтактная плата OLED 128×64 с кнопками K1–K4; референс aitendo M096P4W1315K4A
Небольшой OLED объединён с четырьмя отдельными кнопками. Такой модуль удобен для вывода показаний, выбора пунктов меню и ручной настройки устройства. Кнопки отмечены стрелками вверх и вниз, символами # и *; их функции задаёт программа.
У платы восемь контактов: четыре обслуживают питание и I²C экрана, остальные выведены как K4, K3, K2 и K1. Четыре кнопки не образуют клавиатуру 4×4 и не передают нажатия через адрес OLED. Для их чтения нужны отдельные цифровые входы микроконтроллера.
Показанный белый вариант визуально совпадает с опубликованным фотореференсом aitendo M096P4W1315K4A и HobbyElectronica HE1317. Для этих референсов заявлены SSD1315, 128×64 и питание 3,3 В. SiTai&SH — торговое имя в присланной карточке; одинаковая плата под другой маркой относится к этому же исполнению. Контроллер или напряжение нельзя переносить на изменённую ревизию только по похожему внешнему виду.
OLED имеет собственное свечение и не требует подсветки. В минимальном примере используются питание и сигналы 3,3 В от ESP32-DevKitC V4. Экран выводит тестовое изображение, а состояния K1–K4 выводятся в Serial Monitor. Пример показывает сырые уровни и не назначает кнопкам действия. Для меню добавьте подавление дребезга и обработку нажатий.
API сверены с U8g2 2.37.1 и Arduino-ESP32 3.3.12. Пример не компилировался и не испытывался на физической плате в этой задаче. Размер активной области именно этой сборки не установлен; размер PCB взят у именованного референса aitendo.
Фотография: aitendo M096P4W1315K4A. Совпадающий исходный вид платы сохранён вместе с изображением экрана, кнопками, всеми восемью контактами и маркировками. Изменён только внешний фон и просветы крепёжных отверстий; на изображение подключения добавлены указатели контактов. Для этих сторонних исходных фотографий разрешение на коммерческое повторное использование не подтверждено. Смена фона не изменяет права на изображение.
Характеристики
- Размерная группа
- Мини (до 1.6″ включительно)
- Диагональ
- 0.96 дюйма
- Разрешение референса
- 128 × 64 пикселя
- Контроллер референса
- SSD1315
- Интерфейс экрана
- I²C
- Отдельные кнопки
- 4
- Контакты разъёма
- 8
- Размер PCB референса aitendo
- 44.6 × 27.5 мм
- Питание и логика примера
- 3.3 В
- Питание модуля
- 3,3 В для выбранного референса M096P4W1315K4A и всех сигналов в примере. Питание 5 В для неизвестной ревизии не подтверждено.
ПРАКТИКА
Подключение

| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| GND | GND | ESP32-DevKitC V4 с ESP32-WROOM-32E. Общая земля; первый слева при виде на экран с разъёмом сверху. |
| VCC | 3V3 | ESP32-DevKitC V4 с ESP32-WROOM-32E. Питание 3,3 В; второй контакт. |
| SCL | GPIO22 | ESP32-DevKitC V4 с ESP32-WROOM-32E. Тактирование OLED I²C. |
| SDA | GPIO21 | ESP32-DevKitC V4 с ESP32-WROOM-32E. Данные OLED I²C. |
| K4 | GPIO25 | ESP32-DevKitC V4 с ESP32-WROOM-32E. Отдельный цифровой вход K4. |
| K3 | GPIO26 | ESP32-DevKitC V4 с ESP32-WROOM-32E. Отдельный цифровой вход K3. |
| K2 | GPIO27 | ESP32-DevKitC V4 с ESP32-WROOM-32E. Отдельный цифровой вход K2. |
| K1 | GPIO32 | ESP32-DevKitC V4 с ESP32-WROOM-32E. Отдельный цифровой вход K1. |
Подходит для ESP32, Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги подключить OLED 0.96″ 128×64 с четырьмя отдельными кнопками K1–K4. Референс: aitendo M096P4W1315K4A / HobbyElectronica HE1317, SSD1315, восемь контактов GND–VCC–SCL–SDA–K4–K3–K2–K1. Сначала уточни мою плату и проверь, совпадает ли ревизия с референсом. Для ESP32-DevKitC V4 используй питание и сигналы 3,3 В, SDA21/SCL22, K4=25, K3=26, K2=27, K1=32. Подготовь зависимости, минимальный вывод текста, чтение кнопок, подавление дребезга и шаги проверки. Не считай это матрицей 4×4 или I²C-клавиатурой. Не определяй контроллер сканером и не переноси GPIO на другую ESP32.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Библиотека
U8g2 2.37.1Wire входит в Arduino-ESP32 3.3.12.
- Контроллер референса
U8G2_SSD1315_128X64_NONAME_F_HW_I2CИспользовать только для подтверждённого SSD1315.
- I²C
SDA21 / SCL22 / 100 kHzТолько выбранная ESP32-DevKitC V4; шина 3,3 В.
- Адрес
Wire: 0x3C или 0x3D; U8g2: адрес << 1В примере требуется ровно один ответ; ACK не определяет драйвер.
- Кнопки
K4=25; K3=26; K2=27; K1=32Четыре цифровых входа; пример выводит сырые уровни и не предполагает готовое подавление дребезга.
ESP32 · SSD1315 и четыре отдельных входа
cpp#include <Arduino.h>
#include <Wire.h>
#include <U8g2lib.h>
// ESP32-DevKitC V4 / ESP32-WROOM-32E only; all signals and supply 3.3 V.
constexpr uint8_t SDA_PIN = 21, SCL_PIN = 22;
constexpr uint8_t K4 = 25, K3 = 26, K2 = 27, K1 = 32;
U8G2_SSD1315_128X64_NONAME_F_HW_I2C display(
U8G2_R0, U8X8_PIN_NONE, SCL_PIN, SDA_PIN);
void stopWith(const char *message) {
Serial.println(message);
while (true) delay(1000);
}
void setup() {
Serial.begin(115200);
const uint8_t keys[] = {K1, K2, K3, K4};
for (uint8_t pin : keys) pinMode(pin, INPUT_PULLUP);
if (!Wire.begin(SDA_PIN, SCL_PIN, 100000)) stopWith("I2C start failed");
Wire.setTimeOut(50);
delay(500);
uint8_t address = 0, count = 0;
for (uint8_t a = 0x3C; a <= 0x3D; ++a) {
Wire.beginTransmission(a);
if (Wire.endTransmission() == 0) { address = a; ++count; }
}
if (count != 1) stopWith("Connect one OLED; check power, pins and address");
display.setI2CAddress(address << 1); // U8g2: 7-bit address multiplied by 2.
display.setBusClock(100000);
display.begin();
display.clearBuffer();
display.setFont(u8g2_font_6x10_tf);
display.drawStr(0, 12, "SLDV LAB");
display.drawStr(0, 28, "SSD1315 / 4 keys");
display.drawFrame(0, 34, 128, 30);
display.sendBuffer();
Serial.println("K1 K2 K3 K4: raw input states");
}
void loop() {
static uint8_t previous = 0xFF;
uint8_t state = (digitalRead(K1) << 3) | (digitalRead(K2) << 2) |
(digitalRead(K3) << 1) | digitalRead(K4);
if (state != previous) {
Serial.printf("%d %d %d %d\n", (state >> 3) & 1,
(state >> 2) & 1, (state >> 1) & 1, state & 1);
previous = state;
}
delay(1);
}Полный диагностический скетч для именованного референса, ESP32-DevKitC V4, U8g2 2.37.1 и Arduino-ESP32 3.3.12. API проверен по исходникам; компиляция и аппаратная проверка не проводились. Перед включением сверить питание и подписи своей ревизии.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


