Devices & Components
1
NodeMCU ESP8266
Software & Tools
Arduino IDE
Project description
Code
Code for ESP8266 OLED
cpp
Code for ESP8266 OLED
1#include <Wire.h> 2#include <Adafruit_GFX.h> 3#include <Adafruit_SSD1306.h> 4#include <ESP8266WiFi.h> 5#include <NTPClient.h> 6#include <WiFiUdp.h> 7#include <time.h> 8 9//==== WiFi credentials ====// 10const char* ssid = "REPLACE_WITH_YOUR_SSID"; 11const char* password = "REPLACE_WITH_YOUR_PASSWORD"; 12 13//==== OLED size ====// 14#define SCREEN_WIDTH 128 15#define SCREEN_HEIGHT 64 16 17//==== OLED object ====// 18Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); 19 20//==== NTP objects ====// 21WiFiUDP ntpUDP; 22NTPClient timeClient(ntpUDP, "pool.ntp.org", 3600); 23 24//==== Weekday names ====// 25String weekDays[7] = { 26 "Sunday", "Monday", "Tuesday", "Wednesday", 27 "Thursday", "Friday", "Saturday" 28}; 29 30//==== Month names ====// 31String months[12] = { 32 "January", "February", "March", "April", 33 "May", "June", "July", "August", 34 "September", "October", "November", "December" 35}; 36 37void setup() { 38 //==== I2C pins for ESP8266 ====// 39 Wire.begin(14, 12); 40 41 //==== Initialize OLED ====// 42 if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 43 while (true); 44 } 45 46 //==== Clear display ====// 47 display.clearDisplay(); 48 display.setTextColor(WHITE); 49 50 //==== WiFi connecting message ====// 51 display.setTextSize(1); 52 display.setCursor(0, 0); 53 display.println("Connecting WiFi..."); 54 display.display(); 55 56 //==== Connect to WiFi ====// 57 WiFi.begin(ssid, password); 58 while (WiFi.status() != WL_CONNECTED) { 59 delay(500); 60 } 61 62 //==== Start NTP client ====// 63 timeClient.begin(); 64 timeClient.update(); 65} 66 67void loop() { 68 //==== Update time ====// 69 timeClient.update(); 70 71 //==== Get raw epoch time ====// 72 time_t rawTime = timeClient.getEpochTime(); 73 struct tm* timeInfo = gmtime(&rawTime); 74 75 //==== Extract date values ====// 76 int day = timeInfo->tm_mday; 77 int month = timeInfo->tm_mon; 78 int year = timeInfo->tm_year + 1900; 79 int wday = timeInfo->tm_wday; 80 81 //==== Get formatted time ====// 82 String timeStr = timeClient.getFormattedTime(); 83 84 //==== Clear OLED ====// 85 display.clearDisplay(); 86 87 //==== Draw big time ====// 88 display.setTextSize(2); 89 display.setCursor(0, 0); 90 display.println(timeStr); 91 92 //==== Draw weekday ====// 93 display.setTextSize(1); 94 display.setCursor(0, 24); 95 display.println(weekDays[wday]); 96 97 //==== Draw date ====// 98 display.setCursor(0, 36); 99 display.print(day); 100 display.print(" "); 101 display.print(months[month]); 102 display.print(" "); 103 display.println(year); 104 105 //==== Update OLED ====// 106 display.display(); 107 108 //==== Refresh every second ====// 109 delay(1000); 110}
Comments
Only logged in users can leave comments