Oled Kein Bild nur komische Streifen

Versuche schon seit 2 Tagen das teil zum laufen zu kriegen..

1OLED 1.3 von AZ-Deliv. im Test Super nur die Treiber beisen sich mit dem Programm.

unten ist das Bild (Test) in Ordnung….

Installierter Treiber u8g2


Du hast mein volles Mitgefühl!

  • Welcher Arduino?
  • Schaltplan?
  • Code?
  • Fehlermeldungen?
  • Was macht es?
  • Was soll es machen?

Erklär mal ein wenig genauer was du da machst.

Warte nur kurz, bis ein Hellseher dein Problem löst.

keine Bange…war Schon Spät gestern….bevor noch was Passiert…

also….

Wetter Station mit einem BME280 und einem OLEd 1.3

Ich wollte nur sicher gehen das das OLED noch in Ordnung ist…

sind soweit alle in ordnung, habe bis eben einige Tests mit dem BME über seriellen Monitor

der ist auch in Ordnung.

ich hatte laut meinem Arduino Almanach….mir die Adafruit SSD1306 installiert….

nur diese erzeugt immer noch mein komisches Bild…bei Gleichzeitiger Anzeige am Ser. Monitor

sensor Arbeitet OLED nicht (nicht Richtig!)

mein Händler AZ Delivery hat aber einen Ganz Andere Treiber Quelle….U8g2

dort wird aber mein OLED komischer weise aber Richtig dargestellt…..?

was ist zwischen den Beiden Treibern Anderst ?

mit dieser Zeile muss es irgendwie zusammen hängen?

U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
/#include <SPI.h>
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5/

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &Wire);
unsigned long delayTime;

void setup() {
Serial.begin(9600);
Serial.println(F("BME280 test"));

// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
// init done
display.display();
delay(100);
display.clearDisplay();
display.display();
display.setTextSize(1.2);
display.setTextColor(WHITE);

bool status;
// default settings
// (you can also pass in a Wire library object like &Wire2)
status = bme.begin(0x76);
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}

Serial.println("-- Default Test --");
delayTime = 1000;

Serial.println();
}

void loop() {

display.setCursor(0,0);
display.clearDisplay();

Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" *C");
display.print("Temperature: "); display.print(bme.readTemperature()); display.println(" *C");

Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa");
display.print("Pressure: "); display.print(bme.readPressure() / 100.0F); display.println(" hPa");

Serial.print("Humidity = "); Serial.print(bme.readHumidity()); Serial.println(" %");
display.print("Humidity: "); display.print(bme.readHumidity()); display.println(" %");

Serial.println();
display.display();
delay(1000);
}

Du machst Sachen :wink: Der Test mit dem OLED war wahrscheinlich mit U8G2 gemacht, im deinem Sketsch willst du Adafruit nutzen, jedoch mit flachem Treiber.
Die 1,3" Displays haben meistens SH1106.
werfe den ganzen Adafruit kram raus und nutzt den U8G2.

Ich bau dir was.
Kompiliert sauber, nicht getestet da ich keinen 1,3" Display frei habe.

/*
   Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)

  Copyright (c) 2016, olikraus@gmail.com
  All rights reserved.

  Redistribution and use in source and binary forms, with or without modification,
  are permitted provided that the following conditions are met:

    Redistributions of source code must retain the above copyright notice, this list
    of conditions and the following disclaimer.

    Redistributions in binary form must reproduce the above copyright notice, this
    list of conditions and the following disclaimer in the documentation and/or other
    materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

#include <Arduino.h>
#include <Wire.h>
#include <U8x8lib.h> // https://github.com/olikraus/U8g2_Arduino
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);

#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
#define SEALEVELPRESSURE_HPA (1013.25)

void setup(void)
{
  u8x8.begin();
  u8x8.setPowerSave(0);
  bool status;
  // default settings
  // (you can also pass in a Wire library object like &Wire2)
  status = bme.begin(0x76);
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

}

void loop(void)
{
  u8x8.setFont(u8x8_font_chroma48medium8_r);
  u8x8.setCursor(0, 0);
  u8x8.clearDisplay();

  Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" *C");
  u8x8.print("Temperature: "); u8x8.print(bme.readTemperature()); u8x8.println(" *C");

  Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa");
  u8x8.print("Pressure: "); u8x8.print(bme.readPressure() / 100.0F); u8x8.println(" hPa");

  Serial.print("Humidity = "); Serial.print(bme.readHumidity()); Serial.println(" %");
  u8x8.print("Humidity: "); u8x8.print(bme.readHumidity()); u8x8.println(" %");

  Serial.println();

}

Weitere Schriftarten findest du unter U8g2_Arduino
keywords.txt, musst aber nach u8x8 suchen.

soweit so gut…..es hat die Größe eines…0.91 zoll Displays und das Flackern kommt warscheinlich davon das das display kleiner sein müsste…

ich das 0.91er dürfte die besagten Pixel haben….128 x 32 Pixel kompatibe

das müsste ich nur noch anpassen das wärs?

Also was für Display hast du?

  u8x8.clearDisplay();

mein Fehler das macht das Flackern, lesche oder kommentiere das

/*

  HelloWorld.ino

  "Hello World" version foru8x8 API

  Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)

  Copyright (c) 2016, olikraus@gmail.com
  All rights reserved.

  Redistribution and use in source and binary forms, with or without modification,
  are permitted provided that the following conditions are met:

    Redistributions of source code must retain the above copyright notice, this list
    of conditions and the following disclaimer.

    Redistributions in binary form must reproduce the above copyright notice, this
    list of conditions and the following disclaimer in the documentation and/or other
    materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

#include <Arduino.h>
#include <Wire.h>
#include <U8x8lib.h>
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);

#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
#define SEALEVELPRESSURE_HPA (1013.25)

void setup(void)
{


  u8x8.begin();
  u8x8.setPowerSave(0);
  u8x8.clearDisplay();
  bool status;
  // default settings
  // (you can also pass in a Wire library object like &Wire2)
  status = bme.begin(0x76);
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
}

void loop(void)
{
  u8x8.setFont(u8x8_font_chroma48medium8_r);
  u8x8.setCursor(0, 0);

  Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" *C");
  u8x8.print("Temperature: "); u8x8.print(bme.readTemperature()); u8x8.println(" *C");

  Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa");
  u8x8.print("Pressure: "); u8x8.print(bme.readPressure() / 100.0F); u8x8.println(" hPa");

  Serial.print("Humidity = "); Serial.print(bme.readHumidity()); Serial.println(" %");
  u8x8.print("Humidity: "); u8x8.print(bme.readHumidity()); u8x8.println(" %");

  Serial.println();

}

ein 1.3 OLED von Az-delivery 128X64 pixel.

Für BME280 nutze die

das Funktioniert doch schon wie es soll..

Ja nur die Adafruit verbraucht viel Speicher.

sonnst alles wie bei Adafruit?

der Schmale Sichbare Bildschirm bleibt?

dachte er wäre Größer? (Breiter)

er spart so Strom?

Nein, die Abfrage ist etwas anders.

Verstehe nicht.
Die Position stellt man mit

u8x8.setCursor(x, y)

x ist die Horizontale Pos.
y ist Vertikale Pos.

Nein, um Stromsparren brauch man zB. ein ATtiny1614

Hast du deswegen den Sensor und das Oled an 3,3Volt angeschlossen?
Warum nicht an 5Volt ?

ne alles in Ordnung alles auf 5V

ich kenne diesen Treibe noch nicht.