Forum: Mikrocontroller und Digitale Elektronik Servo Werte umrechnen


von Jack (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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

von Jack (Gast)


Lesenswert?

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

von Jack (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.