Inhaltsverzeichnis
Daten anzeigen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include “SoftwareSerial.h” #include “DHT.h” SoftwareSerial BTSerial(2, 3); // über Bluetooth vom Smartphone gesendeter Wert char btDaten; // Pin des DHT-Sensors int SENSOR_DHT = 8; // Sensortyp festlegen // DHT22 oder DHT11 #define SensorTyp DHT11 // Sensor DHT einen Namen zuweisen DHT dht(SENSOR_DHT, SensorTyp); void setup() { BTSerial.begin(9600); Serial.begin(9600); delay(500); // DHT-Sensor starten dht.begin(); } void loop() { if (BTSerial.available()) { // vom Smartphone gesendeten Wert lesen btDaten = BTSerial.read(); if (btDaten == ‘1’) { // Daten lesen String Temperatur = String(dht.readTemperature()); String Luftfeuchtigkeit = String(dht.readHumidity()); // in Strings umwandeln, . durch , ersetzen Temperatur.replace(“.”, “,”); Luftfeuchtigkeit.replace(“.”, “,”); // Daten in der App ausgeben BTSerial.println(“Temperatur: ”); BTSerial.println(Temperatur); BTSerial.println(“Luftfeuchtigkeit:”); BTSerial.println(Luftfeuchtigkeit + “%”); BTSerial.println(“———-”); // Daten im Seriellen Monitor ausgeben Serial.print(“Temperatur: ”); Serial.println(Temperatur + ” °C”); Serial.print(“Luftfeuchtigkeit: ”); Serial.println(Luftfeuchtigkeit); Serial.println(“————————-”); } } } |
Daten anzeigen und speichern
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | #include “SoftwareSerial.h” #include “DHT.h” #include “RTClib.h” #include “SdFat.h” // Bezeichnung der SD-Karte SdFat SD; // Datenpin für das SD-Kartenmodul int DatenPin = 4; // Bezeichnung der Textdatei File Temperaturmessung; RTC_DS3231 rtc; SoftwareSerial BTSerial(2, 3); // über Bluetooth vom Smartphone gesendeter Wert char btDaten; // Pin des DHT-Sensors int SENSOR_DHT = 8; // Sensortyp festlegen // DHT22 oder DHT11 #define SensorTyp DHT11 // Sensor DHT einen Namen zuweisen DHT dht(SENSOR_DHT, SensorTyp); void setup() { BTSerial.begin(9600); Serial.begin(9600); delay(500); rtc.begin(); /* wenn Datum und Zeit nicht korrekt -> Datum/Zeit setzen Jahr, Monat, Tag, Stunde, Minute, Sekunde rtc.adjust(DateTime(2023, 3, 30, 10, 30, 30)); */ // SD-Kartenmodul starten if (!SD.begin(DatenPin)) Serial.println(F(“Initialisierung fehlgeschlagen!”)); else Serial.println(F(“Initialisierung abgeschlossen”)); // DHT-Sensor starten dht.begin(); } void loop() { if (BTSerial.available()) { // vom Smartphone gesendeten Wert lesen btDaten = BTSerial.read(); if (btDaten == ‘1’) { DateTime aktuell = rtc.now(); char Datum[] = “DD.MM.YYYY “; char Zeit[] = “hh:mm:ss”; // Daten lesen String Temperatur = String(dht.readTemperature()); String Luftfeuchtigkeit = String(dht.readHumidity()); // in Strings umwandeln, . durch , ersetzen Temperatur.replace(“.”, “,”); Luftfeuchtigkeit.replace(“.”, “,”); // Daten in der App ausgeben BTSerial.print(aktuell.toString(Datum)); BTSerial.print(“ ”); BTSerial.println(aktuell.toString(Zeit)); BTSerial.println(F(“Temperatur: ”)); BTSerial.println(Temperatur); BTSerial.println(“Luftfeuchtigkeit:”); BTSerial.println(Luftfeuchtigkeit + “%”); BTSerial.println(F(“———-”)); // Daten im Seriellen Monitor ausgeben Serial.print(aktuell.toString(Datum)); Serial.println(aktuell.toString(Zeit)); Serial.print(F(“Temperatur: ”)); Serial.println(Temperatur + ” C”); Serial.print(“Luftfeuchtigkeit:”); Serial.println(Luftfeuchtigkeit); Serial.println(F(“————————-”)); } // Daten in Datei Messung.csv schreiben if (btDaten == ‘2’) { // Daten lesen String Temperatur = String(dht.readTemperature()); String Luftfeuchtigkeit = String(dht.readHumidity()); // in Strings umwandeln, . durch , ersetzen Temperatur.replace(“.”, “,”); Luftfeuchtigkeit.replace(“.”, “,”); /* O_CREAT -> Datei erstellen, wenn sie nicht existiert O_WRITE -> in die Date schreiben O_AT_END -> Startposition zum Schreiben an das Ende der Datei setzen */ Temperaturmessung.open(“Messung.csv”, O_CREAT | O_WRITE | O_AT_END); // wenn die Datei geöffnet werden konnte … if (Temperaturmessung) { BTSerial.println(F(“Schreibe Messdaten”)); // Überschrift schreiben schreibeUeberschrift(); DateTime aktuell = rtc.now(); char Datum[] = “DD.MM.YYYY “; char Zeit[] = “hh:mm:ss”; Temperaturmessung.print(aktuell.toString(Datum) + ‘;’); Temperaturmessung.print(aktuell.toString(Zeit) + ‘;’); Temperaturmessung.print(Temperatur + “;”); Temperaturmessung.print(Luftfeuchtigkeit); Temperaturmessung.println(); // Datei schließen Temperaturmessung.close(); BTSerial.println(F(“Abgeschlossen.”)); } } // Daten lesen if (btDaten == ‘3’) { Temperaturmessung = SD.open(“Messung.csv”, O_RDONLY); if (Temperaturmessung) { // solange sich Zeilen in der Datei befinden … while (Temperaturmessung.available()) { // … bis return lesen (‘\n’) String GeleseneZeile = Temperaturmessung.readStringUntil(‘\n’); // für die bessere Lesbarkeit ; durch Leerzeichen ersetzen GeleseneZeile.replace(“;”, ” ”); // in der App und im Seriellen Monitor ausgeben Serial.println(GeleseneZeile); BTSerial.print(GeleseneZeile); } // Datei schließen Temperaturmessung.close(); } } // Datei entfernen if (btDaten == ‘4’) { if (SD.exists(“Messung.csv”)) { SD.remove(“Messung.csv”); Serial.println(F(“Datei ‘Messung.csv’ entfernt!”)); BTSerial.println(F(“Datei ‘Messung.csv’ entfernt!”)); } } } } void schreibeUeberschrift() { Temperaturmessung.println(); Temperaturmessung.print(F(“Datum”)); Temperaturmessung.print(“;”); Temperaturmessung.print(F(“Zeit”)); Temperaturmessung.print(“;”); Temperaturmessung.print(F(“Temperatur in C”)); Temperaturmessung.print(“;”); Temperaturmessung.print(F(“Luftfeuchtigkeit in %”)); Temperaturmessung.println(); } |
Letzte Aktualisierung: