|
Beispiel 1: Temperatur mit SHT31-Sensor
Im ersten einfachen Beispiel wird die Umgebungstemperatur im Terminalfenster angezeigt. Ist der Sensirion SHT31 oder der billigere GY-SHT31- Sensor am EV3-Port 1 angeschlossen, liefert der Befehl temp, hume = sht1.getValues()
ein Tupel mit Temperatur (Grad C) und Luftfeuchtigkeit (%). Mit print(temp) wird die aktuelle Temperatur, mit print(humi) die Feuchtigkeit und mit print(temp, humi) werden die beiden Werte im Terminalfenster angezeigt. delay(500) legt die Messperiode von 500 ms fest. Der Sensor reagiert schnell auf die Umgebungsänderungen. Sobald du z. B. den Sensor mit den Fingern berührst, werden höhere Temperatur und Feuchtigkeitswerde angezeigt. Die Programmausführung wird mit Schliessen des Terminalfensters beendet.
|
|
|
|
from grobot import *
repeat:
temp, humi = sht1.getValues()
print(temp)
delay(500)
► In Zwischenablage kopieren
Wenn sich der EV3 nicht in der Nähe deines Computers befindet, oder wenn du das Beispiel mit Online-Editor ausführst, kannst du die Sensorwerte auf seinem LCD-Display anzeigen. Dazu verwendest du anstelle des Befehls print() den Befehl
drawString("Temperature: " + str(temp), 2, 2) Die Temperatur wird an der Position 2 in der zweiten Zeile des Displays angezeigt.
Beispiel 2: Temperatur und Feuchtigkeit mit formatierter Ausgabe
Die Sensorwerte sind Dezimalzahlen (float) mit mehreren nachkommastellen. Es ist deshalb vorteilhaft, eine formatierte Ausgabe zu verwenden.
|
|
Der Formatstring enthält Platzhalter, welche für die Ausgabewerte die gesamte Anzahl Zeichen und die Anzahl Dezimalstellen angeben. Werte mit mehreren Dezimalstellen werden automatisch gerundet. Willst du nur die Temperatur mit einer Dezimalstelle anzeigen, schreibst du:
print("Temperatur: %6.2f" % temp).
|
Im nächsten Programm werden die Sensorwerte formatiert angezeigt und zusätzlich kann das Programm auch mit Drücken der Escape-Taste auf dem EV3 beendet werden.
|
|
|
from grobot import *
while not button_escape.was_pressed():
temp, humi = sht1.getValues()
print("Temp: %6.2f, Humi: %6.2f" % (temp, humi))
delay(500)
exit()
► In Zwischenablage kopieren
Um die Werte auf dem EV3-Display anzuzeigen, verwendest du die Befehle
drawString("Temp: %6.2f" % (temp), 1, 1)
drawString("Humi: %6.2f" % (humi), 1, 3)
Dabei wird die Temperatur in der 1. Zeile und die Feuchtigkeit in der 3. Zeile angezeigt.
Beispiel 3: Wetterstation mit BME280 Sensor
Der BME280 von Bosch kannst du Temperatur, Luftfeuchtigkeit und Luftdruck messen. Er eignet sich daher perfekt für eine Wetterstation oder einen Raumsensor. Die Sensorwerte werden mit dem Befehl bme1.getValues() registriert und als Tupel v gespeichert. Bei der Ausgabe verwendest du die Komponenten v[0], v[1] und v[2].
|
|
|
from grobot import *
while not button_escape.was_pressed():
v = bme1.getValues()
print("t: %6.2f, h: %6.2f, p: %6.2f" % (v[0], v[1], v[2]))
delay(500)
exit()
► In Zwischenablage kopieren
Gleich wie beim Sensirion-Sensor, kannst du auch hier nur die einzelnen Sensorwerte anzeigen.
from grobot import *
repeat:
temp,humi,p = bme1.getValues()
print(temp)
drawString("Temp: " + str(temp), 2, 2)
delay(500)
► In Zwischenablage kopieren
Beispiel 4: Temperatur-Regelung
Wie funktioniert ein Regelungssysteme? Ein Temperatursensor misst die aktuelle Temperatur (Istwert) und liefert ihn an den Regler. Dieser vergleicht ihn mit dem gewünschten Wert (Sollwert). Ist der aktuelle Wert kleiner als Sollwert, wird die Wärmequelle eingeschaltet, ist er höher als der Sollwert, wird sie ausgeschaltet. In der Regel wird als Sollwert nicht ein einziger Wert, sondern ein Werte-Bereich festgelegt.
In deinem Beispiel programmierst du eine Temperatur-Regelung. Der EV3 ist mit einem Temperatursensor ausgerüstet. Ausserdem brauchst du eine Wärmequelle (Lampe, Föhn, Heizung...), oder kannst du den Sensor vorsichtig mit deinen Fingern berühren. So lange die aktuelle Temperatur tiefer als der Sollwert ist, werden die roten LEDs eingeschaltet. Liegt der Temperaturwert beim Sollwert (zwischen 29 und 31°), sind die orangen LEDs eingeschaltet. Ist die Temperatur höher als der Sollwert, werden die LEDs ausgeschaltet.
|
from grobot import *
ts = 30 #sollWert
repeat:
temp, humi = sht1.getValues()
print(temp)
if temp < ts - 1:
setLED(1)
elif temp > ts - 1 and temp < ts + 1:
setLED(3)
elif temp > ts + 1:
setLED(0)
delay(300)
► In Zwischenablage kopieren
Auf dem gleichen Prinzip werden viele Regelsysteme aufgebaut. Anstelle der LEDs kann z.B. eine Heizung ein- und ausgeschaltet werden.
|