Эквивалентная библиотека 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.

, 👍-1

Обсуждение

Библиотека RTCZero предназначена для управления периферийным устройством RTC, встроенным в некоторые Arduino. В Uno нет встроенного RTC, поэтому эквивалента быть не может., @Edgar Bonet


1 ответ


1

В обычном Arduino UNO нет встроенного RTC. Если вы хотите сделать то же самое с UNO, вы можете добавить внешний модуль RTC, например DS3231 или DS1307. В менеджере библиотек есть библиотеки для тех устройств, которые будут работать с вашим UNO. Затем вы можете найти функции, выполняющие ту же работу, что и функции в вашем коде, и заменить их.

Если ваша UNO — это новая UNO-R4, то да, у них есть RTC и в ядре есть библиотека для этого, но RTC на этих платах ужасно неточно из-за отсутствия точного источника синхронизации. водить его. Поэтому даже в этом случае я бы все равно рекомендовал внешний RTC.

,