Edoardo Vignali
Robot Seriale
Tutorials -
Mercoledì 12 Maggio 2010 09:05
Scritto da Edoardo Vignali

Robot Seriale

Come pilotare il robot tramite porta seriale.

Manta 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!

CC

 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi