Hallo alle zusammen,
ich bin relativ neu hier und habe bislang auch noch nichts mit Bascom zu tun gehabt. Bislang habe ich nur PLCs (Kleinsteuerungen) oder in ActionScript (Multimedia-Projekte mit Macromedia Flash) programmiert. Ein prinzipielles Verständnis für's Programmieren sollte also eigentlich vorhanden sein .
Nun zu meinem Vorhaben:
Zusammen mit einem Kumpel möchte ich eine Temperatursteuerung realisieren, bei der man verschiedene Sollwerte einstellen und dann an den µC (ins EEPROM) übertragen kann. Für jeden Monat sollen je zwei Temperatursollwerte (jeweils für die 1. und 2. Monatshälfte) übertragen werden. Außerdem soll es jeweils unterschiedliche Temperaturen für Tag und Nacht geben, so dass neben den jeweiligen Tages- u. Nachttemperaturen auch noch vorgegeben werden muß, ab wieviel Uhr der Tag, bzw. die Nacht beginnt. Pro Monat also insgesamt 8 Werte - Tagestemperatur, Nachttemperatur, Tagesbeginn, Nachtbeginn, jeweils für eine Monatshälfte.
Hier mal der Code für den Monat Januar:
Code:
Dim TempDay as byte ' Variable für die Tagestemperatur
Dim TempNight as byte ' Variable für die Nachttemperatur
Dim Day as byte ' Variable für die Stunde in der das Licht eingeschaltet wird
Dim Night as byte ' Variable für die Stunde in der das Licht ausgeschaltet wird
Dim Temperature as byte ' Variable für die Temperatur auf Grundlage des gewählten Sollwerts
Dim Jan1TempDay as ERAM byte At 1
Dim Jan1TempNight as ERAM byte At 2
Dim Jan1Day as ERAM byte At 3
Dim Jan1Night as ERAM byte At 4
Dim Jan2TempDay as ERAM byte At 5
Dim Jan2TempNight as ERAM byte At 6
Dim Jan2Day as ERAM byte At 7
Dim Jan2Night as ERAM byte At 8
'###nachfolgend Datumsabfrage
TempDay=25 'Voreingestellte Tagestemperatur 25°C, falls noch keine Daten im EEPROM
TempNight=21 'Voreingestellte Nachttemperatur 21°C, falls noch keine Daten im EEPROM
Day=9 'Voreingestellter Tagesbeginn 9:00Uhr, falls noch keine Daten im EEPROM
Night=21 'Voreingestellter Nachtbeginn 21:00Uhr, falls noch keine Daten im EEPROM
'JANUAR
If _month = 1 And _day < 15 Then ' Abfrage - ob Datum in der 1. Januarhälfte
TempDay=Jan1TempDay ' Sollwert -Tagestemperatur- für 1.Januarhälfte im EEPROM der SRAM Variablen zuweisen
TempNight=Jan1TempNight ' Sollwert -Nachttemperatur- für 1.Januarhälfte im EEPROM der SRAM Variablen zuweisen
Day=Jan1Day ' Sollwert -Tagesbeginn- für 1.Januarhälfte im EEPROM der SRAM Variablen zuweisen
Night=Jan1Night ' Sollwert -Nachtbeginn- für 1.Januarhälfte im EEPROM der SRAM Variablen zuweisen
Elseif _month = 1 And _day >= 15 Then ' Abfrage - ob Datum in der 2. Januarhälfte
TempNight=Jan2TempDay ' Sollwert -Tagestemperatur- für 2.Januarhälfte im EEPROM der SRAM Variablen zuweisen
TempNight=Jan2TempNight ' Sollwert -Nachttemperatur- für 2.Januarhälfte im EEPROM der SRAM Variablen zuweisen
Day=Jan2Day ' Sollwert -Tagesbeginn- für 2.Januarhälfte im EEPROM der SRAM Variablen zuweisen
Night=Jan2Night ' Sollwert -Nachtbeginn- für 2.Januarhälfte im EEPROM der SRAM Variablen zuweisen
Ich hab's einfach mal sehr üppig kommentiert, damit verständlich wird, was ich vorhabe.
Nun mein Problem:
Mit der Bascom/AVR spezifischen Syntax bin ich noch nicht sonderlich vertraut und würde daher gern wissen, ob der oben angegeben Code so richtig ist. Sind wie gesagt, bislang noch alles Trockenübungen (hab noch keine Hardware - wird aber wohl ein ATMEGA 8 werden).
Ist die "if else if" Abfrage so okay? Komme ich so tatsächlich an die Sollwerte im EEPROM oder muß ich statt 1-8 HexWerte als Adresse angeben? Ist die Abfrage des Tags und des Monats mit "_day" und "_month" so richtig?
Würde mich sehr über Eure Hilfe/Kommentare freuen,
Gruß, Tim
Lesezeichen