#include <GyverButton.h>
#define MIN_PIN 5 // Пин минутной кнопки
#define HUR_PIN 4 // Пин часовой кнопки
GButton MinBut(MIN_PIN);
GButton HourBut(HUR_PIN);
#include <microWire.h>
#include <microDS3231.h>
MicroDS3231 rtc;
#include <GyverHacks.h>
#define REPLACE_FASTLED
#include <microLED.h>
#define LED_PIN 6 // Пин дата от ленты
#define NUM_LEDS 114 // 4*7*4 +2 Кол-во светодиодов
#define ORDER_GRB // Тип ленты
#define COLOR_DEBTH 3 // цветовая глубина: 1, 2, 3 (в байтах)
//#include <DS3232RTC.h>
//#include <TimeLib.h>
//#include <Time.h>
//#include <Wire.h>
//#include <OneWire.h>
#include <DallasTemperature.h>
//#include <FastLED.h>
//#include <iarduino_RTC.h>
//iarduino_RTC time(RTC_DS1302,12,10,11);
//iarduino_RTC time(RTC_DS3231);
#include <iarduino_Pressure_BMP.h>
iarduino_Pressure_BMP sensor(0x76);
//#define NUM_LEDS 114 // 4*7*4 +2 Кол-во светодиодов
//#define COLOR_ORDER GRB // Тип ленты
//#define DST_PIN 2 // Define DST adjust button pin
// сигнальный провод подключен к 2 пину на Arduino
#define ONE_WIRE_BUS_2 2
// настроим библиотеку 1-Wire для связи с датчиком
OneWire oneWire_out(ONE_WIRE_BUS_2);
// создадим объект для работы с библиотекой DallasTemperature
DallasTemperature sensors(&oneWire_out);
//CRGB leds[NUM_LEDS]; // Define LEDs strip
LEDdata leds[NUM_LEDS]; // буфер ленты типа LEDdata (размер зависит от COLOR_DEBTH)
microLED strip(leds, NUM_LEDS, LED_PIN); // объект лента
// 0,0,0,0
// 1,1,1,1
// 1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728
byte digits[14][28] = {{0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // Digit 0
{0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1}, // Digit 1
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0}, // Digit 2
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1}, // Digit 3
{1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1}, // Digit 4
{1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1}, // Digit 5
{1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // Digit 6
{0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1}, // Digit 7
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // Digit 8
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1}, // Digit 9 | 2D Array for numbers on 7 segment
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Digit *0
{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0}, // Digit C
{1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Digit -
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
}; // Digit
bool Dot = true; //переменная для точек
//bool DST = false; //DST state
bool TempShow = true; //переменная для температуры
bool PressShow = true; //переменная для давления
//bool DateShow = true;//переменная для даты
int last_digit = 0;
//управление цветом
//int ledColor = 0x00FFFF; // Color used (in hex)
//long ledColor = CRGB::Aqua; // Color used (in hex)
myGrad.colors[] = mAqua;
//long ledColor = CRGB::MediumVioletRed;
//Random colors i picked up
//массив цветов, для рандом при включенном режиме cylon(); ledColor = ColorTable[random(16)];
long ColorTable[16] = {
CRGB::Amethyst,
CRGB::Aqua,
CRGB::Blue,
CRGB::Chartreuse,
CRGB::DarkGreen,
CRGB::DarkMagenta,
CRGB::DarkOrange,
CRGB::DeepPink,
CRGB::Fuchsia,
CRGB::Gold,
CRGB::GreenYellow,
CRGB::LightCoral,
CRGB::Tomato,
CRGB::Salmon,
CRGB::Red,
CRGB::Orchid
};
void setup() {
Serial.begin(9600);
setADCrate(1);
// time.begin();
// запуск датчиков
sensor.begin(); //датчики
sensors.begin();//датчик уличной температуры
Wire.begin();
// FastLED.addLeds<WS2812B, LED_PIN, RGB>(leds, NUM_LEDS);
// LEDS.setBrightness(75); // Установка яркости
strip.setBrightness(75);
// pinMode(DST_PIN, INPUT_PULLUP); // Define DST adjust button pin
pinMode(MIN_PIN, INPUT_PULLUP); // Define Minutes adjust button pin
pinMode(HUR_PIN, INPUT_PULLUP); // Define Hours adjust button pin
pinMode(A3, OUTPUT); //контакт GND барометра
// digitalWrite(A3, LOW);//подача земли на барометр
setPin(A3, LOW);
// pinMode(8, OUTPUT); //контакт GND датчика осв
pinMode(9, OUTPUT); //контакт VCC датчика осв
// digitalWrite(8, LOW);//подача земли на датчик осв
// digitalWrite(9, HIGH);//подача питания на датчик осв
setPin(9, HIGH);
// pinMode(A2, OUTPUT); //контакт GND часов
// pinMode(A1, OUTPUT); //контакт VCC часов
// digitalWrite(A2, LOW);//подача земли на часы
// digitalWrite(A1, HIGH);//подача питания на часы
// pinMode(A6, OUTPUT); //контакт GND уличного термометра, на общей земле сейчас
// pinMode(A7, OUTPUT); //контакт VCC уличного термометра, на дополнительном питании на ножке резистора
// digitalWrite(A6, LOW);//подача земли на уличный термометр
// digitalWrite(A7, HIGH);//подача питания на уличный термометр
}
// Get time in a single number, if hours will be a single digit then time will be displayed 155 instead of 0155
int GetTime() {
// time.gettime();
// tmElements_t Now;
// RTC.read(Now);
//time_t Now = RTC.Now();// Getting the current Time and storing it into a DateTime object
// int hour = time.Hours;
uint8_t hour = rtc.getHours();
// int minute = time.minutes;
uint8_t minute = rtc.getMinutes();
// int second = time.seconds;
uint8_t second = rtc.getSeconds();
Serial.print(hour); Serial.print(":"); // Вывод часов
Serial.print(minute); Serial.print(":"); // Вывод минут
Serial.print(second); Serial.println(""); // Вывод секунд
// if (second % 2==0) {Dot = false;}
// else {Dot = true;};
Dot = second % 2;
return (hour * 100 + minute);
};
int GetSecond() { //функция запроса текущей секунды, результат в переменной "second"
// time.gettime();
// int second = time.seconds;
uint8_t second = rtc.getSeconds();
return (second);
};
// Выбор яркости по данным датчика освещенности
void BrightnessCheck() {
// int hour = time.Hours;
uint8_t hour = rtc.getHours();
const byte sensorPin = A0; // контакт датчика осв
const byte brightnessLow = 5; // низкая яркость
const byte brightnessMid = 10; // низкая яркость
const byte brightnessHigh = 40; // высокая яркость
const byte brightnessDay = 60; // высокая яркость
int sensorValue = analogRead(sensorPin); // Считывание датчика
// int sensorValue = digitalRead(sensorPin); // Считывание датчика
// Serial.print("Датчик: ");Serial.println(sensorValue);
sensorValue = map(sensorValue, 0, 1023, 0, 255);//перевод диапазона измерения
LEDS.setBrightness(sensorValue);
//Serial.println(hour);
//эксперименты освещенности в зависимости от времени
// if (hour=23||hour>=0 && hour<=7) {LEDS.setBrightness(5);}
// else
// if (sensorValue == 0) {LEDS.setBrightness(brightnessHigh);}
// else {LEDS.setBrightness(brightnessLow);
// }
//если в комнате светло, то светит ярче, если мало света, то тусклее, в ночном режиме светит тускло
if (sensorValue >= 221 && sensorValue <= 240) {
LEDS.setBrightness(brightnessHigh);
delay(1000);
}
else if (sensorValue >= 241 && sensorValue <= 252) {
LEDS.setBrightness(brightnessMid);
delay(1000);
}
else if (sensorValue >= 253) {
LEDS.setBrightness(brightnessLow);
delay(1000);
}
else if (sensorValue <= 220) {
LEDS.setBrightness(brightnessDay);
delay(1000);
}
// Serial.println("Датчик: ");
// Serial.println(sensorValue);
};
// Конвертация времени в массив, для отображения на дисплее
void TimeToArray() {
// time.gettime();
int Now = GetTime(); // Get time
int cursor = 114; // last led number
//Serial.print("Time is: ");Serial.println(Now);
/* if (DST){ // if DST is true then add one hour
Now+=100;
// Serial.print("DST is ON, time set to : ");Serial.println(Now);
}; */
//мигание светодиодов для секунд, горит цветом из установок, либо гаснет
if (Dot) {
leds[57] = ledColor;
leds[56] = ledColor;
}
else {
leds[57] = 0x000000;
leds[56] = 0x000000;
};
for (int i = 1; i <= 4; i++) {
int digit = Now % 10; // get last digit in time
if (i == 1) {
// Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
cursor = 86;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
if (digit != last_digit)
{
// cylon();
//ledColor = ColorTable[random(16)];
ledColor = ColorTable[2];
}
last_digit = digit;
}
else if (i == 2) {
// Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
cursor = 58;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 3) {
// Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
cursor = 28;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 4) {
// Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
cursor = 0;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
Now /= 10;
};
};
/*
// функция вывода даты
int GetDate(){
time.gettime();
int day=time.day;
int month=time.month;
Dot = false;
return (day*100+month);
DateToArray();};
void DateToArray(){
int Now = GetDate(); // Get time
int cursor = 114; // last led number
leds[57]=0x000000;
leds[56]=0x000000;
for(int i=1;i<=4;i++){
int digit = Now % 10; // get last digit in time
if (i==1){
// Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
cursor = 86;
for(int k=0; k<=27;k++){
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1){leds[cursor]=ledColor;}
else if (digits[digit][k]==0){leds[cursor]=0x000000;};
cursor ++;
};
// Serial.println();
if (digit != last_digit)
{
// cylon();
// ledColor = ColorTable[random(16)];
}
last_digit = digit;
}
else if (i==2){
// Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
cursor =58;
for(int k=0; k<=27;k++){
// Serial.print(digits[digit][k]);
if (digits[digit][k]== 1){leds[cursor]=ledColor;}
else if (digits[digit][k]==0){leds[cursor]=0x000000;};
cursor ++;
};
// Serial.println();
}
else if (i==3){
// Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
cursor =28;
for(int k=0; k<=27;k++){
// Serial.print(digits[digit][k]);
if (digits[digit][k]== 1){leds[cursor]=ledColor;}
else if (digits[digit][k]==0){leds[cursor]=0x000000;};
cursor ++;
};
// Serial.println();
}
else if (i==4){
// Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
cursor =0;
for(int k=0; k<=27;k++){
// Serial.print(digits[digit][k]);
if (digits[digit][k]== 1){leds[cursor]=ledColor;}
else if (digits[digit][k]==0){leds[cursor]=0x000000;};
cursor ++;
};
// Serial.println();
}
Now /= 10;
};
};
*/
// Функция вывода температуры с датчика барометра
void TempToArray() {
sensor.begin();
int celsius = sensor.temperature - 1;
Serial.println(celsius);
int cursor = 114; // last led number
//отключение секундных точек
leds[57] = 0x000000;
leds[56] = 0x000000;
for (int i = 1; i <= 4; i++) {
int digit = celsius % 10; // get last digit in time
if (i == 3) {
// Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
cursor = 86;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[11][k]);
if (digits[11][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[11][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 4) {
// Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
cursor = 58;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[10][k]);
if (digits[10][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[10][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 1) {
// Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
cursor = 28;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 2) {
// Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
cursor = 0;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
celsius /= 10;
};
};
// Функция вывода температуры с уличного датчика
void TempStreetToArray() {
sensors.begin();
// delay(1000);
sensors.requestTemperatures();
if (sensors.getTempCByIndex(0) < 0) {
int celsius = (sensors.getTempCByIndex(0) * (-1));
Serial.println(celsius);
int cursor = 114; // last led number
//отключение секундных точек
leds[57] = 0x000000;
leds[56] = 0x000000;
for (int i = 1; i <= 4; i++) {
int digit = celsius % 10; // get last digit in time
if (i == 3) {
// Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
cursor = 86;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[10][k]);
if (digits[10][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[10][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 1) {
// Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
cursor = 58;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 2) {
// Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
cursor = 28;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 4) {
// Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
cursor = 0;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[12][k]);
if (digits[12][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[12][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
celsius /= 10;
};
}
else
{
int celsius = (sensors.getTempCByIndex(0));
Serial.println(celsius);
int cursor = 114; // last led number
//отключение секундных точек и точек от минуса, не помню нужны ли они и для чего делал))
leds[0] = 0x000000;
leds[1] = 0x000000;
leds[2] = 0x000000;
leds[3] = 0x000000;
leds[57] = 0x000000;
leds[56] = 0x000000;
for (int i = 1; i <= 4; i++) {
int digit = celsius % 10; // get last digit in time
if (i == 3) {
// Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
cursor = 86;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[10][k]);
if (digits[10][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[10][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 1) {
// Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
cursor = 58;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 2) {
// Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
cursor = 28;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
else if (i == 4) {
// Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
cursor = 0;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[13][k]);
if (digits[13][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[13][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
celsius /= 10;
};
};
};
// Функция вывода давление с барометра
void PressToArray() {
sensor.begin();
int davlenie = sensor.pressure;
Serial.println(davlenie);
int cursor = 85; // last led number
for (int i = 86; i <= 114; i++)
{
leds[i] = 0x000000;
}
//отключение секундных точек
leds[56] = 0x000000;
leds[57] = 0x000000;
for (int i = 1; i <= 3; i++) {
int digit = davlenie % 10; // get last digit in time
if (i == 1) {
// Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
cursor = 58;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
last_digit = digit;
}
else if (i == 2) {
// Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
cursor = 28;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
last_digit = digit;
}
else if (i == 3) {
// Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
cursor = 0;
for (int k = 0; k <= 27; k++) {
// Serial.print(digits[digit][k]);
if (digits[digit][k] == 1) {
leds[cursor] = ledColor;
}
else if (digits[digit][k] == 0) {
leds[cursor] = 0x000000;
};
cursor ++;
};
// Serial.println();
}
//отключил первый символ и сдвинул регистр вправо, чтобы понятно было, какой датчик показывает температуру)
/* else if (i==2){
Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
cursor =0;
for(int k=0; k<=27;k++){
Serial.print(digits[digit][k]);
if (digits[digit][k]== 1){leds[cursor]=ledColor;}
else if (digits[digit][k]==0){leds[cursor]=0x000000;};
cursor ++;
};
Serial.println();
}*/
davlenie /= 10;
};
};
/*
void DSTcheck(){
int buttonDST = digitalRead(DST_PIN);
if (buttonDST == HIGH){
delay(500);
ledColor = ColorTable[random(16)];
};
}
*/
/*
//настройка времени
void TimeAdjust(){
int buttonH = digitalRead(HUR_PIN);
int buttonM = digitalRead(MIN_PIN);
if (buttonH == LOW || buttonM == LOW){
delay(50);
time.gettime();
// tmElements_t Now;
// RTC.read(Now);
int hour=time.Hours;
int minutes=time.minutes;
int second =time.seconds;
if (buttonH == LOW){
if (hour== 23){hour=0;}
else {hour += 1;};
}else {
if (minutes== 59){minutes=0;}
else {minutes += 1;};
};
// RTC.write(Now);
time.settime(0, minutes, hour); }
}
*/
void SetTime() {
uint8_t hours = rtc.getHours();
uint8_t minutes = rtc.getMinutes();
HourBut.tick();
if (HourBut.isClick()) {
if (hours == 23) {
hours = 0;
}
else {
hours += 1;
}
}
MinBut.tick();
if (MinBut.isClick()) {
if (minutes == 59) {
minutes = 0;
}
else {
minutes += 1;
}
}
if (MinBut.isHold()) {
if (minutes == 59) {
minutes = 0;
}
else {
minutes += 5;
};
}
rtc.setTime(0, minutes, hours,"","","");
}
//вот эта функция отвечает за смену цветов и всяким эффектам, нужно открыть void fadeall и void cylon и открыть выше в коде))
// спецэффекты
//void fadeall() { for(int i = 0; i < NUM_LEDS; i++) { leds[i].nscale8(250); } }
/*
void cylon () {
static uint8_t hue = 0;
Serial.print("x");
// First slide the led in one direction
for(int i = 0; i < NUM_LEDS; i++) {
// Set the i'th led to red
leds[i] = CHSV(hue++, 255, 255);
// Show the leds
FastLED.show();
// now that we've shown the leds, reset the i'th led to black
// leds[i] = CRGB::Black;
fadeall();
// Wait a little bit before we loop around and do it again
delay(10);
}
Serial.print("x");
// Now go in the other direction.
for(int i = (NUM_LEDS)-1; i >= 0; i--) {
// Set the i'th led to red
leds[i] = CHSV(hue++, 255, 255);
// Show the leds
FastLED.show();
// now that we've shown the leds, reset the i'th led to black
// leds[i] = CRGB::Black;
fadeall();
// Wait a little bit before we loop around and do it again
delay(10);
}
}
*/
void loop() // Main loop
{
// DSTcheck(); // Check DST
BrightnessCheck();
// TimeAdjust(); // Check to se if time is geting modified
SetTime;
// TimeToArray(); // Get leds array with required configuration
// displayDate();
// TempToArray();
// PressToArray();
// if (TempShow == true)
// delay (5000);
// if (PressShow == true)
// delay (5000);
// if (DateShow == true)
// delay (5000);
//очередность вывода показаний с датчиков и задержка отображения
TimeToArray();
strip.show();
delay(1000);
TimeToArray();
strip.show();
delay(1000);
TimeToArray();
strip.show();
delay(1000);
TimeToArray();
strip.show();
delay(1000);
TimeToArray();
strip.show();
delay(1000);
TempToArray();
strip.show();
delay(2000);
TempStreetToArray();
strip.show();
delay(2000);
PressToArray();
strip.show();
delay(2000);
/*
// if (GetSecond()>=0 && GetSecond() <= 10 || (GetSecond()>=17 &&GetSecond()<=27) )
// {TimeToArray();} //вызов функции отображения времени 1
if (GetSecond()>=16 && GetSecond()<=20 || (GetSecond()>=41 &&GetSecond()<=45))
{TempStreetToArray();} //вызов функции отображения уличной температуры
else if (GetSecond()>=8 && GetSecond()<=15 || (GetSecond()>=34 &&GetSecond()<=40))
{TempToArray();} //вызов функции отображения температуры
else if (GetSecond()>=21&& GetSecond()<=25 || (GetSecond()>=46 && GetSecond()<=50))
{PressToArray();}//вызов функции отображения давления
else {TimeToArray();} //вызов функции отображения времени
*/
// FastLED.show(); // Display leds array
}