Тестирую лидар для робота
Лидар с Алиэкспресса, от робота-пылесоса. Будет основой навигационной системы будущего робота. Целью теста было припаять нужные провода, проверить мотор и логику перед монтажём на платформу.
Подробно процесс стройки освещаю здесь: https://t.me/robostroy
и здесь: https://www.youtube.com/@seko2k19
Подписывайтесь, должно быть интересно!
Помогите сделать Часы на Ардуино тм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' ?
Ардуинисты здесь?
Привет всем. В целом есть задача собрать систему на Ардуино.
Цель: беспроводная тревожная кнопка с оповещением СМС нужных контактов, вроде меня (сосед пожилой за стеной), скорую помощь и т.п.
Дедушка пожилой, дома доживает.
Собрал бы систему на Ардуино чтобы при необходимости помощи, быстро среагировать. Маршрут у него короткий, но кнопка должна дублироваться.
Очень надеюсь на адекватные ответы.
P.S. На руках есть ESP32, на его основе рекомендуется всё обустроить.