#include "Adafruit_NeoPixel.h"
#include "TM1637Display.h"
// #include "WiFiManager.h"
#include "NTPClient.h"
//#include <FastLED.h>
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 19 //Era 5 // Strip led DIN
#define red_CLK 4 //Era 16 - DISPLAY
#define red1_DIO 5 //Era 17 - DISPLAY 1
#define red2_DIO 6 //Era 18 - DISPLAY 2
#define red3_DIO 7 //Era 19 - DISPLAY 3
// #define AM 8 //Era 32
// #define PM 9 //Era 33
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 16 // Numero total de LEDs
bool res;
int var=0;
int analogPin = 3; //Era 34 - SWITCH
const long utcOffsetInSeconds = 3600; // Offset in second
int Hour = 0;
//========================USEFUL VARIABLES=============================
int UTC = -3; // UTC + value in hour - Summer time
int Display_backlight = 3; // Set displays brightness 0 to 7;
// const char *ssid = "VIRLT_2.4g";
// const char *password = "vIrlt#B026@274E";
//======================================================================
// When setting up the NeoPixel library, we tell it how many pixels,
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// Setup the red displays
TM1637Display red1(red_CLK, red1_DIO);
TM1637Display red2(red_CLK, red2_DIO);
TM1637Display red3(red_CLK, red3_DIO);
// WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds*UTC);
// #define NUM_LEDS 36
// CRGB leds[NUM_LEDS];
void setup() {
// FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
pinMode(PIN, OUTPUT);
pinMode(red_CLK, OUTPUT);
pinMode(red1_DIO, OUTPUT);
pinMode(red2_DIO, OUTPUT);
pinMode(red3_DIO, OUTPUT);
pinMode(AM, OUTPUT);
pinMode(PM, OUTPUT);
pinMode(analogPin, INPUT);
//manager.resetSettings();
Serial.begin(9600);
// WiFi.begin(ssid, password);
// while ( WiFi.status() != WL_CONNECTED ) {
// delay ( 500 );
// Serial.print ( "." );
// }
timeClient.begin();
red1.setBrightness(Display_backlight);
red2.setBrightness(Display_backlight);
red3.setBrightness(Display_backlight);
pixels.setBrightness(250);
}
void loop() {
timeClient.update();
Serial.print("Time: ");
Serial.println(timeClient.getFormattedTime());
unsigned long epochTime = timeClient.getEpochTime();
struct tm *ptm = gmtime ((time_t *)&epochTime);
int currentYear = ptm->tm_year+1900;
Serial.print("Year: ");
Serial.println(currentYear);
int monthDay = ptm->tm_mday;
Serial.print("Month day: ");
Serial.println(monthDay);
int currentMonth = ptm->tm_mon+1;
Serial.print("Month: ");
Serial.println(currentMonth);
if (timeClient.getHours() == 0)
{
Hour = 12;
Serial.write(" =0");
}
else if (timeClient.getHours() == 12)
{
Hour = timeClient.getHours();
Serial.write(" =12");
}
else if (timeClient.getHours() >= 13) {
Hour = timeClient.getHours() - 12;
Serial.write(" >=13");
}
else {
Hour = timeClient.getHours();
}
// Secs = timeClient.getMinutes();
// Test = Secs/60
// if (Test==even)
// red3.showNumberDecEx(Hour,0b01000000,true,2,0);
// else ()
// red3.showNumberDecEx(Hour,0b01000000,false,2,0);
// endif;
red1.showNumberDecEx(monthDay,0b01000000,true,2,0); //era 2,2 Inversão de mes_dia para dia_mes
red1.showNumberDecEx(currentMonth,0b01000000,true,2,2); //era 2,0 Inversão de mes_dia para dia_mes
red2.showNumberDecEx(currentYear,0b00000000,true);
// Teste blink
red3.showNumberDecEx(Hour,0b01000000,true,2,0);
red3.showNumberDecEx(timeClient.getMinutes(),0b01000000,true,2,2);
delay(1000) // Deletar caso teste errado
red3.showNumberDec(Hour, true); // Deletar caso teste errado
if(timeClient.getHours()>=13){
digitalWrite(AM,0);
digitalWrite(PM,1);}
else if(timeClient.getHours()==12){
digitalWrite(AM,0);
digitalWrite(PM,1);}
else{
digitalWrite(AM,1);
digitalWrite(PM,0);}
pixels.clear(); // Set all pixel colors to 'off'
if(var>3){var = 0;} // Reset counter
// read the switch
if(analogRead(analogPin) > 100)
{
var = var+1 ;
delay(45);
}
Serial.print("Var=");
Serial.println(var);
Serial.print("Digital=");
Serial.println(analogRead(analogPin));
delay(100); // 6>12, 12>24 e 18>36
switch (var) {
case 0:
for(int i=0; i<15;i++){
pixels.setPixelColor(i, pixels.Color(255,0,0));
}
for(int i=5; i<10;i++){
pixels.setPixelColor(i, pixels.Color(255,240,0)); //era 160,160,0
}
for(int i=10; i<16;i++){
pixels.setPixelColor(i, pixels.Color(255,0,0));
}
pixels.show();
break;
case 1:
for(int i=0; i<5;i++){
pixels.setPixelColor(i, pixels.Color(0,0,255));
}
for(int i=5; i<10;i++){
pixels.setPixelColor(i, pixels.Color(200,250,255));
}
for(int i=10; i<16;i++){
pixels.setPixelColor(i, pixels.Color(0,0,255));
}
pixels.show();
break;
case 2:
pixels.clear();
for(int i=0; i<5;i++){
pixels.setPixelColor(i, pixels.Color(255,0,10));
}
for(int i=5; i<10;i++){
pixels.setPixelColor(i, pixels.Color(0,10,255));
}
for(int i=10; i<16;i++){
pixels.setPixelColor(i, pixels.Color(255,0,10));
}
pixels.show();
break;
case 3:
pixels.clear();
for(int i=0; i<36;i++){ //era 16
pixels.setPixelColor(i, pixels.Color(0,0,0));
}
pixels.show();
break;
}
}