Часы на NeoPixel: секунды
Часть раздела Проекты путешествия по Arduino на Coddy. Урок 21 из 24.
Последний проект — часы без цифр: кольцо из 12 NeoPixels, как 12 часов на циферблате, где каждая стрелка — цветной светодиод. Пиксель 0 находится наверху, на отметке 12 часов, а числа идут по кругу по часовой стрелке. Две кнопки будут устанавливать время.
Сначала — секундная стрелка. В минуте 60 секунд, а в кольце 12 пикселей, поэтому стрелка перемещается на один пиксель каждые 5 секунд.
seconds % 60 считает от 0 до 59, а затем снова начинает с 0, как секунды на часах. Целочисленное деление на 5 преобразует числа от 0 до 59 в числа от 0 до 11:
unsigned long seconds = millis() / 1000;
int secondPixel = (seconds % 60) / 5;При каждом проходе loop() рисуй кольцо заново: ring.clear(), установи пиксель стрелки, ring.show(). Если не очистить кольцо, старые позиции останутся гореть, и оно заполнится. Десяти перерисовок в секунду вполне достаточно, поэтому начальный код заканчивается на delay(100).
Задание
СреднеКольцо подключено к пину 6. Нарисуй секундную стрелку:
- вычисли количество секунд с момента включения с помощью
millis() / 1000 - пиксель стрелки — это
(seconds % 60) / 5 - очисти кольцо, зажги этот пиксель синим цветом с помощью
ring.Color(0, 0, 255)и покажи его
Оставь delay(100). Нажми Run и посмотри, как стрелка движется по кругу, затем нажми Check.
Попробуйте сами
#include <Adafruit_NeoPixel.h>
const int ringPin = 6;
const int pixelCount = 12;
Adafruit_NeoPixel ring(pixelCount, ringPin, NEO_GRB + NEO_KHZ800);
void setup() {
ring.begin();
}
void loop() {
// определи положение секундной стрелки и нарисуй её синим цветом
delay(100); // перерисовывай десять раз в секунду
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проекты
3Парковочный датчик
Парковочный датчик: расстояниеПарковочный датчик: световые сигналыПарковочный датчик: звуковые сигналыПарковочный датчик: дисплей6Часы на NeoPixel
Часы на NeoPixel: секундыЧасы на NeoPixel: минутыЧасы на NeoPixel: смешиваем стрелкиЧасы на NeoPixel: устанавливаем времяПотренируйтесь самостоятельно: Песочница Arduino