Эквивалентная библиотека RTCZero для Arduino UNO
Я новичок в Ardunino UNO Это моя первая программа для подсветки светодиодной ленты
#include <Adafruit_NeoPixel.h>
#include <RTCZero.h>
#define PIN 6
#define NUMPIXELS 60 // Определите общее количество пикселей в полосе
#define BRIGHTNESS 50 // Регулировка яркости (0-255)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
RTCZero rtc;
void setup() {
strip.begin(); // Инициализирует библиотеку нео пикселей для использования
strip.show(); // Инициализируем все пиксели как «выключенные»
rtc.begin();
// Инициализирует часы реального времени, rtc определен ранее, точка доступа к элементу в данном случае Begin(), который является методом, метод используется для выполнения действия, они принадлежат классу и определяют, как объект ведет себя
// Устанавливаем начальное время во время проекта
rtc.setHours(12);
rtc.setMinutes(0);
rtc.setSeconds(0);
}
void loop() {
int currentHour = rtc.getHours(); // Получаем текущий час от часов реального времени
uint32_t color;
// Устанавливаем цвет в зависимости от времени суток
if (currentHour >= 6 && currentHour < 16) {
// Желтый с 6:00 до 16:00
color = strip.Color(255, 255, 0);
} else if (currentHour >= 16 && currentHour < 20) {
// Оранжевый с 16:00 до 20:00
color = strip.Color(255, 165, 0);
} else {
// Синий с 20:00 до 6:00
color = strip.Color(0, 0, 255);
}
// Устанавливаем цвет для всех пикселей
fillStrip(color);
// Необязательно: отрегулируйте яркость
strip.setBrightness(BRIGHTNESS);
// Обновляем полоску NeoPixel
strip.show();
// Задержка, чтобы избежать слишком частого обновления цветов
delay(60000); // Задержка на 1 минуту (регулируется по мере необходимости)
}
// Использует цикл for для повторения цвета всех пикселей светодиодной ленты
void fillStrip(uint32_t color) {
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, color);
}
}
Невозможно скомпилировать программу из-за следующей ошибки. Как найти эквивалентную функцию для Arduino UNO??
ВНИМАНИЕ: библиотека RTCZero утверждает, что работает на архитектуре(ях) samd и может быть несовместима с вашей текущей платой, которая работает на архитектуре(ах) avr.
@suni, 👍-1
Обсуждение1 ответ
В обычном Arduino UNO нет встроенного RTC. Если вы хотите сделать то же самое с UNO, вы можете добавить внешний модуль RTC, например DS3231 или DS1307. В менеджере библиотек есть библиотеки для тех устройств, которые будут работать с вашим UNO. Затем вы можете найти функции, выполняющие ту же работу, что и функции в вашем коде, и заменить их.
Если ваша UNO — это новая UNO-R4, то да, у них есть RTC и в ядре есть библиотека для этого, но RTC на этих платах ужасно неточно из-за отсутствия точного источника синхронизации. водить его. Поэтому даже в этом случае я бы все равно рекомендовал внешний RTC.
- Разница между «time_t» и «DateTime»
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки
- Библиотека времени Arduino и библиотеки RTC
- Ошибка модуля часов реального Времени-DS3231
- DS3231 rtc.begin() всегда возвращает false
- Adafruit RTC begin() не возвращает false
- Как установить управляющий регистр в модуле RTC DS3231 для Arduino UNO R3?
- DS3231 Не совпадает время при выключении Arduino
Библиотека RTCZero предназначена для управления периферийным устройством RTC, встроенным в некоторые Arduino. В Uno нет встроенного RTC, поэтому эквивалента быть не может., @Edgar Bonet