Marten83
25.07.2007, 14:55
Hallo!
Ich bin momentan dabei meine Wetterstation zu bauen.
Dabei verwende ich auch einen ADC der mir den Drucksensor ausliest.
Ich hatte auch schon alles zum laufen bekommen bis ich dann auf die Idee mit Subroutinen und lokalen Variablen und so gekommen bin.
Hier mein Programm:
$regfile = "m32def.dat"
$crystal = 8000000
Config Sda = Portc.1
Config Scl = Portc.0
Config Lcd = 20 * 4
Cursor Off
Cls
Declare Sub Ads1100(luftdruck() As String)
Dim K(7) As String * 7
Do
Call Ads1100(k(1))
Locate 2 , 1
Lcd "Druck: " ; K(7) ; " hPa"
Wait 1
Loop
End
Sub Ads1100(luftdruck() As String) 'Subroutine für ADS1100, Ausgabe: String * 7
Local D As Word
Local U As Single , P As Single
I2cstart
I2cwbyte &B10010000 'Adresse (A0) und schreiben
I2cwbyte &B10011100 'single conversion, 8SPS, gain 1, Messung durchführen
I2cstop
I2creceive &B10010001 , D , 0 , 2 'Adresse (A0) und lesen, Daten in Variable schreiben
Rotate D , Left , 8 'Bytes in richtige Reihenfolge vertauschen
U = D * 0.000152588
P = U + 0.76
P = P / 0.005295
Luftdruck(7) = Fusing(p , "####.##")
End Sub
Auf meinem Display erscheint erstmal keine Zahl, was ich schonmal komisch finde.
Und danach steht nur der Rest nach dem Komma dort (z.B. Druck: .76 hPa).
Kann mir einer sagen warum? Was habe ich falsch gemacht?
Und wenn ich schonmal dabei bin....
Ich will das ganze so aufbauen, dass ich später nur noch eine Include-datei einbinde.
...Ich weiss nur nicht wie man das macht und auf was man achten muss.
Gibts da einTutorial zu?
Vielen Dank
Marten83
Ich bin momentan dabei meine Wetterstation zu bauen.
Dabei verwende ich auch einen ADC der mir den Drucksensor ausliest.
Ich hatte auch schon alles zum laufen bekommen bis ich dann auf die Idee mit Subroutinen und lokalen Variablen und so gekommen bin.
Hier mein Programm:
$regfile = "m32def.dat"
$crystal = 8000000
Config Sda = Portc.1
Config Scl = Portc.0
Config Lcd = 20 * 4
Cursor Off
Cls
Declare Sub Ads1100(luftdruck() As String)
Dim K(7) As String * 7
Do
Call Ads1100(k(1))
Locate 2 , 1
Lcd "Druck: " ; K(7) ; " hPa"
Wait 1
Loop
End
Sub Ads1100(luftdruck() As String) 'Subroutine für ADS1100, Ausgabe: String * 7
Local D As Word
Local U As Single , P As Single
I2cstart
I2cwbyte &B10010000 'Adresse (A0) und schreiben
I2cwbyte &B10011100 'single conversion, 8SPS, gain 1, Messung durchführen
I2cstop
I2creceive &B10010001 , D , 0 , 2 'Adresse (A0) und lesen, Daten in Variable schreiben
Rotate D , Left , 8 'Bytes in richtige Reihenfolge vertauschen
U = D * 0.000152588
P = U + 0.76
P = P / 0.005295
Luftdruck(7) = Fusing(p , "####.##")
End Sub
Auf meinem Display erscheint erstmal keine Zahl, was ich schonmal komisch finde.
Und danach steht nur der Rest nach dem Komma dort (z.B. Druck: .76 hPa).
Kann mir einer sagen warum? Was habe ich falsch gemacht?
Und wenn ich schonmal dabei bin....
Ich will das ganze so aufbauen, dass ich später nur noch eine Include-datei einbinde.
...Ich weiss nur nicht wie man das macht und auf was man achten muss.
Gibts da einTutorial zu?
Vielen Dank
Marten83