Go Down

Topic: Rover rianimato (Read 1 time) previous topic - next topic

giocastel

Ciao a tutti
Questo è il mio primo progetto basato sulla scheda arduino (mega) appena comprata.
Per giocare un po' ho riesumato un vecchio rover con scheda bruciata rianimandolo... ma soprattutto impostando tutte le funzionalità del vecchio robot.

l'obiettvo è creare un robottino che possa inseguire le maggiori fonti di luce, evitando ostacoli discreta base per iniziare ad usare decentemente arduino.  Presto postero' le immagini del mio robot.

p.s. cannibalizzare un vecchio robot per ricrearne uno è sicuramente un metodo semplice e economicissimo per imparare
Il mio BLOG : PALLONE SONDA
http://roborover.wordpress.com

gbm

Si è uno dei punti dolenti della mia sperimentazione.
Non mi rimane mai un costrutto completo, viene digerito dai nuovi.
Community robotica / programmazione Arduino
www.gioblu.com

giocastel

Rianimazione avvenuta, ho creato un piccolo blog dove mettero' le fasi di vita del progetto di "rianimazione  :D :D :D...

http://roborover.wordpress.com

Oggi pomeriggio creo i primi due sensori di "prua" che sentono luce da destra e sinistra e relativi comandi ai servo per dirigersi verso la fonte di luce predominante....speriamo bene...

Gio'
Il mio BLOG : PALLONE SONDA
http://roborover.wordpress.com

Federico

Bello :) Tienici aggiornati! :D
Ma usi dei servo? Ci vorrebbe anche un po' di descrizione del funzionamento, motori, parti usate e codice!
F
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

giocastel

Si uso due servo futaba s3003 per le ruote, ora creo un po' di documentazione relativa al circuito e al software...
(per la serie menomale che è domenica ahahah)

arriva tutto...
Il mio BLOG : PALLONE SONDA
http://roborover.wordpress.com

Federico

Io ho qui 4 s3003, ma sono 0-180gradi, come fai a farlo andare avanti? :D
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

giocastel

devi modificarlo, se smonti il servo trovi 3 "ingranaggi" , sulla base del  pignone nero c'e' un semplice blocco di plastica, taglialo a metà con taglierino affilatissimo e fallo saltare, ma stai attento a non  romperlo tutto.. taglialo a metà.... e girerà a 360°.
Il mio BLOG : PALLONE SONDA
http://roborover.wordpress.com

giocastel

Il mio BLOG : PALLONE SONDA
http://roborover.wordpress.com

Federico

Valutero' l'operazione, in realta' li ho per iniziare a fare prove di un braccio meccanico, speravo che la modifica fosse reversibile  ;)
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

gbm

Tienili da conto, forse ne ho io qualcuno o qualche ingranaggio di troppo
Community robotica / programmazione Arduino
www.gioblu.com

giocastel

Bravo GBM , mai modificare roba che costicchia...almeno che tu non sia un folle ahahaha

E andiamo LA PRIMA VERSIONE DEL ROVER RIANIMATO ribattezzato SUNROVER è attiva!! segue il la luce predominante come un cane da tartufo ... ho messo tutto sul blog e tra poco metto anche gli schemi dei circuiti e soprattutto del software

http://roborover.wordpress.com
ho messo anche un video migliore mentre segue la luce...adesso aspetto che arrivi sera per testarlo con luce artificiale e facendo diventare matto il SunRover accendendo e spegnendo le luci nelle camere...vedremo che succede.

A presto, Gio'
Faccio un po' di Hardening del Software e pubblico.
Il mio BLOG : PALLONE SONDA
http://roborover.wordpress.com

gbm

quanti led usi per seguire la luce?
Community robotica / programmazione Arduino
www.gioblu.com

giocastel

non uso nessun led, ma delle fotoresistenze che misurano la quantità di luce presente nell'ambiente.
Il mio BLOG : PALLONE SONDA
http://roborover.wordpress.com

giocastel

Inserisco il codice del rover. l'ho messo anche sul Blog.
Il software comunque è ancora da hardenizzare ovviamente e da aggiornare

// Applicazione per Rover SunFollower
// Il robot segue le fonti di luce predominanti
// evita gli ostacoli se entra in collisione con un ostacolo
// rilevato dai sensori.
//Ver. 1.0 7/3/2010

#include <Servo.h>
#define SX 0   //pin 0 per sensore di SX
#define DX 1   //pin 1 per sensore di DX
#define LSX 9  //pin 9 per sensore di luce di Sinistra
#define LDX 8  //pin 8 per sensore di luce di Destra

Servo myservoDX;  // Creo oggetto per ruota di Destra
Servo myservoSX;  //Creo oggetto per ruota di Sinistra

long val_SX=0;
long val_DX=0;

long OTT_DX=0;   //variabile per registrare la luce di Destra
long OTT_SX=0;   // Variabile per registrare la luce di Sinistra
long delta=0;    //variabile usata per salvare la differenza di luce tra DX e SX
void setup() {
 Serial.begin(9600);
 myservoDX.attach(9);  // servo ruote al pin 9 PWM ruota di Destra
 myservoSX.attach(8);  // servo ruote al pin 8 PWM ruota di Sinistra
 
}

void loop () {
   val_SX=analogRead(SX);  //leggo i valori degli interruttori di sinistra
   val_DX=analogRead(DX);  //leggo i valori degli interruttori di destra
   OTT_DX=analogRead(LDX); //leggo i valori di luce di Destra
   OTT_SX=analogRead(LSX)-5; //leggo i valori di luce di Sinistra
   delta = OTT_SX-OTT_DX;    // eseguo la sottrazione tra i vaolri rilevati
                             // ottenendo valori positivi o negativi o ugali a 0
   
   if (val_SX <= 20)
       {
         myservoSX.write(91);   //Rover si ferma per blocco a sinistra
         myservoDX.write(92);  
         delay(1000);
         myservoDX.write(95);     // va in dietro ruotando sulla ruota Sinistra
         myservoSX.write(91);
         delay (2000);
       }
   else if (val_DX <= 20)
       {
         myservoSX.write(91);    //rover si ferma per blocco a Destra
         myservoDX.write(92);
         delay(1000);
         myservoDX.write(92);     // va in dietro ruotando sulla ruota Destra
         myservoSX.write(88);
         delay (2000);
       }
    else if (delta == 0)
    {
         myservoSX.write(91);    //rover si ferma per identica quantità di luce
         myservoDX.write(93);
         delay (1000);
    }
    else if (delta > 0 )          //rover riceve luce da Sinistra quindi gira a Sinistra
    {
         myservoSX.write(92);    //rover ruota a Sinistra
         myservoDX.write(88);
         delay (500);
    }
    else if (delta < 0 )          //rover riceve luce da Destra quindi gira a Destra
    {
         myservoSX.write(95);    //rover ruota a Destra
         myservoDX.write(91);
         delay (500);
    }
   
    else
       {
         myservoDX.write(88);     // va avanti
         myservoSX.write(95);
         delay(500);
       }      
   
   Serial.println(delta);   //Debug e print del valore differenza tra la luce
   myservoDX.write(91);     //
   myservoSX.write(92);     // Rover si ferma
   delay(10);  
}
Il mio BLOG : PALLONE SONDA
http://roborover.wordpress.com

scunucchiuz

grazie 1000 il codice e' utilissimo spero arrivino ppresto gli schemi

Go Up