Sie sind auf Seite 1von 2

#include <Wire.

h> //Kommunikation mit dem Sensor


#include "SparkFunHTU21D.h" //Bibliothek für den Temp.- und Feuchtig.sensor

HTU21D HTU;

#define trigPin 13 //Trigger Pin für Ultraschallsensor


#define echoPin 12 //Echo Pin für Ultraschallsensor

#define MAXRANGE 400 //Maximale Reichweite in cm, Max. Reichweite höher


Einstellen verursacht evtl. unverlässliche Ergebnisse
#define MINRANGE 3 //Minimale Reichweite in cm (Laut Datenblatt, testen
obs stimmt)

int cnt = 0;
float val = 0;
float newVal = 0;
long duration
float distance
float temperature

void setup() {
Serial.begin (9600); //Serial starten um Ergebnisse zu zeigen
pinMode(trigPin, OUTPUT); //Pinmode einstellen
pinMode(echoPin, INPUT);
HTU.begin(); //Temperatursensor starten

void loop()
{
long duration;
float distance;
//float humd = HTU.readHumidity(); //Feuchtigkeit, wird für Berechnung nicht
benötigt, evtl. trotzdem einbauen
float temp = HTU.readTemperature(); //Temperatur, notwendig für
Distanzkorrektur

Serial.print("Temperature: ");
Serial.print(temp, 1); // Anzeige mit einer Dezimalstelle
Serial.println("*C"); //°C gibt komische Zeichen auf dem Serial
Monitor, daher *
//Serial.print("\Humidity:"); //aktuell nicht benötigt, eventuell
unkommentieren
//Serial.print(humd, 1); //Anzeige mit einer Dezimalstelle
//Serial.println("%");

digitalWrite(trigPin, LOW); // Low schalten bevor Trigger


delayMicroseconds(2); // Um sicher zu gehen, dass Low realisiert
wurde (Zeit variabel)
digitalWrite(trigPin, HIGH); // Den Sensor triggern
delayMicroseconds(10); // 10 Sekunden warten, sodass der Sensor das
Signal lesen kann
digitalWrite(trigPin, LOW); // Ende des Signals
duration = pulseIn(echoPin, HIGH); // Milisekunden seit Trigger

distance = (duration / 2.0) / 29.14; // Schallwelle "springt" zurück, daher die


doppelte Distanz, welche dement. durch 2 geteilt werden muss, Mulitplikation mit
29.14 (Zurückgelegter Weg der Schallwelle in m/ ms)
Serial.print("distance: ");
if (distance >= MAXRANGE || distance <= MINRANGE) { // Reichweite einschränken
Serial.println("Out of range");
}
else {
Serial.print(distance, 1); //Print mit einer Dezimalstelle: cmcm,mm
Serial.println(" cm");
}

float speedOfSound = 331.3 + 0.606 * temp; //Formel für die korrigierte


Schallgeschwindigkeit in m/s
Serial.print("speed of sound: ");
Serial.print(speedOfSound);
Serial.println(" m/s");

float compensatedDistance = (duration / 20000.0) * speedOfSound; //Duration


(Dauer) ist in ms, Speed (Geschwindigkeit) in m/s. /20k ergibt cm
Serial.print("compensated distance: ");
Serial.print(compensatedDistance, 1); //Eine Deizimalstelle
Serial.println(" cm\n"); //double new line
delay(900000); //15 Minuten bis zur nächsten
Messung warten (Zeit kann hier je nach Bedarf variabel eingestellt werden)

void loop() {
newVal = messung_korr;
// put your main code here, to run repeatedly:
val = val + newVal;
cnt = cnt + 1;

if minute=15 {
val = val / cnt
send(val)
val = 0;
cnt = 0;
}

}
}