Re: Ретро часы на ИВ-6
Это скетч в который я бы хоте добавить настройку времени.
#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;RTCDateTime DateTime;
int an, segm,i;
byte a[6];
#define NUM_LEDS 5
#include "FastLED.h"
#define PIN 13
#define MAX_BRIGHTNESS 164 // Thats full on, watch the power!
#define MIN_BRIGHTNESS 32 // set to a minimum of 25%
int const brightnessInPin = A0; // Вывод аналогового входа, к которому подключен потенциометр управления яркостью.
CRGB leds[NUM_LEDS];
byte counter;
void setup(){
FastLED.addLeds<WS2812, PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness(MAX_BRIGHTNESS);
pinMode(13, OUTPUT);
Wire.begin();clock.begin();
MsTimer2::set(2, to_Timer);MsTimer2::start();
// clock.setDateTime(__DATE__, 00TIME45); // Устанавливаем время на часах, основываясь на времени компиляции скетча
pinMode(9,OUTPUT); // D9 === A0
pinMode(10,OUTPUT); // D10 === A1
pinMode(11,OUTPUT); // D11 === A2
pinMode(12,OUTPUT); // D12 === A3
pinMode(0,OUTPUT); // D0 === A4
pinMode(1,OUTPUT); // D1 === A5
pinMode(2,OUTPUT); // D2 === a
pinMode(3,OUTPUT); // D3 === b
pinMode(4,OUTPUT); // D4 === c
pinMode(5,OUTPUT); // D5 === d
pinMode(6,OUTPUT); // D6 === e
pinMode(7,OUTPUT); // D7 === f
pinMode(8,OUTPUT); // D8 === g
}
void loop(){
int mappedValue = map(analogRead(brightnessInPin), 0, 1023, 0, 255);
FastLED.setBrightness(constrain(mappedValue, MIN_BRIGHTNESS, MAX_BRIGHTNESS));
int mappedHue;
for (int i = 0; i < NUM_LEDS; i++ ) { // от 0 до первой трети
leds[i] = CHSV(counter + i * 2, 255, 255); // HSV. Увеличивать HUE (цвет)
// умножение i уменьшает шаг радуги
}
counter++; // counter меняется от 0 до 255 (тип данных byte)
FastLED.show();
delay(9); // скорость движения радуги
DateTime=clock.getDateTime();// опрос времени
a[0]=DateTime.hour/10;
a[1]=DateTime.hour%10;
a[2]=DateTime.minute/10;
a[3]=DateTime.minute%10;
a[4]=DateTime.second/10;
a[5]=DateTime.second%10;
}// loop
void to_Timer(){
switch(i){
case 0: segm=a[0]; an=0; anod(); segment();break;
case 1: segm=a[1]; an=1; anod(); segment();break;
case 2: segm=a[2]; an=2; anod(); segment();break;
case 3: segm=a[3]; an=3; anod(); segment();break;
case 4: segm=a[4]; an=4; anod(); segment();break;
case 5: segm=a[5]; an=5; anod(); segment();break;
}
i++;if(i>5){i=0;}}
void segment(){
switch(segm){
// A B C D E F G
case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);break;// 0
case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 1
case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);break;// 2
case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);break;// 3
case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);break;// 4
case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 5
case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 6
case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 7
case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 8
case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 9
}}
void anod(){
switch(an){
case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);ch(0,1);ch(1,1);break;
case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);ch(0,1);ch(1,1);break;
case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);ch(0,1);ch(1,1);break;
case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);ch(0,1);ch(1,1);break;
case 4:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(0,0);ch(1,1);break;
case 5:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(0,1);ch(1,0);break;
}}
void ch(int pin, int logic){digitalWrite(pin,logic);}