ESP8266 -01 zapojení 1.3 palcový oled
Napsal: 06 čer 2020, 22:56
Zdravím, mám tu kód pro počasí,použil jsem WiFi modul ESP8266 -01, kód jede , když to přepnu na seriový monitor tak mi všechno ukazuje bez problému.
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
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
}