Mám 128x64 1.3 palcový oled SPI přepnutý na I2C,potřebují vyřešit zapojení reset tohoto displeje, je nějaká možnost, na TX-RX jsem to skoušel, displej blikal, vím že to není zběrnice. #define OLED_RESET X
Kód: Vybrat vše
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h> // JSON decoding library
// Libraries for SSD1306 OLED display
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET X // GPIO
Adafruit_SSD1306 display(OLED_RESET);
// set Wi-Fi SSID and password
const char *ssid = "XXXXXX";
const char *password = "XXXXXXXXXX";
// set location and API key
String Location = "Havirov,cz";
String API_Key = "XXXXXXXXXXXXXXXXXX";
void setup(void)
{
Serial.begin(9600);
delay(1000);
Wire.begin(2, 0); // set I2C pins
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the 128x64)
// init done
Wire.setClock(400000L); // set I2C clock to 400kHz
display.clearDisplay(); // clear the display buffer
display.setTextColor(WHITE, BLACK);
display.setTextSize(1);
display.setCursor(0, 0);
display.println(" Internet Pocasi");
display.print(" Mesto-Havirov");
display.display();
WiFi.begin(ssid, password);
Serial.print("Connected");
display.setCursor(0, 24);
display.println("Connected...");
display.display();
while ( WiFi.status() != WL_CONNECTED )
{
delay(500);
Serial.print(".");
}
Serial.println("connected");
display.print("connected");
display.display();
delay(1000);
}
void loop()
{
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 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 °
// print data
Serial.printf("Teplota = %.2f°C\r\n", temp);
Serial.printf("Vlhkost = %d %%\r\n", humidity);
Serial.printf("Tlak = %.3f bar\r\n", pressure);
Serial.printf("Rych.vetru = %.1f m/s\r\n", wind_speed);
Serial.printf("Stup.vetru = %d°\r\n\r\n", wind_degree);
display.setCursor(0, 24);
display.printf("Teplota : %5.2f C\r\n", temp);
display.printf("Vlhkost : %d %%\r\n", humidity);
display.printf("Tlak : %.3fbar\r\n", pressure);
display.printf("Rych.vetru : %.1f m/s\r\n", wind_speed);
display.printf("Stup.vetru : %d", wind_degree);
display.drawRect(109, 24, 3, 3, WHITE); // put degree symbol ( ° )
display.drawRect(97, 56, 3, 3, WHITE);
display.display();
}
http.end(); //Close connection
}
delay(60000); // wait 1 minute
}