ESP8266
экран SSD1306
Собрал из всяких разных исходников время и погоду, научился переключать экраны помогите пожалуйста встроить курс валют и курс биткоина
экран SSD1306
Собрал из всяких разных исходников время и погоду, научился переключать экраны помогите пожалуйста встроить курс валют и курс биткоина
JavaScript:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h> // http web access library
#include <ESP8266WebServer.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "eflogo.h"
#include <ArduinoJson.h>
#include <Fonts/FreeSerifBold18pt7b.h>
#include <Fonts/FreeSansBold12pt7b.h>
#include <Adafruit_SSD1306.h> // include Adafruit SSD1306 OLED display driver
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET LED_BUILTIN
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// =======================================================================
// Конфигурация устройства:
// =======================================================================
const char* ssid = "wifi"; // SSID
const char* password = "pass"; // пароль
String weatherKey = "1f7fb68ca5d9a8dd3"; // Чтобы получить API ключь, перейдите по ссылке http://openweathermap.org/api
String weatherLang = "&lang=ru";
String cityID = "706524"; //Kerch
String Location = "Kerch";
String API_Key = "1f7fb68ccbehkd1b2d0a5d9a8dd3";
// =======================================================================
WiFiClient client;
// ======================== Погодные переменные
String weatherMain = "";
String weatherDescription = "";
String weatherLocation = "";
String country;
int humidity;
int pressure;
float temp;
float tempMin, tempMax;
int clouds;
float windSpeed;
String date;
String currencyRates;
String weatherString;
void setup() {
// Serial.begin(115200); // Дебаг
// ======================== Соединение с WIFI
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password); // Подключаемся к WIFI
while (WiFi.status() != WL_CONNECTED) { // Ждем до посинения
delay(500);
// Serial.print(".");
}
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
// init done
Wire.setClock(400000); // set I2C clock to 400kHz
display.clearDisplay(); // clear the display buffer
display.setTextColor(WHITE, BLACK);
display.setTextSize(1);
display.setCursor(0, 0);
display.drawBitmap(0, 0, eflogo, 127, 64, WHITE); // выводим изображение (X, Y, bmp, ширина, высота, цвет)
display.display();
delay(3000);
display.startscrolldiagright(0x00, 0x07);
delay(2000);
display.startscrolldiagleft(0x00, 0x07);
delay(2000);
display.stopscroll();
delay(4000);
display.clearDisplay();
}
// =========================== Переменные времени
#define MAX_DIGITS 16
byte dig[MAX_DIGITS]={0};
byte digold[MAX_DIGITS]={0};
byte digtrans[MAX_DIGITS]={0};
int updCnt = 0;
int dots = 0;
long dotTime = 0;
long clkTime = 0;
int dx=0;
int dy=0;
byte del=0;
int h,m,s;
// =======================================================================
void loop() {
if(updCnt<=0) { // каждые 10 циклов получаем данные времени
updCnt = 10;
// Serial.println("Getting data ...");
getTime();
// Serial.println("Data loaded");
clkTime = millis();
}
if(millis()-clkTime > 10000 && !del && dots) { //каждые 15 секунд
pogoda();
updCnt--;
clkTime = millis();
}
vremya();
if(millis()-dotTime > 500) {
dotTime = millis();
dots = !dots;
}
{
HTTPClient http; //Declare an object of class HTTPClient
// specify request destination
http.begin("http://api.openweathermap.org/data/2.5/weather?q=" + Location + "&APPID=" + API_Key); // !!
int httpCode = http.GET(); // send the request
if (httpCode > 0) // check the returning code
{
String payload = http.getString(); //Get the request response payload
DynamicJsonBuffer jsonBuffer(512);
// Parse JSON object
JsonObject& root = jsonBuffer.parseObject(payload);
if (!root.success()) {
Serial.println(F("Parsing failed!"));
return;
}
float temp = (float)(root["main"]["temp"]) - 273.15; // get temperature in °C
//int temp = root["main"]["temp"]; // get temperature in °C
int humidity = root["main"]["humidity"]; // get humidity in %
float pressure = (float)(root["main"]["pressure"]) / 1000; // get pressure in bar
float wind_speed = root["wind"]["speed"]; // get wind speed in m/s
int wind_degree = root["wind"]["deg"]; // get wind degree in °
}
http.end(); //Close connection
}
// =======================================================================
if (WiFi.status() == WL_CONNECTED) //Check WiFi connection status
{
HTTPClient http; //Declare an object of class HTTPClient
// specify request destination
http.begin("http://api.openweathermap.org/data/2.5/weather?q=" + Location + "&APPID=" + API_Key); // !!
int httpCode = http.GET(); // send the request
if (httpCode > 0) // check the returning code
{
String payload = http.getString(); //Get the request response payload
DynamicJsonBuffer jsonBuffer(512);
// Parse JSON object
JsonObject& root = jsonBuffer.parseObject(payload);
if (!root.success()) {
Serial.println(F("Parsing failed!"));
return;
}
float temp = (float)(root["main"]["temp"]) - 273.15; // get temperature in °C
//int temp = root["main"]["temp"]; // get temperature in °C
int humidity = root["main"]["humidity"]; // get humidity in %
float pressure = (float)(root["main"]["pressure"]) / 1000; // get pressure in bar
float wind_speed = root["wind"]["speed"]; // get wind speed in m/s
int wind_degree = root["wind"]["deg"]; // get wind degree in °
}
http.end(); //Close connection
}
delay(20000); // wait 1 minute
}
//========================================================================