by rodrigorodrigao » Sat 28. Nov 2015, 20:51
boa tarde Adriano,mais um dia de fracasso kkkk estou tentando fazer dois micro servo 9g se mover mais ate agora nada,estou usando o x-sim consigo colocar pra funcionar o simulador 3D do próprio x-sim agora quando parte para o arduino nada na dica de nada.La na opção “Output setup” “USO (universal serial output)” consigo achar o arduino na com 6, No campo “Datapacket with axis informations” adicione “AB~255~~a01~~a02~ “ (sem aspas) colo isso mais sem sucesso.
O código que estou usando foi um q vi na net:
/*
* 2DOF Motion Platform with 2 Servos
*/
#include <Servo.h>
Servo myservo1;
Servo myservo2;
int Degree;
int Gforce = 0;
int Gforce1 = 0;
int Gforce10 = 0;
int Gforce100 = 0;
char kind_of_data;
void setup() {
//set servo pins
myservo1.attach(2);
myservo2.attach(3);
//align servos center postision
myservo1.write(90);
myservo2.write(90);
//open serial connection
Serial.begin(115200);
}
void loop() {
// wait for serial input (min 3 bytes in buffer)
while(Serial.available() > 0) {
kind_of_data = Serial.read(); //string from USO --> L~a01~ R~a02~ 8bit resolution\decimal output
if(kind_of_data == 'L') {
Read_Pos(kind_of_data);
}
if(kind_of_data == 'R') {
Read_Pos(kind_of_data);
}
}
}
void Read_Pos(char which_servo){
delay(2);
int Gforce100 = Serial.read()- '0';
delay(2);
int Gforce10 = Serial.read()- '0';
delay(2);
int Gforce1 = Serial.read()- '0';
//Verifica se e centena dezena ou decimal... =]
if (Gforce1 < 0) { Gforce = Gforce10 + 10*Gforce100; }
if (Gforce1 < 0 && Gforce10 < 0) { Gforce = Gforce100; }
if (Gforce100 < 0) { Gforce = 127; }
if (Gforce1 >=0 && Gforce10 >= 0 && Gforce100 >= 0) { Gforce = 100 * Gforce100 + 10 * Gforce10 + Gforce1; }
if (which_servo == 'L') {
Degree = map(Gforce, 0, 255, 180, 0);
}
if (which_servo == 'R') {
Degree = map(Gforce, 0, 255, 0, 180);
}
if (which_servo == 'L') {
myservo1.write(Degree);
}
if (which_servo == 'R' ){
myservo2.write(Degree);
}
}
não sei se estar certo, onde posso estar errado amigo.