Hallo zusammen,
bei mir taucht leider immer wieder ein Fehler auf, den ich nicht finden
kann. Vielleicht kann mir hier ja jemand helfen.
Auf meinem LCD wird die aktuelle Temperatur angezeigt. Zusätzlich habe
ich das Programm so programmiert, dass jeweils der kleinste und der
größte gemessene Wert als Minimal- bzw. Maximaltemperatur in der zweiten
Zeile meines Displays angezeigt wird. Mit dem größten Wert klappt dies
auch einwandfrei, aber beim kleinsten wird immer 0°C angezeigt, obwohl
dieser Wert nie gemessen wurde. Kann den Fehler jedoch nicht entdecken.
Meiner Meinung nach habe ich nämlich bei der Minimal und
Maximaltemperatur dasselbe entsprechend den Werten programmiert. Wo ist
der Fehler?
' Vorlage-Datei für Attiny-Platine
'**********************************************************
$regfile = "attiny2313.dat" 'Attiny2313
$crystal = 4000000 '4 MHz
$baud = 9600 ' Baudrate
RS232
'******************* Deklarationen ************************
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 ,
Db7 = Portb.0 , E = Portb.4 , Rs = Portb.6
Config Lcdbus = 4
Initlcd
Cls
Config Scl = Portb.5
Config Sda = Portb.7
Dim Aktuell As Byte
Dim Mindest As Byte
Dim Maximal As Byte
Dim X As Byte
Dim Y As Byte
'****************** Initialisierung ***********************
Ddrb = &B11111111 'Port B als
Ausgangsport
Ddrd = &B01110000 'D4, D5, D6
als Ausgang; Rest als Eingang
Portd = &B10001111 'Eingänge
auf high legen
'******************** Hauptprogramm ***********************
Do
Deflcdchar Print , 32 , 3 , 3 , 32 , 32 , 32 , 32 , 32 ' replace ?
with number (0-7)
I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop
Locate 1 , 1
Lcd Aktuell
Lcd Chr(0)
Lcd "C"
Locate 1 , 0
I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop
Locate 2 , 1
If Mindest > Aktuell Then
Mindest = Aktuell
End If
Lcd Mindest
Lcd Chr(0)
Lcd "C"
I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop
If Maximal < Aktuell Then
Maximal = Aktuell
End If
Locate 2 , 7
Lcd Maximal
Lcd Chr(0)
Lcd "C"
Cursor Off
Wait 1
Loop
End
so wie ich das sehe musst du Mindest einen Startwert zuweisen, denn am anfang ist er 0 und das ist immer kleiner als die aktuelle Temperatur, setzte dein Minimal beim ersten durchgang auf den aktuellen wert oder auf den größten wert. Gruß Marc
ich habe jetzt mal Mindest=Aktuelle eingegeben, aber das funktioniert nicht. Die Temperatur ist dann immer die aktuelle. Welchen Befehl benötige ich denn, um den Startwert zuzuweisen?
1 | '****************** Initialisierung *********************** |
2 | Mindest = 255 ' <===== |
3 | Ddrb = &B11111111 ' Port B als |
Conrad schrieb: > ich habe jetzt mal Mindest=Aktuelle eingegeben, aber das funktioniert > nicht. Die Temperatur ist dann immer die aktuelle. Welchen Befehl > benötige ich denn, um den Startwert zuzuweisen? Lesen hilft. Marc schrieb: > setzte dein Minimal beim ersten durchgang Du sollst nur beim ersten Durchlauf (oder falls möglich vor deiner Schleife) dem Min Wert die aktuelle Temperatur zuweisen. Übrigens auch dem Max Wert, sonst hast du bei einer Umgebung die dauerhaft unter 0 Grad ist das selbe Problem mit der Max Anzeige.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.