Zwei Programme miteinander verbinden

Hey Leute,

ich habe ein kleines Problem beim Verbinden zweier Programme.

ich würde gerne diesen Sketch, der auch wunderbar funktioniert

#include <DHT.h>
#include <Servo.h>
#define DHTPIN 2 // what pin we’re connected to
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
Servo myservo;

void setup() {
Serial.begin(9600);
Serial.println(“DHTxx test!”);
Serial.begin(9600);
myservo.attach(9);
dht.begin();
}
void loop() {

float h = dht.readHumidity();
float t = dht.readTemperature();
int err;

if (isnan(t) || isnan(h)) {
Serial.println(“Failed to read from DHT”);
} else {
Serial.print(“Feuchtigkeit: “);
Serial.print(h);
Serial.print(” %\t”);
Serial.print(“Temperatur: “);
Serial.print(t);
Serial.println(” *C”);

if (t > 35 || h > 50) {
myservo.write(180);
} else
{
myservo.write(0);}
delay (2000);
}

delay (2000);
}

mit diesem Sketch, der auf meinen Sensor angepasst werden muss, verbinden…

#include <LiquidCrystal.h>
#include <DHT22.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = 8;
DHT22 mySensor(sensorPin);

void setup() {
lcd.begin(16, 2);
}

void loop() {
delay(2000);

mySensor.readData();
lcd.setCursor(8, 0);
lcd.print(“Tempera.”);

lcd.setCursor(8, 1);
lcd.print(“Humidity”);

lcd.setCursor(0, 0);
lcd.print(mySensor.getTemperatureC());

lcd.setCursor(0, 1);
lcd.print(mySensor.getHumidity());
}

Mein erster Versuch sieht so aus, ich kann den sketch auch laden…über den Serial monitor funktioniert auch alles…nur unser Display zeigt nichts an…

#include “DHT.h” //von ladyada: GitHub - adafruit/DHT-sensor-library: Arduino library for DHT11, DHT22, etc Temperature & Humidity Sensors
#define DHTPIN 8 // benutzter ARDUINO-Pin (Analog-Pin 1)

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // diese Pins werden benutzt

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println(“DHT11-Test”);

lcd.clear(); // LCD löschen
lcd.begin(16, 2); // verfügbare Spalten und Zeilen

dht.begin();
}

void loop() {
// Das Erfassen von Temperatur und Luftfeuchtigkeit benoetigt ca. 250 Millisekunden.
float h = dht.readHumidity();
float t = dht.readTemperature();

// Check, ob die Daten Zahlen sind, falls nicht (NaN: not a number), ist was falsch gelaufen!
if (isnan(t) || isnan(h))
{
Serial.println(“Fehler beim Lesen vom DHT-Sensor”);
}
else
{

Serial.print("Feuchtigkeit: “);
Serial.print(h);
Serial.print(” %\t ");
Serial.print(“Temperatur: “);
Serial.print(t);
Serial.println(” Grad Celsius”);

lcd.setCursor(0,0);
lcd.print(“Feuchtigk.:”);
lcd.print(h);
lcd.setCursor(0,1);
lcd.print(“Temperatur:”);
lcd.print(t);

}
}

hat jemand spontan eine Idee, was falsch läuft?

Danke

vertausche mal diese beiden Zeilen im Setup
2. lcd.clear(); // LCD löschen

  1. lcd.begin(16, 2); // verfügbare Spalten und Zeilen

Hallo,

das lcd.clear kann weggelassen werden. Wurde vorher auch nicht benötigt.

Warum hast du die include Zeile geändert zu
#include "DHT.h"

? ? ?

Vermutlich, weil er die DHT Library wie im ersten Teil verwendet ?

Wenn das LCD nichts anzeigt, ist es wohl falsch angeschlossen.
Wenn es flackert,würde ich die Ausgabe des festen Teils seltener ( oder gar nur in setup() ) machen.
Auch Temperatur-Anzeigen braucht man nicht mehrfach je Sekunde zu aktualisieren.
Wenn funduinoinfo3 sich nicht mehr meldet, wird es wohl zufriedenstellend funktionieren :wink:

mich hat eigentlich interessiert, warum aus

#include <DHT.h>

im ersten Sketch jetzt

#include “DHT.h”

wurde?

Ich dachte immer, eins wäre für Libs, das andere für Dateien allgemein.

Äh sorry, falsch verstanden:

Man sollte

#include "EigeneLib.h"
#include <StandardLib.h>

verwenden.

Ändert aber nur die Such-Reihenfolge. Wird also erst wirklich interessant, wenn man gleichnamige Dateien im sketch-Ordner und in den zwei library Unterordnern hat.

So in etwa hatte ich das ja verstanden, aber meine Frage war ja, WARUM hat das der TO gemacht?
Mit Absicht?
Irgendwo gelesen?
Hat er eine modifizierte DHT.h im Sketch?

Oder nur aus Versehen?

P.S. Warum jetzt define und nicht mehr include?

P.S. Warum jetzt define und nicht mehr include?

Nur aus Versehen! hab ich im alten Post korr.
Das WARUM der Original-Frage kann dir wohl nur funduinoinfo3 beantworten …

Vielen Dank für die Hilfe =)

Der Sketch funktioniert nun =)

Ich möchte nun die ermittelten Daten in eine Datenbank schreiben...

Kann mir jemand einen Tipp geben, ob es leichter ist, den Arduino als Client oder Webserver zu verweden?

Die Daten sollen in eine MySQL Datenbank gespeichert werden...

Lieben Dank

Prinzipiell geht beides.
Generell:
Ein Server sollte immer laufen und auf einen Auftrag warten.
Wenn die Anforderung von aussen käme "Speichere deine Messwerte", wäre der Arduino der Server.
Wenn der Arduino die Anforderung erzeugt "Speichere dies in deiner Datenbank" wäre er der Client und bräuchte einen externen webserver (mit mysql).

Da die mysql Datenbank sicher nicht auf einem kleinen Arduino läuft, braucht es sowieso einen Datenbank-Server. Das könnte auch gleich ein webserver sein und Arduino der Client.

Aber dafür hast du ja --sehr schön-- schon einen neuen Faden aufgemacht.
Haben übrigens andere auch schon gemacht:
Sensordaten an Webserver übergeben mysql