Created
March 17, 2019 12:19
-
-
Save witnessmenow/4e631fe355abdf38c7b31c0ca9eb9dc1 to your computer and use it in GitHub Desktop.
AlarmClock code with EZTime library
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <ESP8266WiFi.h> | |
#include <TM1637Display.h> | |
#include <ezTime.h> | |
// Both can be installed from library manager | |
char ssid[] = "SSID"; // your network SSID (name) | |
char password[] = "password"; // your network password | |
// Module connection pins (Digital Pins) | |
#define CLK D6 | |
#define DIO D5 | |
TM1637Display display(CLK, DIO); | |
boolean dotsOn; | |
unsigned long oneSecondLoopDue = 0; | |
Timezone myTZ; | |
const uint8_t LETTER_A = SEG_A | SEG_B | SEG_C | SEG_E | SEG_F | SEG_G; | |
const uint8_t LETTER_B = SEG_C | SEG_D | SEG_E | SEG_F | SEG_G; | |
const uint8_t LETTER_C = SEG_A | SEG_D | SEG_E | SEG_F; | |
const uint8_t LETTER_D = SEG_B | SEG_C | SEG_D | SEG_E | SEG_G; | |
const uint8_t LETTER_E = SEG_A | SEG_D | SEG_E | SEG_F | SEG_G; | |
const uint8_t LETTER_F = SEG_A | SEG_E | SEG_F | SEG_G; | |
const uint8_t LETTER_O = SEG_C | SEG_D | SEG_E | SEG_G; | |
const uint8_t SEG_BOOT[] = { | |
LETTER_B, // b | |
LETTER_O, // o | |
LETTER_O, // o | |
SEG_D | SEG_E | SEG_F | SEG_G // t - kinda | |
}; | |
void setup() { | |
Serial.begin(115200); | |
display.setBrightness(0xff); | |
display.setSegments(SEG_BOOT); | |
// Set WiFi to station mode and disconnect from an AP if it was Previously | |
// connected | |
WiFi.mode(WIFI_STA); | |
WiFi.disconnect(); | |
delay(100); | |
// Attempt to connect to Wifi network: | |
Serial.print("Connecting Wifi: "); | |
Serial.println(ssid); | |
WiFi.begin(ssid, password); | |
while (WiFi.status() != WL_CONNECTED) | |
{ | |
Serial.print("."); | |
delay(500); | |
} | |
Serial.println(""); | |
Serial.println("WiFi connected"); | |
// Uncomment the line below to see what it does behind the scenes | |
// setDebug(INFO); | |
waitForSync(); | |
Serial.println(); | |
Serial.println("UTC: " + UTC.dateTime()); | |
// Provide official timezone names | |
// https://en.wikipedia.org/wiki/List_of_tz_database_time_zones | |
//myTZ.setLocation(F("Pacific/Auckland")); | |
//Serial.print(F("New Zealand: ")); | |
//Serial.println(myTZ.dateTime()); | |
// Wait a little bit to not trigger DDoS protection on server | |
// See https://github.com/ropg/ezTime#timezonedropnl | |
//delay(5000); | |
// Or country codes for countries that do not span multiple timezones | |
myTZ.setLocation(F("ie")); | |
Serial.print(F("Time in Ireland: ")); | |
Serial.println(myTZ.dateTime()); | |
} | |
void displayTime(bool dotsVisible) { | |
String timeHour = myTZ.dateTime("H"); | |
String timeMinutes = myTZ.dateTime("i"); | |
uint8_t data[4]; | |
data[0] = display.encodeDigit(timeHour.substring(0,1).toInt()); | |
data[1] = display.encodeDigit(timeHour.substring(1).toInt()); | |
if (dotsVisible) { | |
// Turn on double dots | |
data[1] = data[1] | B10000000; | |
} | |
data[2] = display.encodeDigit(timeMinutes.substring(0,1).toInt()); | |
data[3] = display.encodeDigit(timeMinutes.substring(1).toInt()); | |
display.setSegments(data); | |
} | |
void loop() { | |
events(); | |
unsigned long now = millis(); | |
if (now > oneSecondLoopDue) { | |
displayTime(dotsOn); | |
dotsOn = !dotsOn; | |
// checkForAlarm(); | |
// if (buttonPressed) { | |
// alarmHandled = true; | |
// buttonPressed = false; | |
// } | |
oneSecondLoopDue = now + 1000; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment