Add some comments

This commit is contained in:
David Zovko 2020-07-31 10:33:14 +02:00 committed by GitHub
parent 648e3b6cd4
commit 01e528022b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 54 additions and 66 deletions

View File

@ -6,59 +6,51 @@
https://e-radionica.com/en/blog/add-inkplate-6-to-arduino-ide/ https://e-radionica.com/en/blog/add-inkplate-6-to-arduino-ide/
This example will show you how you can use Inkplate 6 to display API data, This example will show you how you can use Inkplate 6 to display API data,
e.g. Metaweather public weather API in this example Metaweather public weather API which provide weather info.
As a result, you get a functional weather station which shows today's
forecast and 3 days forecast on your Inkplate display.
IMPORTANT: IMPORTANT:
Make sure to change your desired city, timezone and wifi credentials below Make sure you have changed your desired city, timezone and WiFi credentials below.
Also have ArduinoJSON installed in your Arduino libraries You will also need to install ArduinoJSON library.
Download from here: https://github.com/bblanchon/ArduinoJson
Want to learn more about Inkplate? Visit www.inkplate.io Want to learn more about Inkplate? Visit www.inkplate.io
Looking to get support? Write on our forums: http://forum.e-radionica.com/en/ Looking to get support? Write on our forums: http://forum.e-radionica.com/en/
28 July 2020 by e-radionica.com 28 July 2020 by e-radionica.com
*/ */
// ---------- CHANGE HERE -------------: // ---------------- CHANGE HERE ---------------:
// Time zone for adding hours int timeZone = 2; //Update your timezone here. 2 means UTC+2
int timeZone = 2;
// City search query char city[128] = "SHENZHEN"; //Enter city name you wish to get forecast for
char city[128] = "ZAGREB";
// Change to your wifi ssid and password // Change to your WiFi SSID and password
char *ssid = ""; char *ssid = "e-radionica.com";
char *pass = ""; char *pass = "crodusino";
// ---------------------------------- #define DELAY_MS 15000 //Delay between screen refreshes goes here
// ----------------------------------------------
// Include Inkplate library to the sketch
#include "Inkplate.h" #include "Inkplate.h"
#include "Network.h" //Header file for easier code readability
// Header file for easier code readability //Include custom fonts & icons used
#include "Network.h"
// Including fonts used
#include "Fonts/Roboto_Light_48.h" #include "Fonts/Roboto_Light_48.h"
#include "Fonts/Roboto_Light_36.h" #include "Fonts/Roboto_Light_36.h"
#include "Fonts/Roboto_Light_120.h" #include "Fonts/Roboto_Light_120.h"
#include "icons.h" //Generated using embedded iconConvert.py script
// Including icons generated by the py file Inkplate display(INKPLATE_1BIT); //Inkplate object
#include "icons.h"
// Delay between API calls Network network; // All our network functions are in this object, see Network.h
#define DELAY_MS 15000
// Inkplate object //Constants used for drawing icons
Inkplate display(INKPLATE_1BIT);
// All our network functions are in this object, see Network.h
Network network;
// Contants used for drawing icons
char abbrs[32][16] = {"sn", "sl", "h", "t", "hr", "lr", "s", "hc", "lc", "c"}; char abbrs[32][16] = {"sn", "sl", "h", "t", "hr", "lr", "s", "hc", "lc", "c"};
const uint8_t *logos[16] = {icon_sn, icon_sl, icon_h, icon_t, icon_hr, icon_lr, icon_s, icon_hc, icon_lc, icon_c}; const uint8_t *logos[16] = {icon_sn, icon_sl, icon_h, icon_t, icon_hr, icon_lr, icon_s, icon_hc, icon_lc, icon_c};
// Variables for storing temperature //Variables for storing temperature
char temps[8][4] = { char temps[8][4] = {
"0F", "0F",
"0F", "0F",
@ -66,7 +58,7 @@ char temps[8][4] = {
"0F", "0F",
}; };
// Variables for storing days of the week //Variables for storing days of the week
char days[8][4] = { char days[8][4] = {
"", "",
"", "",
@ -74,18 +66,13 @@ char days[8][4] = {
"", "",
}; };
// Variable for counting partial refreshes long refreshes = 0; //Variable for counting partial refreshes
long refreshes = 0; const int fullRefresh = 10; //Constant to determine when to full update
// Constant to determine when to full update //Variables for storing current time and weather info
const int fullRefresh = 10;
// Variables for storing current time and weather info
char currentTemp[16] = "0F"; char currentTemp[16] = "0F";
char currentWind[16] = "0m/s"; char currentWind[16] = "0m/s";
char currentTime[16] = "9:41"; char currentTime[16] = "9:41";
char currentWeather[32] = "-"; char currentWeather[32] = "-";
char currentWeatherAbbr[8] = "th"; char currentWeatherAbbr[8] = "th";
@ -98,18 +85,18 @@ void drawTime();
void setup() void setup()
{ {
// Begin serial and display //Begin serial and and begin display
Serial.begin(115200); Serial.begin(115200);
display.begin(); display.begin(); //Call this function only once!
// Initial cleaning of buffer and physical screen //Initial cleaning of buffer and physical screen
display.clearDisplay(); display.clearDisplay();
display.clean(); display.clean();
// Calling our begin from network.h file //Calling our begin from network.h file
network.begin(city); network.begin(city);
// If city not found, do nothing //If city not found, write error message and stop
if (network.location == -1) if (network.location == -1)
{ {
display.setCursor(50, 290); display.setCursor(50, 290);
@ -120,57 +107,57 @@ void setup()
; ;
} }
// Welcome screen //Welcome screen
display.setCursor(50, 290); display.setCursor(50, 290);
display.setTextSize(3); display.setTextSize(3);
display.print(F("Welcome to Inkplate 6 weather example!")); display.print(F("Welcome to Inkplate 6 weather example!"));
display.display(); display.display();
// Wait a bit before proceeding //Wait a bit before proceeding
delay(5000); delay(3000);
} }
void loop() void loop()
{ {
// Clear display //Clear display
display.clearDisplay(); display.clearDisplay();
// Get all relevant data, see Network.cpp for info //Get all relevant data, see Network.cpp for info
network.getTime(currentTime); network.getTime(currentTime);
network.getDays(days[0], days[1], days[2], days[3]); network.getDays(days[0], days[1], days[2], days[3]);
network.getData(city, temps[0], temps[1], temps[2], temps[3], currentTemp, currentWind, currentTime, currentWeather, currentWeatherAbbr); network.getData(city, temps[0], temps[1], temps[2], temps[3], currentTemp, currentWind, currentTime, currentWeather, currentWeatherAbbr);
// Draw data, see functions below for info //Draw data, see functions below in Network.cpp for info
drawWeather(); drawWeather();
drawCurrent(); drawCurrent();
drawTemps(); drawTemps();
drawCity(); drawCity();
drawTime(); drawTime();
// Refresh full screen every fullRefresh times, defined above //Refresh full screen every fullRefresh times
if (refreshes % fullRefresh == 0) if (refreshes % fullRefresh == 0)
display.display(); display.display();
else else
display.partialUpdate(); display.partialUpdate();
// Go to sleep before checking again //Go to sleep before checking again
esp_sleep_enable_timer_wakeup(1000L * DELAY_MS); esp_sleep_enable_timer_wakeup(1000L * DELAY_MS);
(void)esp_light_sleep_start(); (void)esp_light_sleep_start();
++refreshes; ++refreshes;
} }
// Function for drawing weather info //Function for drawing weather info
void drawWeather() void drawWeather()
{ {
// Searching for weather state abbreviation // Searching for weather state abbreviation
for (int i = 0; i < 10; ++i) for (int i = 0; i < 10; ++i)
{ {
// If found draw specified icon //If found draw specified icon, draw it
if (strcmp(abbrs[i], currentWeatherAbbr) == 0) if (strcmp(abbrs[i], currentWeatherAbbr) == 0)
display.drawBitmap(50, 50, logos[i], 152, 152, BLACK); display.drawBitmap(50, 50, logos[i], 152, 152, BLACK);
} }
// Draw weather state //Draw current weather state
display.setTextColor(BLACK, WHITE); display.setTextColor(BLACK, WHITE);
display.setFont(&Roboto_Light_36); display.setFont(&Roboto_Light_36);
display.setTextSize(1); display.setTextSize(1);
@ -178,10 +165,10 @@ void drawWeather()
display.println(currentWeather); display.println(currentWeather);
} }
// Function for drawing current time //Function for drawing current time
void drawTime() void drawTime()
{ {
// Drawing current time //Drawing current time stored in currentTime variable
display.setTextColor(BLACK, WHITE); display.setTextColor(BLACK, WHITE);
display.setFont(&Roboto_Light_36); display.setFont(&Roboto_Light_36);
display.setTextSize(1); display.setTextSize(1);
@ -190,10 +177,10 @@ void drawTime()
display.println(currentTime); display.println(currentTime);
} }
// Function for drawing city name //Function for drawing city name
void drawCity() void drawCity()
{ {
// Drawing city name //Drawing city name
display.setTextColor(BLACK, WHITE); display.setTextColor(BLACK, WHITE);
display.setFont(&Roboto_Light_36); display.setFont(&Roboto_Light_36);
display.setTextSize(1); display.setTextSize(1);
@ -202,10 +189,10 @@ void drawCity()
display.println(city); display.println(city);
} }
// Function for drawing temperatures //Function for drawing temperatures
void drawTemps() void drawTemps()
{ {
// Drawing 4 black rectangles in which temperatures will be written //Drawing 4 black rectangles into which temperatures will be written
int rectWidth = 150; int rectWidth = 150;
int rectSpacing = (800 - rectWidth * 4) / 5; int rectSpacing = (800 - rectWidth * 4) / 5;
@ -216,6 +203,7 @@ void drawTemps()
int textMargin = 6; int textMargin = 6;
//Setting font specifics, writing the actual weather info
display.setFont(&Roboto_Light_48); display.setFont(&Roboto_Light_48);
display.setTextSize(1); display.setTextSize(1);
display.setTextColor(WHITE, BLACK); display.setTextColor(WHITE, BLACK);
@ -232,7 +220,7 @@ void drawTemps()
display.setCursor(4 * rectSpacing + 3 * rectWidth + textMargin, 300 + textMargin + 70); display.setCursor(4 * rectSpacing + 3 * rectWidth + textMargin, 300 + textMargin + 70);
display.println(days[3]); display.println(days[3]);
// Drawing temperature values into black rectangles //Drawing temperature values into black rectangles
display.setFont(&Roboto_Light_48); display.setFont(&Roboto_Light_48);
display.setTextSize(1); display.setTextSize(1);
display.setTextColor(WHITE, BLACK); display.setTextColor(WHITE, BLACK);
@ -254,10 +242,10 @@ void drawTemps()
display.println(F("C")); display.println(F("C"));
} }
// Current weather drawing function //Current weather drawing function
void drawCurrent() void drawCurrent()
{ {
// Drawing current information //Drawing current information
// Temperature: // Temperature:
display.setFont(&Roboto_Light_120); display.setFont(&Roboto_Light_120);
@ -276,7 +264,7 @@ void drawCurrent()
display.setCursor(x, y); display.setCursor(x, y);
display.println(F("C")); display.println(F("C"));
// Wind: //Wind:
display.setFont(&Roboto_Light_120); display.setFont(&Roboto_Light_120);
display.setTextSize(1); display.setTextSize(1);
display.setTextColor(BLACK, WHITE); display.setTextColor(BLACK, WHITE);
@ -293,7 +281,7 @@ void drawCurrent()
display.setCursor(x, y); display.setCursor(x, y);
display.println(F("m/s")); display.println(F("m/s"));
// Labels underneath //Labels underneath
display.setFont(&Roboto_Light_36); display.setFont(&Roboto_Light_36);
display.setTextSize(1); display.setTextSize(1);