Arnuino Nano mit mehreren Adaptern - Probleme in der Initialisierung

Hallo,
ich habe ein Projekt begonnen, um mittels eines DHT11 ein Fenster bei zu hoher Luftfeuchtigkeit anzukippen (lüften).
Ich habe dazu in der ersten Ausbaustufe einen HDT11 und ein OLED (SSD1306)-über I2C an einen Arduino angeschlossen und die Temperatur und Luftfeuchtigkeit auf dem OLED Display (128 x 32) angezeigt.
In der nächsten Ausbaustufe wollte ich den Verlauf der Luftfeuchtigkeit= f (Zeit) über einen SD Adapter- über SPI
abspeichern.
Damit begann das Problem.
Der SD-Adapter wird initialisiert, jedoch die OLED bringt mir Fehlermeldungen.
Der Script wird ordnungsgemäß ohne Fehlermeldung kompiliert und hochgeladen.
Den Script habe ich im Anhang angefügt.
Ich vermute einen Fehler im Zusammenhang I2C-SPI Ansteuerung.
LG Walter

Luftfeuchte.ino (1.8 KB)

Hallo,

Setze deinen Sketch bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Dazu den Sketch markieren und die Schaltfläche klicken, oder [ code] davor und [ / code] dahinter ohne Leerzeichen.
Oder
im IDE-Fenster rechte Maustaste und für “Forum kopieren klicken”, danach hier einfügen.

Das kannst du in deinem Startbeitrag noch nachträglich machen.

Damit wird dieser für alle besser lesbar.

Hallo

Der SD-Adapter wird initialisiert, jedoch die OLED bringt mir Fehlermeldungen.
Der Script wird ordnungsgemäß ohne Fehlermeldung kompiliert und hochgeladen.

Zeig mal die Fehlermeldungen, die auf dem OLED angezeigt werden.
BTW: Mein IDE kann den/der/die/ das Sketch nicht fehlerfrei übersetzen.

#include <SD.h>
#include "DHT.h"
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

File Textdatei;

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET  4
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

DHT dht(2, DHT11);
float Temperatur;
float Luftfeuchtigkeit;

void setup() {
  Serial.begin(9600);
  if (!SD.begin(5)) {
    Serial.println("SD Initialisierung fehlgeschlagen!");
    return;
  }
  Serial.println("SD Initialisierung abgeschlossen");


  if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 Initialisierung fehlgeschlagen!"));
    for (;;);
  }
  display.display();
  delay(2000);
  display.clearDisplay();
  dht.begin();
}

void loop() {
  delay(2000); //warten auf den etwas trägen HDT11

  Luftfeuchtigkeit = dht.readHumidity();
  Temperatur = dht.readTemperature();

  display.clearDisplay();
  display.setTextSize(0);
  display.setTextColor(SSD1306_WHITE);

  display.setCursor(0, 2);
  display.print("Temperatur  : ");
  display.print(Temperatur);
  display.println(" C");

  display.setCursor(0, 15);
  display.print("Luftfeuchte : ");
  display.print(Luftfeuchtigkeit);
  display.println(" %");

  display.display();

  dataFile = SD.open("Daten.txt", FILE_WRITE);

  if (dataFile)
  {
    dataFile.print(Luftfeuchtigkeit);
    dataFile.print(" ;");
    dataFile.println(Temperatur);
    dataFile.close();
  }
  else
  {
    Serial.println("Fehler beim Schreiben !");
  }

  if ((Temperatur > 15) or (Temperatur < 30))
  {
    if (Luftfeuchtigkeit > 45)
    {
      //...Fenster öffnen
    }
    else if (Luftfeuchtigkeit < 40)
    {
      //...Fenster schließen
    }
  }
}

Vielen Dank erst einmal für die Hinweise.
paulpaulson hat den Script bereits in die richtige Form gebracht. Danke.
Zu der Fehlermeldung - diese erhalte ich über die serielle Schnittstelle:
SSD1306 Initialisierung fehlgeschlagen! -> siehe display.begin() im Script
LG Walter

Hallo
nimm mal dieses Tutorial und spiele damit rum.

WaRo54:
paulpaulson hat den Script bereits in die richtige Form gebracht. Danke.

Das solltest du auch machen, daraus lernst du es.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.