| Ваш IP: 3.230.119.106 | Online(10) - гости: 6, боты: 4 | Загрузка сервера: 0.68 ::::::::::::

Часы на светодиодном RGB кольце (WS2812)(Arduino)

RGB (на контроллере WS2812) кольца бывают разного размера с разным кол-вом светодиодов, для создания часов было выбрано кольцо с 12 светодиодами.

Считывать время с часов очень просто, красное свечение светодиода обозначают часы, синее минуты, а зеленое секунды. Так как RGB кольцо имеет только 12 светодиодов, то показания минут и секунд кратно пяти, а часов 12-и. При совпадении положения минут, секунд или часов в одном светодиоде горят одновременно 2 или три цвета.

#include <Adafruit_NeoPixel.h> // https://github.com/adafruit/Adafruit_NeoPixel.git
#include <Wire.h> 
#include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
 DS3231 clock;
 RTCDateTime DateTime;
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 2, NEO_GRB + NEO_KHZ400);// 4 трека, D2
 
byte i,s,m,h,mm,sm,sh,mh;
unsigned long t;
 
void setup(){
  strip.begin();Wire.begin(); clock.begin();
// clock.setDateTime(__DATE__, __TIME__);
}
 
void loop(){ 
    DateTime=clock.getDateTime();
    s = DateTime.second/5;
    m = DateTime.minute/5;
    h = DateTime.hour;
    if(h>12){h=h-12;}
    if(s==m){sm=10;}else{sm=0;}
    if(s==h){sh=10;}else{sh=0;}
    if(m==h){mh=10;}else{mh=0;}
 
    if(s==0){strip.setPixelColor(11, strip.Color(0, 0, 0));}
    else{strip.setPixelColor(s-1, strip.Color(0, 0, 0)); }
    if(m==0){strip.setPixelColor(11, strip.Color(0, 0, 0));}
    else{strip.setPixelColor(m-1, strip.Color(0, 0, 0)); }
    if(h==0){strip.setPixelColor(11, strip.Color(0, 0, 0));}
    else{strip.setPixelColor(h-1, strip.Color(0, 0, 0)); }
    strip.setPixelColor(s, strip.Color(0, 10, 0));
    strip.setPixelColor(m, strip.Color(0, sm, 10));
    strip.setPixelColor(h, strip.Color(10, sh, mh));
    strip.show();
}

RGB кольцо на контроллере W2812 питается от напряжения 5 В, выход D2 Arduino подключается ко входу DI светодиодного кольца. В качестве источника точного времени используются часы реального времени DS3231.

Так же в центр светодиодного кольца можно добавить индикатор TM1637 часового типа (с двумя точками в центре) и выводить время (часы и минуты).

 

#include <Adafruit_NeoPixel.h>           // https://github.com/adafruit/Adafruit_NeoPixel.git
#include <Wire.h>
#include <STM32_TM1637.h>                // https://rcl-radio.ru/wp-content/uploads/2020/02/STM32_TM1637_V1_3.zip
#include <DS3231.h>                      //https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
 DS3231 clock;
 RTCDateTime DateTime;
 STM32_TM1637 tm(4,3);// CLK, DIO
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 2, NEO_GRB + NEO_KHZ400);// 4 трека, D2
 
byte i,s,m,h,mm,sm,sh,mh;
unsigned long t;
 
void setup(){
  pinMode(5,INPUT);
  strip.begin();Wire.begin(); clock.begin();
  tm.brig(5);
  clock.setOutput(DS3231_1HZ);
// clock.setDateTime(__DATE__, __TIME__);
}
 
void loop(){ 
    DateTime=clock.getDateTime();
    s = DateTime.second/5;
    m = DateTime.minute/5;
    h = DateTime.hour;
    if(h>12){h=h-12;}
    if(s==m){sm=10;}else{sm=0;}
    if(s==h){sh=10;}else{sh=0;}
    if(m==h){mh=10;}else{mh=0;}
 
    if(s==0){strip.setPixelColor(11, strip.Color(0, 0, 0));}
    else{strip.setPixelColor(s-1, strip.Color(0, 0, 0)); }
    if(m==0){strip.setPixelColor(11, strip.Color(0, 0, 0));}
    else{strip.setPixelColor(m-1, strip.Color(0, 0, 0)); }
    if(h==0){strip.setPixelColor(11, strip.Color(0, 0, 0));}
    else{strip.setPixelColor(h-1, strip.Color(0, 0, 0)); }
    strip.setPixelColor(s, strip.Color(0, 10, 0));
    strip.setPixelColor(m, strip.Color(0, sm, 10));
    strip.setPixelColor(h, strip.Color(10, sh, mh));
    strip.show();
    tm.print_time(DateTime.hour*100+DateTime.minute, digitalRead(5));
   // delay(500);
}

Для мигания двоеточия в TM1637, необходимо выход SQW DS3231 подключить ко входу Arduino D5.

Дополнительные материалы:

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Простое зарядное уст-во с регулируемым током зарядки

    Простое зарядное уст-во с регулируемым током зарядки

    На рисунке показана схема простого зарядного уст-ва автомобильных аккумуляторов с регулируемым током зарядки. Зарядное уст-во основано на стабилизаторе L200 регулятора. Основные параметры стабилизатора L200CV: Максимальное входное напряжение 40В Максимальная разница напряжений «вход-выход» 32В Выходное напряжение 2,8..36В Выходной ток до 2А Минимальное падение напряжения «вход-выход» (dropout) <2,5В Ток потребления (по выводу …Подробнее...
  • УНЧ на TDA1558Q

    УНЧ на TDA1558Q

    Напряжение питания 6…18В Максимальный ток нагрузки 4А Выходная мощность при Uп=14,4В и Rн=4Ом: КНИ=0,5% — 5Вт КНИ=10% — 6Вт Ток покоя 80мАПодробнее...
  • Недорогой узкополосный FM-приемник на 68…88МГц

    На рисунке показана схема простого приемника FM-диапазона, настройка на станцию осуществляется потенциометром Р2. Полевой транзистор Т1 обеспечивает усиление входного радиосигнала на 18дБ, запитывая входную цепь TDA7000 через разделительный конденсатор С5. Ряд конденсаторов вокруг микросхемы предназначен для формирования полосы пропускания около 70 кГц. Перестраиваемый генератор строится на базе варикапа D1. Напряжение …Подробнее...
  • Полицейская сирена на LM324

    Полицейская сирена на LM324

    Данная схема издает звук напоминающий полицейскую сирену. Схема основана на ОУ LM324 представляющий собой генератор ЗЧ. При нажатии на кнопку SA1 начнет быстро заряжаться С1, сирена начнет издавать звук. При размыкании контактов SA1  сирена будет работать до тех пор пока не разрядится через R2 конденсатор С1. Источник — http://www.eleccircuit.com/police-bicycle-siren-circuits/Подробнее...
  • Простой тестер проверки радиоэлементов

    При регулировке и настройке электронной аппаратуры применяют вспомогательные устройства: индикаторы состояний, «прозвоночные” приборы и тестеры, с помощью которых выполняют различные операции: от простейшей – по проверке целостности цепей до сложной – по измерению параметров радиоэлементов. Сложные тестеры необходимы, когда выполнена проверка работоспособности радиоэлемента и необходимо уточнить значения его параметров. Оценку …Подробнее...