Помогите сделать Часы на Ардуино тм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' ?
Микрофон по схеме FIN или как я не разучился держать в руках паяльник
Сломался у меня микрофон, а в закромах у меня лежит много старых советских радиодеталей и решил я найти им применение в виде микрофона из донора BM-800 который приобрел на авито за копейки)
Накидал схему без умножителя поляризационного напряжения от разработчика с сайта forum.vegalab
Собрал в кучу нужные детали и приступил)
Удаляем не нужную плату из донора
Фазируем неполярные конденсаторы для уменьшения помех (на фото проверяю правильность работы осциллографа на электролите)
Так как качество маленьких капсюлей оставляет желать лучшего беру на али 1 дюймовый (на фото видно поврежденные пленки = некачественный звук)
Извиняюсь за отсутствие маникюра)
Компоновку держал в голове без эскиза, монтаж деталей на весу без платы)
Резину для печати кронштейна держателя капсюля на озоне продали мне не качественную, хотел прозрачную, но оказалась ужасно твердая, пришлось заказать на стороне печать, выбор цвета у ребят к сожалению ограниченный поэтому черный
Потихоньку начинаю пайку (в процессе заменил индукторы)
Небольшое 3D)))
Все детали кроме электролитов, индуктивности и диода советские)
Полностью исключил керамические конденсаторы.
В доноре оказалось всего два отверстия под болты кронштейна капсюля, дополнительные два нарезал)
Пайка последних деталей
Итоговая фотография, звук шикарный, а казалось все из говна и палок)
Примерный бюджет менее 2000 руб.