Ищу простой в обращении дисплей с размерами 45*20

ZyaK

✩✩✩✩✩✩✩
15 Июн 2021
2
0
Друзья доброго времени суток, в старом японце померли часы, хочу в штатный корпус засунуть на самодельной плате атмегу и дисплей. размеры видимой области 45*20 мм, по размерам текстолита вверх места больше нет, по бокам в каждую сторону +3мм, ниже видимой области есть свободные 10 мм
уже думал вкорячить 2 0.91-х, но не хватает места по высоте.
 
Изменено:

BOT_Zilla

✩✩✩✩✩✩✩
1 Апр 2022
7
4
@ZyaK, Пробовал, для проверки дисплея. Вот код, надерганный из разных примеров:
пример часов SH1107:
#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>

// Настройки дисплея SH1107
#define SCREEN_WIDTH 64
#define SCREEN_HEIGHT 128
#define SH110X_I2C_ADDRESS 0x3C // Замените на 0x3D, если это адрес вашего дисплея
Adafruit_SH1107 display = Adafruit_SH1107(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);

// Настройки кнопок
#define BUTTON_HOURS 2
#define BUTTON_MINUTES 3
#define BUTTON_RESET 4

// Настройки часов DS3231
RTC_DS3231 rtc;
DateTime now;

void setup()
{
  Serial.begin(9600);

  // Инициализация кнопок
  pinMode(BUTTON_HOURS, INPUT_PULLUP);
  pinMode(BUTTON_MINUTES, INPUT_PULLUP);
  pinMode(BUTTON_RESET, INPUT_PULLUP);

  // Инициализация дисплея
  if (!display.begin(SH110X_I2C_ADDRESS, true))
  {
    Serial.println("SH1107 not found");
    while (1)
      ;
  }
  display.display(); // Показывает буфер дисплея
  delay(2000);       // Задержка на 2 секунды
  display.clearDisplay();
  display.setRotation(1);// 0-3 поворот изображения на дисплее

  // Инициализация часов
  if (!rtc.begin())
  {
    Serial.println("Couldn't find RTC");
    while (1)
      ;
  }

  if (rtc.lostPower())
  {
    Serial.println("RTC lost power, let's set the time!");
    // Установите время на текущее время компиляции
    rtc.adjust(DateTime(F([B]DATE[/B]), F([B]TIME[/B])));
  }
}

void loop()
{
  // Получаем текущее время
  now = rtc.now();

  // Проверка нажатия кнопок
  if (digitalRead(BUTTON_HOURS) == LOW)
  {
    adjustHours();
    delay(200); // Задержка для предотвращения дребезга кнопок
  }

  if (digitalRead(BUTTON_MINUTES) == LOW)
  {
    adjustMinutes();
    delay(200); // Задержка для предотвращения дребезга кнопок
  }

  if (digitalRead(BUTTON_RESET) == LOW)
  {
    resetMinutes();
    delay(200); // Задержка для предотвращения дребезга кнопок
  }

  // Обновляем дисплей
  display.clearDisplay();
  display.setTextSize(4);
  display.setTextColor(SH110X_WHITE);
  display.setCursor(0, 0);

  // Форматируем и выводим время на дисплей
  if (now.hour() < 10)
    display.print("0");
  display.print(now.hour());
  display.print(":");
  if (now.minute() < 10)
    display.print("0");
  display.print(now.minute());
  display.print(":");
  if (now.second() < 10)
    display.print("0");
  display.print(now.second());

  display.display();

  delay(1000); // Обновление каждую секунду
}

void adjustHours()
{
  now = rtc.now();
  int hours = now.hour();
  hours = (hours + 1) % 24;
  rtc.adjust(DateTime(now.year(), now.month(), now.day(), hours, now.minute(), now.second()));
}

void adjustMinutes()
{
  now = rtc.now();
  int minutes = now.minute();
  minutes = (minutes + 1) % 60;
  rtc.adjust(DateTime(now.year(), now.month(), now.day(), now.hour(), minutes, now.second()));
}

void resetMinutes()
{
  now = rtc.now();
  rtc.adjust(DateTime(now.year(), now.month(), now.day(), now.hour(), 0, 0));
}
Это грубый черновик, но рабочий. Приблизительно реализует функционал тоётовских бортовых часов. Можно использовать как затравку для своего кода. Ну, и время лучше, конечно, не печатать шрифтом, а "рисовать".
 
  • Лойс +1
Реакции: ZyaK

ZyaK

✩✩✩✩✩✩✩
15 Июн 2021
2
0
@BOT_Zilla,как придет дисплей буду тестить. у меня подсветка щитка на адресных светодиодах сделана, хочу доделать подсветку климата и упралять из часов, до кучи пару датчиковтемпературы впихнуть за бортом и мотора. ну и вольтметр само собой )