Wetterstation: Virtuelle Kerze
Zur Weihnachtszeit gehört auch immer etwas Deko. Im Büro kommt es dann zum Wettrüsten. Wer hat den weihnachtlichsten Arbeitsplatz?
Ich bin da eher zurückhaltend. Doch damit fällt man schnell auf, bzw. aus dem Rahmen. Outet sich womöglich als Weihnachtsmuffel.
Und damit meine soziale Kompetenz nicht in Frage gestellt wird hab ich mich für eine Alternative entschieden. Key Features -
Feinstaubbelastung gegen Null. Keine Geruchsbelästigung. Übrigens offenes Feuer ist per Hausordnung ebenfalls ausgeschlossen.
Kann die etwas Besonderes?
Die Umsetzung mit dem Dev Board der Wetterstation ist besonders interessant, denn mit dem Feuchtigkeitssensor können wir ermitteln
ob jemand die Kerze auspusten will. Ist dies der Fall muss so eine virtuelle Kerze natürlich auch aus gehen.
Die Anwendungen
$include "lcd.bas" $include "weather.bas" Dim Page As Byte Dim Column As Byte Dim Count As Byte Dim Temp As Word Dim Ref As Word Dim Rand As Word Dim Raw As Word Clear_lcd Ref = Read_rh() Do Backlight = 1 Temp = Read_rh() Gosub Getrawdata Temp = Temp - Ref Loadwordadr Background Page = 5 Column = 42 Print_bmp Page , Column , 3 , 44 If Temp > 10 Then Backlight = 0 Loadwordadr Flame3 Page = 2 Column = 59 Print_bmp Page , Column , 4 , 10 Do Loop Else Rand = Raw And &B0000000000000001 If Rand = 0 Then Loadwordadr Flame1 Page = 2 Column = 59 Print_bmp Page , Column , 4 , 10 Else Loadwordadr Flame2 Page = 2 Column = 59 Print_bmp Page , Column , 4 , 10 End If End If Loop End Getrawdata: Raw = Read_temp() Loadadr Raw , Z $asm st Z+, r0 St Z, r1 $end Asm Return Background: Data &HE0 , &HF0 , &HF8 , &H38 , &H1C , &H1C , &H1E , &H0E , &H0E , &H0E , &H07 , &H07 , &H07 , &H03 , &H03 , &HC2, Data &HE0 , &H60 , &H20 , &H32 , &H06 , &HFE , &HFC , &H80 , &H10 , &H10 , &H32 , &HF3 , &HE3 , &H03 , &H03 , &H03, Data &H03 , &H03 , &H06 , &H06 , &H06 , &H0E , &H0C , &H0C , &H18 , &H78 , &HF0 , &HE0 , &HFF , &H03 , &HFF , &HFC, Data &HF8 , &HF8 , &HF0 , &HF0 , &HF0 , &HF0 , &HE0 , &HE0 , &HE0 , &HE0 , &HE0 , &HE1 , &HE1 , &HE3 , &HE2 , &HE2, Data &HE4 , &HE4 , &HE4 , &HE6 , &HE2 , &HE2 , &HE3 , &HE1 , &HE0 , &HE0 , &HE0 , &HE0 , &HE0 , &HE0 , &HF0 , &HF0, Data &HF0 , &HF0 , &HF8 , &HF8 , &HFC , &HFC , &H03 , &HFF , &H7F , &HC0 , &H9F , &H3F , &H7F , &H7F , &HFF , &HFF, Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF, Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H7F, Data &H3F , &H87 , &HF0 , &H3F, Flame1: Data &H00 , &H00 , &H00 , &HE0 , &HFC , &HFF , &HFF , &HE0 , &H00 , &H00 , &H80 , &HF0 , &HFE , &H7F , &H1F , &H07, Data &HFF , &HFF , &HFC , &H00 , &HFF , &HFF , &HFF , &HC0 , &H80 , &H00 , &H80 , &HFF , &HFF , &HFC , &HE1 , &H67, Data &H2F , &H3F , &H1F , &HFF , &HFF , &H8F , &H17 , &H11, Flame2: Data &H00 , &H00 , &H00 , &H00 , &HC0 , &HF0 , &HF0 , &H00 , &H00 , &H00 , &H00 , &HC0 , &HF0 , &H7E , &H1F , &H3F, Data &HFF , &HFC , &H80 , &H00 , &HFC , &HFF , &HFF , &H00 , &H00 , &H00 , &HE1 , &HFF , &HFF , &HFC , &HE1 , &H67, Data &H2F , &H3E , &H1C , &HFF , &HFF , &H8F , &H17 , &H11, Flame3: Data &H00 , &H00 , &H00 , &H00 , &H04 , &H09 , &H60 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H06 , &H21 , &H80, Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HC0 , &H30 , &H0B , &H00 , &H00 , &H00 , &HE0 , &H60, Data &H20 , &H28 , &H0C , &HFC , &HF8 , &H80 , &H10 , &H10,
Funktion
Zu Beginn der Anwendung wird die aktuelle Luftfeuchtigkeit ermittelt und als Referenzpunkt gespeichert.
Danach wird in einer Endlosschleife die Luftfeuchtigkeit gemessen und mit der Referenz verglichen.
Bei einer Abweichung von > 10% (einmal kräftig Pusten) wird die Hintergrundbeleuchtung deaktiviert
und die entsprechende Grafik angezeigt.
Grafikentwurf und Animation
Alle Grafiken wurden mit MSPaint erstellt und mit Mosiac für BASCOM umgewandelt.
Die Animation der Kerze besteht aus zwei Grafiken. Diese werden zufällig umgeschaltet. Als Zufallsgenerator dient das niederwertigeste Bit aus den
Rohdaten der Temperaturmessung (Rand = Raw And &B0000000000000001).
Die Anzeige der Kerze besteht aus zwei Teilen. Einem statischen Hintergrund (die Kerze oder das Teelicht selbst) und dem Flammenbild.
Ausgetauscht wird jeweils nur das Flammenbild für die Animation oder die erloschene Kerze nach dem Auspusten.
Download und Links: