Hallo ich benutze die Bibliothek von U8g2 und Bislang ein Oled Display SSD1306 128x64 erfolgreich (4 Pins Gnd,VCC,SCL,SDA).
Da mir nun der Platz ausgegangen ist war der plan dieses (einfach) durch ein größeres zu Tauschen (auch 4 Pins selbe Belegung) SSD1327 128X128.
Mein ursprünglicher Plan also das alte raus das neue rein und die 13. Zeile im Code dementsprechend verändern.
So weit so so gut klappt nur nicht habe alle in den Beispielen verwendeten Zeilen mit SSD1327 versucht und nicht eine klappt. Hat für dieses Problem jemand eine Lösung parat?
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include "DS3231.h" //RTC
#include <Arduino.h> //oled
#include <U8x8lib.h> //oled
#ifdef U8X8_HAVE_HW_SPI //oled
#include <SPI.h> //oled
#endif //oled
#ifdef U8X8_HAVE_HW_I2C //oled
#include <Wire.h> //oled
#endif //oled
RTClib RTC; //RTC
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display //oled
//----------------------------------------------------------------Variablen fürs Empfangen
WiFiUDP Udp;
char packetBuffer[255];
unsigned int localPort = Möp;
const char * ssid = "sag ich nicht";
const char * password = "geht dich nix an";
int packetSize = 0;
int len = 0;
int Empf = 0;
//-----------------------------------------------------------------Buttons
int But = 0;
int Oledw = 0;
//-----------------------------------------------------------------Variablen fürs Senden
//-----------------------------------------------------------------Variablen für die Logik
float Temp = 0;
float Hum = 0;
float Tempa = 0;
float Mag = 0;
float Dach = 0;
float Zus = 0;
float MaxTemp = 0;
float MinTemp = 100;
float MaxHum = 0;
float MinHum = 100;
//-----------------------------------------------------------------Logik Led
int Blau = D5;
int Grun = D7;
int Rot = D6;
int DachLED = D8;
void setup() {
Serial.begin(115200);
WiFi.softAP(ssid, password);
Udp.begin(localPort);
u8x8.begin(); //oled
Wire.begin(); //RTC
digitalWrite(Blau, LOW); //LED
digitalWrite(Grun, LOW); //LED
digitalWrite(Rot, LOW); //LED
pinMode(Blau, OUTPUT); //LED
pinMode(Grun, OUTPUT); //LED
pinMode(Rot, OUTPUT); //LED
pinMode(DachLED, OUTPUT); //LED
}
void loop() {
Empfangen();
Zerlegen();
Logik();
Logik_LED();
Senden();
Oled();
Pc();
}
void Empfangen(){
packetSize = Udp.parsePacket();
if (packetSize) {
len = Udp.read(packetBuffer, 255);
if (len > 0) packetBuffer[len-1] = 0;
Empf = len;
}
}
void Zerlegen(){
if (Empf > 0){
Temp = atof(strtok(packetBuffer, "!"));
Hum = atof(strtok(NULL, "!"));
Tempa = atof(strtok(NULL, "!"));
Mag = atof(strtok(NULL, "!"));
Dach = atof(strtok(NULL, "!"));
}
}
void Logik(){
if (Empf > 0){
But = analogRead(A0); //Button auslesen
if ((Dach == 0)&&(Temp > 12)&&(Tempa > 12)){
Zus = 1;
}
else if ((Dach == 1)&&(Temp > 16)&&(Tempa > 12)){
Zus = 2;
}
else if ((Dach == 2)&&(Temp > 20)&&(Tempa > 12)){
Zus = 3;
}
else if ((Temp < 12)||(Tempa < 12)){
Zus = 0;
}
else if ((But > 500)&&(But < 510)){
Zus = 6;
}
else if ((But > 728)&&(But < 755)){
Zus = 7;
}
else {
Zus = 5;
}
//-----------------------------------------------------Max-Min
if (MaxTemp < Temp){
MaxTemp = Temp;
}
if (MinTemp > Temp){
MinTemp = Temp;
}
if (MaxHum < Hum){
MaxHum = Hum;
}
if (MinHum > Hum){
MinHum = Hum;
}
if ((But > 140)&&(But < 165)){
MinHum = Hum;
MaxHum = Hum;
MinTemp = Temp;
MaxTemp = Temp;
}
Serial.println(But);
//-----------------------------------------------------Oled wechsel
if ((But > 250)&&(But < 270)){
Oledw ++;
if (Oledw > 1){
Oledw = 0;
}
}
}
}
void Logik_LED(){
if (Empf > 0){
if (Mag == 1){
digitalWrite(DachLED, HIGH);
}
if (Mag == 2){
digitalWrite(DachLED, LOW);
}
if (Temp < 10) {
digitalWrite(Blau, HIGH);
digitalWrite(Grun, LOW);
digitalWrite(Rot, LOW);
}
if ((Temp > 10) && (Temp < 27)) {
digitalWrite(Grun, HIGH);
digitalWrite(Blau, LOW);
digitalWrite(Rot, LOW);
}
if (Temp > 28) {
digitalWrite(Rot, HIGH);
digitalWrite(Grun, LOW);
digitalWrite(Blau, LOW);
}
}
}
void Senden(){
if (Empf > 0){
char zust[2];
dtostrf(Zus, 1, 0, zust);
Udp.beginPacket(Udp.remoteIP(),Udp.remotePort());
Udp.write(zust);
Udp.write("!");
Udp.write("\r\n");
Udp.endPacket();
}
}
void Oled(){
if (Empf > 0){
if (Oledw == 0){
DateTime now = RTC.now(); //-----------------------------------RTC
u8x8.setFont(u8x8_font_amstrad_cpc_extended_f);
u8x8.clear();
// u8x8.draw2x2String(0, 1, "Sensor 1");
u8x8.setCursor(0,0);
u8x8.print(" Max ");
u8x8.print(" Min");
u8x8.setCursor(0,2);
u8x8.print(MaxTemp);
u8x8.print("C ");
u8x8.print(MinTemp);
u8x8.print("C");
u8x8.setCursor(0,4);
u8x8.print(Temp);
u8x8.print("C ");
u8x8.print(Hum);
u8x8.print("%");
u8x8.setCursor(0,6); //RTC
u8x8.print(now.day(), DEC); //RTC
u8x8.print('/'); //RTC
u8x8.print(now.month(), DEC); //RTC
// u8x8.print('/'); //RTC
// u8x8.print(now.year(), DEC); //RTC
u8x8.print(' '); //RTC
u8x8.print(now.hour(), DEC); //RTC
u8x8.print(':'); //RTC
u8x8.print(now.minute(), DEC); //RTC
u8x8.print(':'); //RTC
u8x8.print(now.second(), DEC); //RTC
}
if (Oledw == 1){
u8x8.clear();
u8x8.setCursor(0,0);
u8x8.print(" Max | Min");
u8x8.setCursor(0,2);
u8x8.print(MaxTemp);
u8x8.print("C | ");
u8x8.print(MinTemp);
u8x8.print("C");
u8x8.setCursor(0,4);
u8x8.print(MaxHum);
u8x8.print("% | ");
u8x8.print(MinHum);
u8x8.print("%");
}
}
}
void Pc() {
if (Empf > 0){
DateTime now = RTC.now(); //-----------------------------------RTC
Serial.println("--------------------------------------------------");
Serial.println("Empfangen(IP/Size/Data): ");
Serial.print(Udp.remoteIP());Serial.print(" / ");
Serial.print(Udp.remotePort());Serial.print(" / ");
Serial.print(packetSize);Serial.print(" / ");
Serial.println(packetBuffer);
Serial.print("Temp:");Serial.println(Temp);
Serial.print("Hum:");Serial.println(Hum);
Serial.print("Tempa:");Serial.println(Tempa);
Serial.print("Mag:");Serial.println(Mag);
Serial.print("Dach:");Serial.println(Dach);
Serial.print("Zustand Lüftung:");Serial.println(Zus);
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.println(now.second(), DEC);
Serial.println("--------------------------------------------------");
Empf = 0;
delay(2500);
}
}