Hi, versuche mich gerade in die Programmierung eines Thermometers einzuarbeiten. Allerdings komme ich leider nicht weiter. Für den Anfang wollte ich einfach erstmal nur das Array ausgeben lassen in dem die Werte vom 1820 gespeichert werden Quellcode: $regfile = "m8adef.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdbus = 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config 1wire = Portd.7 Dim Temp(9) As Byte Dim I As Integer Cls Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 500 1wreset 1wwrite &HCC 1wwrite &HBE Temp(1) = 1wread(9) Waitms 500 For I = 1 To 9 Step 1 Locate 1 , I Lcd Temp(i) Next Loop End Allerdings zeigt er dann auf dem Display "22222222255". Wie kann das sein? 1. sollte ja nur 0 oder 1 drin stehen, 2. sollte er ja nur 9 stellen ausgeben. Wenn der Sensor nicht angeschlossen ist, gibt er korrekterweise 9 nullen aus. Ich hab kein Plan wo hier der Fehler liegen soll, so viel verkehrt kann man in den paar Zeilen Code doch gar nicht machen... Gruß Sebastian
Dein "LCD Temp(i)" gibt immer 255 aus, da du den Cursor aber immer nur um eine Stelle nach rechts schiebst überschneidet sich das ganze halt. 22222222255 255 255 255 255 255 255 255 255 255 Lass einfach das Locate weg, der Cursor wird schon automatisch weiter geschoben. Wenn du es übersichtlicher haben möchtest dann mach lieber LCD Hex(Temp(i)) ; " "
danke, nun geht es. allerdings eine verständnisfrage: der wert im array ist doch binär? also in jedem feld (1-9) steht entweder ne 0 oder ne 1? wieso gibt er dann im o.a. quellcode den wert dezimal wieder? erst mit "lcd bin(temp(1))" wird er binär dargestellt. falsch war oben btw auch der 1mhz interne oszillator, mit nem 8mhz ext quarz zeigt er jetzt auch den richtigen wert, deshalb stand oben immer nur die 255. Gruß Sebastian
und wieso muss das array 9 stellen lang sein, wenn es eh als byte deklariert ist? hab den testcode aus dem roboternetz
Ja, das mag binär da drinnen stehen aber Bascom gibt bei PRINT und LCD immer den Wert aus, nicht die Bits :) Dafür gibt es ja dann Bin(x).
Sebastian schrieb: > und wieso muss das array 9 stellen lang sein, wenn es eh als byte > deklariert ist? hab den testcode aus dem roboternetz Schau mal ins Datenblatt: Seite 6 unten und Seite 8 Es werden 9 Byte vom 1820 gelesen, deshalb auch ein 9 Byte großes Array. Byte 0: Temp LSB Byte 1: Temp MSB Byte 2: User Byte 1 Byte 3: User Byte 2 Byte 4: - Byte 5: - Byte 6: Count remain Byte 7: Count per °C Byte 8: CRC Zusammen 9 Byte
achso, also ist jedes feld im array dann ein byte groß? bei 9 feldern also 9*8bit insgesamt?
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.