user10766731

user10766731

На Пикабу
100 рейтинг 0 подписчиков 0 подписок 2 поста 0 в горячем
0
Вопрос из ленты «Эксперты»

Помогите сделать Часы на Ардуино тм1637 и дс3231 с выводом температуры

Помогите сделать часы (не компилируется скетч)

Скетч написал а он не компилируется, помогите пожалуйста 🥺 🙏

Скетч:

#include <RTClib.h>

#include <TM1637Display.h>

// Пины подключения дисплея

#define CLK_PIN 3

#define DIO_PIN 2

// Пины кнопок

#define BUTTON_MODE 4

#define BUTTON_UP 5

#define BUTTON_DOWN 6

RTC_DS3231 rtc;

TM1637Display display(CLK_PIN, DIO_PIN);

unsigned long previousMillis = 0;

const long interval = 1000; // обновление каждую секунду

int displayMode = 0; // 0 - показывать время, 1 - показывать температуру

void setup() {

Serial.begin(9600);

// Инициализация дисплея

display.setBrightness(0x0f);

// Инициализация RTC

if (!rtc.begin()) {

Serial.println("RTC не найден!");

while (1);

}

if (rtc.lostPower()) {

Serial.println("Настройка времени RTC...");

rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // установка времени по компилятору

}

// Настройка кнопок

pinMode(BUTTON_MODE, INPUT_PULLUP);

pinMode(BUTTON_UP, INPUT_PULLUP);

pinMode(BUTTON_DOWN, INPUT_PULLUP);

}

void loop() {

unsigned long currentMillis = millis();

// Обработка кнопок

handleButtons();

if (currentMillis - previousMillis >= interval) {

previousMillis = currentMillis;

DateTime now = rtc.now();

if (displayMode == 0) {

// Показывать время

displayTime(now);

} else if (displayMode == 1) {

// Показывать температуру

displayTemperature();

}

}

}

// Обработка кнопок

void handleButtons() {

static bool lastModeState = HIGH;

static bool lastUpState = HIGH;

static bool lastDownState = HIGH;

bool modeState = digitalRead(BUTTON_MODE);

bool upState = digitalRead(BUTTON_UP);

bool downState = digitalRead(BUTTON_DOWN);

// Переключение режима

if (lastModeState == HIGH && modeState == LOW) {

displayMode = (displayMode + 1) % 2;

}

lastModeState = modeState;

// Можно добавить обработку длительного нажатия или др.

}

// Отображение времени

void displayTime(DateTime now) {

char buffer[6];

sprintf(buffer, "%02d%02d", now.hour(), now.minute());

// Отображение в виде HH:MM

display.showNumberDecEx(

(now.hour() * 100) + now.minute(),

0b01000000, // точка между часами и минутами

true);

}

// Отображение температуры

void displayTemperature() {

float tempC = rtc.now().temperature(); // Получение температуры (в градусах Цельсия)

// Отобразим температуру как целое число

int tempInt = (int)tempC;

// Показывать температуру с знаком

if (tempInt >= 0) {

display.showNumberDec(tempInt, false, 2, 0);

} else {

// Для отрицательных температур

display.showNumberDec(-tempInt, false, 2, 1);

// Можно добавить знак минуса вручную, если нужно

}

}

Ошибка:

compilation error: 'class TM1637Display' has no named 'showNumberDecEx'; did you mean 'showNumberDec' ?

Показать полностью
Отличная работа, все прочитано!