//Sketch von Burhan&Tilo //Basiert auf Beispiele -> DHT sensor library -> DHT Tester -> LiquidCrystal->World //folgende Bib werden benötigt // - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library // - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor #include "DHT.h" // DHT-Sensor Bib einbinden #include // LC-Display BIB einbinden #include #include #include #define DHTPIN 8 // Digitalen Arduino PIn deiniere, an den der DHT Sensor angeschlossen ist #define DHTTYPE DHT11 // DHT Sensor definieren //Initialierenrung der LCD-Bib, LCD Pins mit Arduino Pins zuweisen const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //Initialierenrung des DHT Sensors DHT dht(DHTPIN, DHTTYPE); byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xfe, 0xED }; unsigned int localPort = 8888; // local port to listen on char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; // buffer to hold incoming packet char msg[25]; unsigned int RecipientPort = 7001; IPAddress ip(192, 168, 2, 177); IPAddress RecipientIP(192, 168, 2, 2); EthernetUDP Udp; // An EthernetUDP instance to let us send and receive packets over UDP int lightPin = 0;// Photozelle, Analog In A0 void setup() { Ethernet.begin(mac,ip); //Festlegung der Datenrate in Bit pro Sekunde Serial.begin(9600); if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield wurde nicht gefunden!"); while(true){ delay(1); } } Udp.begin(localPort); // SendUDP("Übertragung wird gestartet"); Serial.println("Übertragung wird gestartet"); dht.begin(); //Festlegung der Spalten und Zeilen des LCD's lcd.begin(16, 2); lcd.setCursor(0, 0); // Print a message to the LCD. lcd.print("Programtest"); lcd.setCursor(0, 1); // Print a message to the LCD. lcd.print("by Burhan"); } void loop() { int reading = analogRead(lightPin);// Photozelle //Woher weiß ich das die Zeit zwischen des Messens ist nicht nicht zwischen Message und Messung //Eine Sekunde Verzögerung zwischen Messungen //--> Leser der Temperatur/ Feuchte dauert ca. t=0,25 Sekunden delay (2000); //Lesen von Feuchte und Temperatur und Schreiben der Werte in die float-Variablen h und t float h = dht.readHumidity(); float t = dht.readTemperature(); // Überprüfung, ob ein Lesevorgang gescheitert ist, evtl. Fehlerausgabe über seriellen Monitor if (isnan(h) || isnan(t)) { Serial.println(F("Lesevorgang abgekackt!")); return; } //Ausgabe der Werte über Serial.print(F("Helligkeit: ")); Serial.print(reading); Serial.print(F(" Lux Luftfeuchtigkeit: ")); Serial.print(h); Serial.print(F("% Temperature: ")); Serial.print(t); Serial.println(F("°C "));//Nach Befehl Serial.println("XYZ"); wird im seriellen Monitor in nächste Zeile geschrieben //Curser des LCD's auf Spalte0 Zeile0 setzen //Achtung Zeile 1 / Spalte 1 ist die zweite Zeile / Spalte, da bei 0 angefangen wird zu zählen lcd.setCursor(0, 0); //Schreibe Luftfeuchte in erste Zeile des LCD's lcd.print("Luftf.: "); lcd.print(h); lcd.print(" %"); //Curser des LCDs auf Spalte 0 und Zeile 1 setzen lcd.setCursor(0, 1); //Schreibe Raumtemperatur in die zweite Zeile lcd.print("Temp.: "); lcd.print(t); lcd.print(" \337C");//\337 Kürzel für ° Zeichen delay(5000); lcd.setCursor(0, 0); lcd.print("Hell.: "); lcd.print(reading); lcd.print(" Lux "); sprintf(msg,"WZ.Temper : %d", reading); Serial.println(msg); Udp.beginPacket(RecipientIP,RecipientPort); Udp.print(msg); Udp.endPacket(); delay(20); }