Guten Abend liebe Forum-Gemeinde,
ich habe nun schon seit zwei Tagen eine Denkblokade in Bascom und würde mich über eure Hilfe freuen.
Ich lese über I²C die Werte der Beschleunigung (x, y, z) von dem Sensor (bma020) ein und lasse sie umrechnen und formatieren.
Nun möchte ich, dass wenn sich ...
a) einer (z.B. x)
b) zwei (z.B. x und y)
c) drei (z.B. x und y und z)
dieser Werte innerhalb von 30 Sekunden nicht ändert, eine aktion (LED) eingeschaltet wird und nach weiteren 10 Sekunden eine zweite Aktion (2. LED) eingeschaltet wird.
PS: Timer1 läuft nebenbei im 3 Sekunden Takt und zeigt den Programmstatus an (Toggle LED).
Vielen Dank im Voraus.
Programmaufruf:
Werte Auslesen und Formatieren:
ich habe nun schon seit zwei Tagen eine Denkblokade in Bascom und würde mich über eure Hilfe freuen.
Ich lese über I²C die Werte der Beschleunigung (x, y, z) von dem Sensor (bma020) ein und lasse sie umrechnen und formatieren.
Nun möchte ich, dass wenn sich ...
a) einer (z.B. x)
b) zwei (z.B. x und y)
c) drei (z.B. x und y und z)
dieser Werte innerhalb von 30 Sekunden nicht ändert, eine aktion (LED) eingeschaltet wird und nach weiteren 10 Sekunden eine zweite Aktion (2. LED) eingeschaltet wird.
PS: Timer1 läuft nebenbei im 3 Sekunden Takt und zeigt den Programmstatus an (Toggle LED).
Vielen Dank im Voraus.
Programmaufruf:
Code:
[COLOR="#0000CD"]Do
Config Debounce = 3000
Debounce aktivieren , 1 , aktivierung , 'Deaktivieren
Gosub Messen
Loop[/COLOR]
Werte Auslesen und Formatieren:
Code:
[COLOR="#0000CD"]Messen:
I2cstart
' Sensor adressieren
I2cwbyte Acc_w
' acc Datenregister adressieren
I2cwbyte &H02
' I2cstop
I2cstart
I2cwbyte Acc_r ' daten lesen
For I = 1 To 5
I2crbyte V(i) , Ack
Next I
I2crbyte V(6) , Nack
'I2cstop
' Format konvertieren
Ax = Ax / 64
Ay = Ay / 64
Az = Az / 64
'In beschleunigungen umrechnen & ausgeben
Locate 2,2
Sx = Ax * D2g
Zx = Str(Sx)
Zx = Fusing (Sx, "#.##") 'x- Achse
LCD Zx
Print Zx ;
Locate 2,7
Sy = Ay * D2g
Zy = Str(Sy)
Zy = Fusing (Sy, "#.##") ' y- Achse
LCD Zy
Print " ";Zy ;
Locate 2,12
Sz = Az * D2g
Zz = Str(Sz)
Zz = Fusing (Sz, "#.##") ' z- Achse
LCD Zz
Print " "; Zz
Return[/COLOR]