Hallo, ich arbeite mit dem Temperatursensor LM75 und dem Programm Bascom. Habe bei der Erstellung des Thermometers jedoch einige Schwierigkeiten. Ich möchte zum Beispiel Temperaturen, die ich messe speichern. Kenne mich jedoch nicht sher gut mit den Befehlen aus und bräuchte etwas Hilfe. Mit welchem Befehl kann man Daten speichern? Gruß Robin
Robin schrieb: > Mit welchem Befehl kann man Daten speichern? > Gruß Robin Und wo willst du die Messdaten speichern?
Wenn es um den Eeprom geht dann sowas ? Am Einfachsten ist es, die Variable mit dem Zusatz „ As Eram“ zu deklarieren: Dim Temp As Eram Single
Skript Kiddy schrieb: > Und wo willst du die Messdaten speichern? Auf einem Mikrocontroller. Möchte nur später, dass mir die kleinste Temperatur auf einem Display angezeigt wird.
Hallo Zeig doch mal, was du bisher hast. Das ganze sollte doch nicht so schwer sein. Gruß Joachim
Do I2cstart I2cwbyte 145 I2crbyte Wert , Nack I2cstop Locate 1 , 1 Lcd Wert Locate 1 , 0 Loop End
Robin schrieb: > Auf einem Mikrocontroller. Möchte nur später, dass mir die kleinste > Temperatur auf einem Display angezeigt wird. Dann brauchste nich wirklich alle Temperaturen zu speichern. Zwei Variablen genügen: T_min (kleinste Temperatur) T_aktuell (gemessene Temperatur) Bei der ersten Messung speicherst du die gemessene Temperatur in T_min. Danach vergleichst du jede Messung mit T_min: Wenn T_aktuell < T_min dann T_min=T_aktuell Dann kannst du, wann immer es dir beliebt T_min auf dem Diplay ausgeben und siehst die niedrigste Temperatur des Temperaturverlaufes seit dem Reset des Mikrocontrollers. Auf dein Beispiel bezogen bedeutet das:
1 | 'Das erste Einlesen |
2 | I2cstart |
3 | I2cwbyte 145 |
4 | I2crbyte T_aktuell , Nack |
5 | I2cstop |
6 | |
7 | T_min = T_aktuell |
8 | Locate 1 , 1 |
9 | Lcd T_min |
10 | Locate 1 , 0 |
11 | Do |
12 | I2cstart |
13 | I2cwbyte 145 |
14 | I2crbyte Wert , Nack |
15 | I2cstop |
16 | If T_min > T_aktuell Then |
17 | T_min = T_aktuell |
18 | End if |
19 | Locate 1 , 1 |
20 | Lcd T_min |
21 | Locate 1 , 0 |
22 | Loop |
23 | |
24 | End |
Gruß Skriptkiddy
ja und den habe ich noch, um anzuzeigen, ob eine Plus-oder Minustemperatur vorhanden ist: If Wert > 200 Then Lcd "-" Else Lcd "+" Ansonsten habe ich ja damit schon die Programmierung, die mir die Temperatur auf dem Display anzeigt.
ach und in den Deklarationen habe ich noch das: 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 Wert As Byte
Skript Kiddy schrieb: > Robin schrieb: >> Auf einem Mikrocontroller. Möchte nur später, dass mir die kleinste >> Temperatur auf einem Display angezeigt wird. > Dann brauchste nich wirklich alle Temperaturen zu speichern. > Zwei Variablen genügen: > > T_min (kleinste Temperatur) > T_aktuell (gemessene Temperatur) > > Bei der ersten Messung speicherst du die gemessene Temperatur in T_min. > Danach vergleichst du jede Messung mit T_min: > > Wenn T_aktuell < T_min dann T_min=T_aktuell > > Dann kannst du, wann immer es dir beliebt T_min auf dem Diplay ausgeben > und siehst die niedrigste Temperatur des Temperaturverlaufes seit dem > Reset des Mikrocontrollers. Super, ich denke, dass mir das schonmal weiterhilft, werde es später mal ausprobieren...dankeschön
wenn Bytes von den Werten 200 bis 255 übertragen werden handelt es sich um Minustemperaturen, andernfalls bei übertragenen Bytes von 0- 127 heißt dies, dass positive Temperaturen vorliegen
Robin schrieb: > wenn Bytes von den Werten 200 bis 255 handelt es sich > um Minustemperaturen Nein bei allen Werten ab 128 (unsigned). Bei dir ist aber wert=255 --> -255 Grad. Das ist Blödsinn. Es sind nämlich nur -1 Grad. Schau dir mal das Zweierkomplement[1] an. Gruß Skriptkiddy [1] http://de.wikipedia.org/wiki/Zweierkomplement
aber soweit ich weiß, wandelt der das doch automatisch in die richtige Temperatur um, oder?
Nein, wieso? rechnen musst du selber. Das was du als Programm geschrieben hast zeigt dir nur die "Roh-Daten" an. MfG Tom
Ein Byte ist in Bascom eine 8-Bit vorzeichenlose Ganzzahl. Das heiß Sie geht von 0 bis 255. Da bildet Bascom garnichts auf einen negativen bereich ab. Wenn du den Betrag des negativen Wertes haben möchtest, dann mache es so:
1 | if wert > 127 then |
2 | betrag = ( 255 - wert ) + 1 'Betrag der negativen Temperatur |
3 | end if |
Skript Kiddy schrieb: > > Wenn du den Betrag des negativen Wertes haben möchtest, dann mache es > so: > if wert > 127 then > betrag = ( 255 - wert ) + 1 'Betrag der negativen Temperatur > end if und dann muss ich noch if wert > 127 then LCD"-" else lcd "+" einfügen? weil ich will ja richtig angezeigt haben, dass Minustemperaturen herrschen
Robin schrieb: > und dann muss ich noch if wert > 127 then LCD"-" else lcd "+" einfügen? > weil ich will ja richtig angezeigt haben, dass Minustemperaturen > herrschen Ist die Frage jetzt ernst gemeint?
Robin schrieb: > ja oder muss ich if Betrag the lcd "-" einfügen? Denk doch mal nach. Wie ist der (abolute) Betrag definiert? kopfschüttel
Skript Kiddy schrieb: > Denk doch mal nach. Wie ist der (abolute) Betrag definiert? er gibt den Abstand von 0 an, aber das könnte dann ja auch positiv sein
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.