hi all.. im asre and i new in arduino..i have problem with my servo..i using 2 modified continuous servo (my project is built a mobile robot) and i want it move in certain location (let say in 5meter). can anybody help me with a code how i move my mobile robot? please...
Continuous servos do not do position any more so all you can do is to turn on the motor for a fixed ammount of time. Calibrate the time to give you the distance you want.
Simple test code for two servos.
// zoomkat 12-13-11 serial servo (2) test
// for writeMicroseconds, use a value like 1500
// for IDE 1.0
// Powering a servo from the arduino usually DOES NOT WORK.
// two servo setup with two servo commands
// send eight character string like 15001500 or 14501550
// use serial monitor to test
#include <Servo.h>
String readString, servo1, servo2;
Servo myservo1; // create servo object to control a servo
Servo myservo2;
void setup() {
Serial.begin(9600);
myservo1.attach(6); //the pin for the servo control
myservo2.attach(7);
Serial.println("two-servo-test-1.0"); // so I can keep track of what is loaded
}
void loop() {
while (Serial.available()) {
delay(3); //delay to allow buffer to fill
if (Serial.available() >0) {
char c = Serial.read(); //gets one byte from serial buffer
readString += c; //makes the string readString
}
}
if (readString.length() >0) {
Serial.println(readString); //see what was received
// expect a string like 07002100 containing the two servo positions
servo1 = readString.substring(0, 4); //get the first four characters
servo2 = readString.substring(4, 8); //get the next four characters
Serial.println(servo1); //print to serial monitor to see parsed results
Serial.println(servo2);
int n1 = servo1.toInt();
int n2 = servo2.toInt();
Serial.println("the numbers are :");
Serial.println(n1); //print to serial monitor to see number results
Serial.println(n2);
myservo1.writeMicroseconds(n1); //set servo position
myservo2.writeMicroseconds(n2);
readString="";
servo1="";
servo2="";
}
}
Grumpy_Mike:
Continuous servos do not do position any more so all you can do is to turn on the motor for a fixed ammount of time. Calibrate the time to give you the distance you want.
hmm...let say in 2sec. the mobile robot can move 3meter..can u help me how to put in codes? its not about time..its more to distance... my friend say do in looping code..but i still new in codes..can help?
zoomkat:
Simple test code for two servos.// zoomkat 12-13-11 serial servo (2) test
// for writeMicroseconds, use a value like 1500
// for IDE 1.0
// Powering a servo from the arduino usually DOES NOT WORK.
// two servo setup with two servo commands
// send eight character string like 15001500 or 14501550
// use serial monitor to test
#include <Servo.h>
String readString, servo1, servo2;
Servo myservo1; // create servo object to control a servo
Servo myservo2;
void setup() {
Serial.begin(9600);
myservo1.attach(6); //the pin for the servo control
myservo2.attach(7);
Serial.println("two-servo-test-1.0"); // so I can keep track of what is loaded
}
void loop() {
while (Serial.available()) {
delay(3); //delay to allow buffer to fill
if (Serial.available() >0) {
char c = Serial.read(); //gets one byte from serial buffer
readString += c; //makes the string readString
}
}
if (readString.length() >0) {
Serial.println(readString); //see what was received
// expect a string like 07002100 containing the two servo positions
servo1 = readString.substring(0, 4); //get the first four characters
servo2 = readString.substring(4, 8); //get the next four characters
Serial.println(servo1); //print to serial monitor to see parsed results
Serial.println(servo2);
int n1 = servo1.toInt();
int n2 = servo2.toInt();
Serial.println("the numbers are :");
Serial.println(n1); //print to serial monitor to see number results
Serial.println(n2);
myservo1.writeMicroseconds(n1); //set servo position
myservo2.writeMicroseconds(n2);
readString="";
servo1="";
servo2="";
}
}
can it move forwrd in certain location?
my project is to build a mobile robot that move forward in certain distance..i using 2 modified servo motor (from 180deg to 360 deg rotation).. i want it move in certain distance..let say in 10meter..i have working code for rotating the servo but it rotate in time (means when we set it rotate 5sec, it will rotate then stop). my problem is how i modified the code so it looping the 5 sec rotating into distance? ( let say in 2 sec, the mobile robot move in 1meter)
#include <Servo.h>
Servo servoLeft; // Define left servo
Servo servoRight; // Define right servo
void setup() {
servoLeft.attach(10); // Set left servo to digital pin 10
servoRight.attach(9); // Set right servo to digital pin 9
}
void loop() { // Loop through motion tests
forward(); // Example: move forward
delay(2000); //
stopRobot();
}
// Motion routines for forward, reverse, turns, and stop
void forward()
{
servoLeft.write(0);
servoRight.write(90);
}
void stopRobot() {
servoLeft.detach();
servoRight.detach();
}
( let say in 2 sec, the mobile robot move in 1meter)
It't kindergarden maths.
2 seconds for 1 meter = 1 / 2 = 0.5 meters per second
So for 10 meters it will take 10 / 0.5 = 20 seconds
Grumpy_Mike:
( let say in 2 sec, the mobile robot move in 1meter)
It't kindergarden maths.
2 seconds for 1 meter = 1 / 2 = 0.5 meters per second
So for 10 meters it will take 10 / 0.5 = 20 seconds
thank you sir..but if u given distance..how to calculate time travel? let say given distance = 400m... help me...
The same as the last line of my post
Distance 400 meters at a speed of 0.5 meters / second
Is 400 / 0.5 = 800 seconds.
Grumpy_Mike:
The same as the last line of my post
Distance 400 meters at a speed of 0.5 meters / second
Is 400 / 0.5 = 800 seconds.
thank you sir..