Hallo, ich bekomme über Bluetooth Daten von einem Handy(Beschleunigungssensor). Wenn man das Handy nun kippt, wird dies über Bluetooth gesendet. Handy links gekippt -10.xxxxxx Handy mitte 0.xxxxx Handy rechts gekippt 10.xxxxx Das ganze soll nun eine Servo Ansteuerung mit Bascom werden. Heißt also Servo mittelstellung wert: 170 Servo links 100 Servo rechts 255 Meine Frage ist nun, wie rechne ich diese Werte von -10 bis +10 am einfachsten um, sodass man mit kippen des Handys einen Servo ansteuern kann.
Jack schrieb: > Heißt also Servo mittelstellung wert: 170 > Servo links 100 > Servo rechts 255 dann ist aber 170 nicht die Mitte. > > Meine Frage ist nun, wie rechne ich diese Werte von -10 bis +10 am > einfachsten um, indem du dir eine Formel ausdenkst? wie müsste wohl eine Umrechnung aussehen, so dass diese Abbildung ensteht +- -10 ----> 100 -+ 10 Differenz | | 70 Differenz +- 0 ----> 170 -+ 10 Differenz | | 70 Differenz +- 10 ----> 240 -+ Wie wärs mit Servo = Wert * 7 + 170
Hallo, das hatte ich schon ausprobiert, jedoch wackelt der Servo dort ziemlich und es funktioniert nur bei den ganzen Zahlen, daher nicht wenn man das Handy nur etwas bewegt. Hier mal mein Programm: $regfile = "m16adef.dat" $crystal = 8000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Config Servos = 1 , Mode = Servo , Servo1 = Portd.7 Enable Interrupts Dim Acc As Single Servo(1) = 170 Do Input Acc Acc = Acc * 7 Acc = Acc + 170 Servo(1) = Acc Loop
Kein Wunder ich sollte auch einen 16 Bit Timer verwenden. Danke für die Hilfe! Jetzt geht alles!
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.