🧊 Объёмный Шрифт для OLED-дисплея — Красота даже в малом!

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

🔷 Именно для таких случаев мы и подготовили пример с “объёмным шрифтом” — без специальных библиотек и графических ресурсов. Только Arduino, OLED-дисплей и немного магии кода.


🛠 В чём фишка?

Мы имитируем эффект свечения и объёма за счёт многократного вывода текста с небольшим смещением и разной яркостью. Это создаёт красивую “подсветку” за символами — будто они светятся изнутри.

✨ Смотрится отлично даже на простом дисплее 128×32, особенно при выводе времени или цифровых значений. Например:

  • Время: 12:45
  • Напряжение: 14.2V
  • Температура: 28°C

⚡ Где можно использовать?

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

🔌 Что нужно?

  • Arduino Nano или Uno
  • OLED-дисплей 128×32 I2C (на SSD1306)
  • Немного провода и вдохновения

Программа работает без дополнительных библиотек, кроме стандартных для OLED-дисплея:
Adafruit_GFX и Adafruit_SSD1306.


🧪 Как это работает?

В коде реализован эффект “пульсации яркости” — цифры как будто «дышат». Это достигается за счёт изменения виртуальной яркости и рисования текста с небольшим сдвигом и разной насыщенностью.

cppКопировать

Редактировать

for (int i = 3; i >= 1; i--) { display.setTextColor((i == 1) ? SSD1306_WHITE : SSD1306_INVERSE); display.setCursor(x + i, y + i); display.print(buf); }

В итоге, даже простой текст на экране выглядит по-настоящему стильным и уникальным.


📥 Где взять код?

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// Дисплей
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// Виртуальная яркость текста
float brightness = 0.0;
int dir = 1;

// Время запуска (имитация часов, без RTC)
int hours = 12;
int minutes = 0;
unsigned long lastUpdate = 0;

void setup() {
  Wire.begin(); // Использует стандартные пины: A4 (SDA), A5 (SCL)

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    while (true); // ошибка дисплея
  }

  display.clearDisplay();
  display.setTextSize(3);
  display.setTextColor(SSD1306_WHITE);

  // Установка стартового времени (можно поменять вручную)
  hours = 12;
  minutes = 34;
  lastUpdate = millis();
}

void loop() {
  // Простейшие «часы»: обновляем время каждую минуту
  if (millis() - lastUpdate >= 600) {
    minutes++;
    if (minutes >= 60) {
      minutes = 0;
      hours++;
      if (hours >= 24) hours = 0;
    }
    lastUpdate = millis();
  }

  // Подготовка строки времени
  char buf[6];
  sprintf(buf, "%02d:%02d", hours, minutes);

  // Плавная пульсация яркости (виртуальная)
  if (dir == 1) {
    brightness += 0.02;
    if (brightness >= 1.0) dir = -1;
  } else {
    brightness -= 0.02;
    if (brightness <= 0.2) dir = 1;
  }

  display.clearDisplay();

  int16_t x1, y1;
  uint16_t w, h;
  display.getTextBounds(buf, 0, 0, &x1, &y1, &w, &h);
  int x = (SCREEN_WIDTH - w) / 2;
  int y = (SCREEN_HEIGHT - h) / 2;

  // Эффект свечения
  for (int i = 3; i >= 1; i--) {
    display.setTextColor((i == 1) ? SSD1306_WHITE : SSD1306_INVERSE);
    display.setCursor(x + i, y + i);
    display.print(buf);
  }

  display.setTextColor(SSD1306_WHITE);
  display.setCursor(x, y);
  display.print(buf);

  display.display();
  delay(30);
}

Полный скетч с комментариями и пояснениями уже доступен в нашем Telegram-канале [Азбука Радиосхем] — не забудь подписаться, если хочешь больше таких идей!

📎 Подходит для Arduino Nano, Uno и даже ATmega328P-плат.


🔧 Идеи на будущее:

  • Добавить RTC-модуль и сделать стильные часы.
  • Выводить не только время, но и температуру, влажность, уровень заряда и т.д.
  • Расширить эффект: например, анимация мигания, смена цветов на дисплеях SH1106.

🎯 А главное — теперь вы знаете, как сделать даже простой дисплей интересным. Потому что настоящие самодельщики ценят не только функциональность, но и стиль.


📌 Если тебе понравилось — поддержи пост, поделись с друзьями и напиши, в каких проектах ты бы использовал такой эффект.

Author: admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *