Plötzlich keine Ausgabe auf SSD1306

Ich habe eine Schaltung aufgebaut und die Temperaturen wurden korrekt auf dem Display ausgegeben. Plötzlich zeigt er es auf keinen Arduino Nano mehr an. Habe 3 Stk getestet. Auf einem Mega funktioniert es. Hat jemand eine Idee?

Hier der Code:

#include "Arduino.h"
#include "Wire.h"
#include "OneWire.h"
#include "MicroLCD.h" //OLED
#include "DallasTemperature.h" //DS18B20
  //Aussenfühler
  #define DS18B20 2
  OneWire ourWire(DS18B20);
  DallasTemperature sensors(&ourWire);
//OLED
  LCD_SSD1306 lcd; /* for SSD1306 OLED module */
//Temp+Hum Sensor
  #include <SimpleDHT.h>
  int pinDHT11 = 5;
  SimpleDHT11 dht11;
//MQ-2 Sensor (LPG)
  #include <MQ2.h>
//change this with the pin that you use
  int pin = A0;
  int lpg, co, smoke;
  
  MQ2 mq2(pin);
  #include <Ultrasonic.h>
  Ultrasonic ultrasonic(12, 13);



void setup()

{
lcd.begin();
sensors.begin();
mq2.begin();
Serial.begin(9600);
}
void loop()
{
  //Ultraschall
  
      Serial.print("Distance in CM: ");
      // Pass INC as a parameter to get the distance in inches
      Serial.println(ultrasonic.distanceRead());
      int Fuellstand;
      Fuellstand = map (ultrasonic.distanceRead(), 5, 26, 100,0);
  
  //DS18B20
  
      sensors.requestTemperatures();
      //DHT11
      //Serial.println("=================================");
      //Serial.println("Sample DHT11...");
      //read without samples.
      byte temperature = 0;
      byte humidity = 0;
      int err = SimpleDHTErrSuccess;
      if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
      //Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(10);
      //Serial.print("Sample OK: ");
      //Serial.print((int)temperature); Serial.print(" *C, "); 
      //Serial.print((int)humidity); Serial.println(" H");
      return;
  }

float* values= mq2.read(true); //set it false if you don't want to print the values in the Serial
  //lpg = values[0];
  lpg = mq2.readLPG();
  //co = values[1];
  co = mq2.readCO();
  //smoke = values[2];
  smoke = mq2.readSmoke();
 
//Display Ausgabe

      
      lcd.clear();
      
     
  //Aussenfühler 
 
      lcd.setCursor(35,0);
      lcd.setFontSize(FONT_SIZE_LARGE);
      lcd.print("Outdoor");
      lcd.setCursor(50,2);
      lcd.print(sensors.getTempCByIndex(0),0);
      lcd.print(" C");

      delay(2000);
      
  //Innentemperatur
      lcd.clear();
      lcd.setCursor(30, 0);
      lcd.setFontSize(FONT_SIZE_LARGE);
      lcd.print("Wohnwagen ");
      lcd.setCursor(50,2);
      lcd.print((int)temperature);
      lcd.print(" C");     

      delay(3000);
      
  //Innen Luftfeuchtigkeit
      lcd.clear();
      lcd.setCursor(30, 0);
      lcd.setFontSize(FONT_SIZE_LARGE);
      lcd.print("Wohnwagen");
      lcd.setCursor(53,2);
      lcd.print((int)humidity); Serial.println(" H");
      lcd.print("%");
      lcd.setCursor(10,4);
      lcd.print("Luftfeuchtig-");
      lcd.setCursor(45,6);
      lcd.print("keit");
      // DHT11 sampling rate is 1HZ.

      delay(3000);

      
 //Gassensor
        lcd.clear();
        lcd.setCursor(55, 0);
        lcd.setFontSize(FONT_SIZE_LARGE);
        lcd.print("GAS:");
        lcd.setCursor(50, 4);
        lcd.print ((float)lpg, 1);
        //lcd.setCursor(0, 4);
        lcd.print("%");

        delay(3000);
        
        //Rauchmelder
        lcd.clear();
        lcd.setCursor(55, 0);
        lcd.setFontSize(FONT_SIZE_LARGE);
        lcd.print("CO2:");
        lcd.setCursor(50, 4);
        lcd.print ((float)co, 1);
        lcd.print("%");

        delay(3000);
        
        //Smoke
        lcd.clear();
        lcd.setCursor(48, 0);
        lcd.print("Rauch:");
        lcd.setCursor(53, 4);
        lcd.print ((float)smoke, 1);
        lcd.print("%");

        delay(3000);
        
  
      //Wasserstand
      lcd.clear();
      lcd.setFontSize(FONT_SIZE_LARGE);
      lcd.setCursor(20, 0);
      lcd.print("Wassertank:");
                                    //lcd.print(ultrasonic.distanceRead());
      lcd.setCursor(48, 2);
      lcd.print(Fuellstand);
      lcd.print("%");
      lcd.setCursor(30, 4);
      lcd.print("gefuellt:");

  delay(3000);


//lcd.clear();
//lcd.setCursor(0, 2);
//lcd.print("LPG:");
//lcd.print ((float)lpg, 3);
//Rauchmelder
//lcd.setCursor(11, 2);
//lcd.print("CO2:");
//lcd.print ((float)co, 3);
//Smoke
//lcd.setCursor(0, 3);
//lcd.print("Rauch:");
//lcd.print ((float)smoke, 3);
//delay(10000);

/*read the values from the sensor, it returns
  *an array which contains 3 values.
  * 1 = LPG in ppm
  * 2 = CO in ppm
  * 3 = SMOKE in ppm
  */
  
}

Was heißt "plötzlich" ?
Was hast du zuvor geändert ?
Wovon hast du 3 Stk. getestet ?

Plötzlich zeigt er es auf keinen Arduino Nano mehr an.

Was heisst denn plötzlich?

Ging es erst, und später nicht mehr?
Was hast du denn geändert?
Hast du vielleicht irgendwas upgedatet (z.B. eine Library)?
Gibt's irgendeine Fehlermeldung?

Lieben Gruß,
Chris

Ich bin zur Zeit dabei meinen Wohnwagen zu pimpen 'Fertig' Einsteiger und "Smart Wohnwagen" - Deutsch - Arduino Forum

Ich habe alles zusammengesteckt und es hat geklappt... habe ein paar tage probelaufen lassen.
Dann habe ich eine Streifenplatine genommen ( getrennt wo es nötig war) und habe einen Sockel für den Nano aufgelötet. Dann habe ich duie Sensoren einzelnt verbaut und so angeschlossen wie zuvor an dem Breadboard. Aber jetzt zeigt das Display nichts mehr an. (Zuerst hatte ich befürchtet ich hätte irgendwo einen Kurzschluss, kann aber den Nano ohne Fehler beschreiben.) Dann habe ich einen ganz neuen Nano genommen und den Sketch draufgeschrieben (der der seit Tagen stabil läuft) aber da kommt auch nichts. Dann habe ich den Mega meines Sohnes genommen. Bei dem Image kommt nichts, aber bei der SSD1306 Hello World Beispieldatei.

Der Ultraschall Sensor oder Temperature, werden auch beim Nano im Seriellen Monitoer angezeigt.....
Ich verwende beim Nano SLC, SDA an A5, A4

Ich bin ja nur ein kleiner Anfänger, aber ich würde mal

Wire.begin();
delay(10); // kurze Pause um die I²C Busspannung zu stabilisieren

in void setup schreiben :wink:

Oder hab ich was überlesen?

Und die vielen delay würden mich irre machen. Warum bereitest du nicht alle Werte für die Anzeige vor und machst dann eine Pause für alle?
Aber wie gesagt, ich bin Anfänger, meine Fragen sind also ernst gemeint, damit ich was lerne.

Gruß

MiReu

Hutschy:
Der Ultraschall Sensor oder Temperature, werden auch beim Nano im Seriellen Monitoer angezeigt.....
Ich verwende beim Nano SLC, SDA an A5, A4

Das hilft uns alles nicht weiter.

Welchen Sketch spielst du auf den Nano, welchen auf den Mega ?
So wie sich das liest müssen wir weiter raten.
Da liegt wohl ein Hardwarefehler vor.
Zeige mal Fotos deines Aufbaus.

Na dann einfach nochmal zurück aufs Breadboard und da nochmal testen. Das ist doch offensichtlich, dass irgendwo in der Hardware der Fehler liegt. Vermutlich zwei Strippen vertauscht. Vielleicht SDA und SCL?
Lieben Gruß,
Chris

themanfrommoon:
Vermutlich zwei Strippen vertauscht. Vielleicht SDA und SCL?

Auch möglich, aber dazu musst du doch nicht zurück aufs Steckbrett?

Hutschy:
Ich bin zur Zeit dabei...

Keine Antwort ist auch eine Antwort.

Das was Du schreibst: Auf Steckbrett hat's funktioniert , auf der Streifenplatiene nicht mehr deutet eindeutig auf einen Verdrahtungsfehler auf der Streifenplatiene hin.
Grüße Uwe

Wenn ich den Nano auf das Breadboard packe kommt bei meinem Sketch kein Bild. Bei dem Hello World Sketch schon.

Wie sollen wir dir helfen, wenn du unsere Fragen nicht beantwortest.

Wenn ich den Nano auf das Breadboard packe kommt bei meinem Sketch kein Bild. Bei dem Hello World Sketch schon.

Na, dann ist der Fall doch klar: Dann ist was falsch!

Lässt aber nur zwei Schlüsse zu:

  1. Es hat noch nie funktioniert.
  2. Es hat funktioniert und du hast danach was geändert (z.B. im Code, oder eine Library upgedated, die jetzt nicht mehr kompatibel ist)

Funktioniert denn Hello World auf der Streifenplatine? (Dann wäre ausgeschlossen, dass dort ein Hardwarefehler ist)

Lieben Gruß,
Chris

Ich habs gefunden.... ich hatte PIN 4 mit PIN 5 vertauscht.
Wenn ich das Display auf dem Breadboard stecke klappt es. Wenn ich ein 4 Adriges Kabel (1m langes Analog Telefonkabel) anschliesse kommt kein Bild.... Aber schonmal einen Schritt weiter.

Hutschy:
Ich habs gefunden.... ich hatte PIN 4 mit PIN 5 vertauscht.
Wenn ich das Display auf dem Breadboard stecke klappt es. Wenn ich ein 4 Adriges Kabel (1m langes Analog Telefonkabel) anschliesse kommt kein Bild.... Aber schonmal einen Schritt weiter.

Ein Fehler jagt den nächsten. :wink:

1 m Kabel für I2C ?

Das wird nichts, das Kabel ist zu lang.
Der I2C-Bus ist ohne zusätzliche Änderungen nur für kurze, geräteinterne Verbindungen geeignet.

Und vermutlich keine Pullup-Widerstände am I2C.

Habe gerade ein Serielles Kabel geopfert. 1,8 m lang. Das hat gerade am Mega funktioniert.

Morgen schliesse ich nochmal alle Sensoren an und dann schaun wir mal. Kann ich das Signal ansonsten verstärken?

Du brauchst dann 2 Stück I2C Extender, z.b. den hier.
Geschirmtes Netzwerkkabel ist besser :wink:

Gruß Tommy