|
Robot Seriale
Come pilotare il robot tramite porta seriale.
Questo codice in particolare potrebbe essere molto utile per calibrare i servo. Alimentate il vostro robot tramite la lipo o una batteria, caricate lo sketch su arduino e aprite la comunicazione seriale a 9600 baud.
Se invierete tramite seriale w, il robot andrà avanti per tot millisecondi impostati con interval. Se invierete a o la s cambierete direzione andando a destra o a sinistra. Inviando s il robot andrà indietro. Inviando c il robot andrà avanti fino a quando non riceverà v. I delay sono stati evitati volutamente perchè arduino durante il delay non fa niente, viene come congelato, e questa cosa da molto fastidio.
Eccovi infine il codice:
Includete la libreria Servo.h
Servo leftservo;
Servo rightservo;
char a;
long previousMillis = 0;
long interval = 200;
void setup()
{
Serial.begin(9600);
leftservo.attach(9);
rightservo.attach(10);
leftservo.write(90);
rightservo.write(90);
}
void loop()
{
if(Serial.available() > 0){
a = Serial.read();
leftservo.write(90);
rightservo.write(90);
switch(a){
case 'w':
previousMillis = millis();
while(millis() - previousMillis < interval) {
Serial.println("avanti");
leftservo.write(180);
rightservo.write(180);
}
leftservo.write(90);
rightservo.write(90);
break;
case 's':
previousMillis = millis();
while(millis() - previousMillis < interval) {
Serial.println("indietro");
leftservo.write(0);
rightservo.write(0);
}
leftservo.write(90);
rightservo.write(90);
break;
case 'a':
previousMillis = millis();
while(millis() - previousMillis < interval) {
Serial.println("destra");
leftservo.write(0);
rightservo.write(180);
}
leftservo.write(90);
rightservo.write(90);
break;
case 'd':
previousMillis = millis();
while(millis() - previousMillis < interval) {
Serial.println("sinistra");
leftservo.write(180);
rightservo.write(0);
}
leftservo.write(90);
rightservo.write(90);
break;
case 'c':
previousMillis = millis();
while(a != 'v') {
Serial.println("avanti tutta");
a = Serial.read();
leftservo.write(180);
rightservo.write(120);
}
leftservo.write(90);
rightservo.write(90);
break;
}
}
}
La board è una RoMeo della DFRobots!
![]()