Hallo
Ich habe schon recht viel gelesen, doch ganz klar, ich bin noch nicht so recht in der Materie eingearbeitet. Ich habe via Google oder auch hier im Forum nichts dergleichen gefunden was mir helfen könnte. Nun hoffe ich hier auf Unterstützung.
Ich habe vor einen Roboter zu steuern und ein paar Arduino Sketchs im Netz gefunden. Der Sender soll mit einem Arduino Pro Mini 16Mhz, einem Xbee Serie1 und unter anderem diesem Joystick Analog 2-axis Thumb Joystick with Select Button + Breakout Board : ID 512 : $5.95 : Adafruit Industries, Unique & fun DIY electronics and kits gesteuert werden.
Der Empfänger besteht aus einem Arduino Uno, Xbee Serie1 und einem Roboclaw 2x60A Motorcontroller.
Nun zur eigentlichen Frage. Ich verstehe im Sketch nicht so ganz, was beim Empfänger-Sketch in der Zeile für mappos3 resp. mappos4 geschieht. Am Roboclaw sind ja normale Motoren angeschlossen und keine Servos. Sind die Wertumwandlungen im Befehl map() nicht die Winkel vom Servo?
Im Sketch habe ich nur den Joystick Mittelklick (nehme ich an) mit der Übertragung dringelassen. das posarray[2] resp. posarray[3] sind die übertragenen Werte des Joysticks links/rechts resp. vorwärts/rückwärts. Hier mal der Sketch vom Sender: und Empfänger: (es geht um die rot markierten Zeilen)
Sendermodul:
int joybut = 11;
int joybutstate = 0;
int joybuttx;
void setup(){
pinMode(joybut, INPUT_PULLUP);
}
void loop(){
joybutstate=digitalRead(joybut);
if (joybutstate == LOW) {
joybuttx = 2;
}
if (joybutstate == HIGH) {
joybuttx = 1;
}
Serial.write(',');
Serial.write(joybuttx);
delay(25);
Empfängermodul:
#include <VarSpeedServo.h>
int mappos3;
int mappos4;
int posarray[8];
int i;
int servo3Pin = 9;
int servo4Pin = 10;
int joybut = 0;
VarSpeedServo servo3;
VarSpeedServo servo4;
void setup(){
Serial.begin(38400);
servo3.attach(servo3Pin);
servo4.attach(servo4Pin);
}
void loop(){
if(Serial.read() == ','){
while(Serial.available() >= 7){
for(i = 0; i < 8; i ++) {
posarray[i] = Serial.read();
}
}
}
joybut = posarray[0];
if(joybut==1){
mappos3 = map(posarray[2], 0, 180, 100, 80);
mappos4 = map(posarray[3], 0, 180, 100, 80);
}
if(joybut==2){
mappos3 = map(posarray[2], 0, 180, 100, 80);
mappos4 = map(posarray[3], 0, 180, 120, 60);
}
servo3.slowmove(mappos4, 20);
servo4.slowmove(mappos3, 20);
delay(10);
}
Ich hoffe es kann mir jemand Licht ins Dunkeln bringen.
Nebenbei noch, was bedeutet das "Serial.write(',');" für was steht das ','?
Grüsse
Stef