Hi alle
Ich habe versucht, einen Code für eine Wetterstation (Board: WeMos D1mini, Display: OLED 1,3" SH1106) auf die u8g2lib von Oli Kraus umzuschreiben. Doch irgendwas mach ich falsch.
Das "Hello World" mit der u8g2lib-Library und dem constructor, den ich im neuen Code habe, funktioniert.
Jeder Input ist sehr wilkommen!
Original-Code (SSD1306):
//ATMOSPHERIC PRESSURE CODE BY ViktorDemcak
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 0
#define BLYNK_PRINT Serial
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_BME280 bme;
unsigned long delayTime;
float temperature;
char auth[] = "Laurin";
char ssid[] = "UPC2E39BE9";
char pass[] = "";
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // DISPLAY I2C adress - should be the same as mine but if not, go to https://playground.arduino.cc/Main/I2cScanner/, upload it to your D1mini and check the adress.
bme.begin(0x76); // BME280 I2C adress should be the same as mine but if not, go to https://playground.arduino.cc/Main/I2cScanner/, upload it to your D1mini and check the adress.
display.clearDisplay();
display.setTextColor(WHITE);
display.setFont(&FreeSans9pt7b);
display.display();
Blynk.begin(auth, ssid, pass);
}
void loop() {
delay(100);
display.clearDisplay();
display.setCursor(10,15);
display.println(bme.readTemperature());
Blynk.virtualWrite(V1, bme.readTemperature());
display.setCursor(60,15);
display.println(" C");
display.drawCircle(60,6,2, WHITE);
display.setCursor(10,35);
display.println(bme.readHumidity());
Blynk.virtualWrite(V2, bme.readHumidity());
display.setCursor(60,35);
display.println("%");
display.setCursor(10,55);
display.println(bme.readPressure() / 100);
Blynk.virtualWrite(V3, bme.readPressure()/100 );
display.setCursor(80,55);
display.println("hPa");
display.display();
}
Neuer Code (u8g2lib)
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_GFX.h>
//#include <Fonts/FreeSans9pt7b.h>
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#define BLYNK_PRINT Serial
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
Adafruit_BME280 bme;
unsigned long delayTime;
float temperature;
char auth[] = "Laurin";
char ssid[] = "UPC2E39BE9";
char pass[] = "";
void setup(void) {
Serial.begin(9600);
u8g2.begin();
bme.begin(0x76);
u8g2.setFont(u8g2_font_ncenB08_tr);
Blynk.begin(auth, ssid, pass);
u8g2.clearDisplay();
}
void loop(void) {
u8g2.clearBuffer();
u8g2.clearDisplay();
u8g2.setCursor(10,15);
u8g2.println(bme.readTemperature());
Blynk.virtualWrite(V1, bme.readTemperature());
u8g2.drawStr(60,15," C");
u8g2.drawCircle(60,6,2);
u8g2.setCursor(10,35);
u8g2.println(bme.readHumidity());
Blynk.virtualWrite(V2, bme.readHumidity());
u8g2.drawStr(50,35,"%");
u8g2.setCursor(10,55);
u8g2.println(bme.readPressure() / 100);
Blynk.virtualWrite(V3, bme.readPressure()/100);
u8g2.drawStr(80,55,"hPa");
u8g2.sendBuffer();
delay(1000);
//u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
//u8g2.drawStr(0,10,"Hello World!"); // write something to the internal memory
//u8g2.sendBuffer(); // transfer internal memory to the display
//delay(1000);
}
AtmosphericPressureCode.ino (1.82 KB)
sketch_oct06a.ino (1.58 KB)