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.