Servo Werte umrechnen

Gast #2850499
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.
#2850502
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
Gast #2850612
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren