Rover rianimato

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

Si è uno dei punti dolenti della mia sperimentazione.
Non mi rimane mai un costrutto completo, viene digerito dai nuovi.

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

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'

Bello :slight_smile: Tienici aggiornati! :smiley:
Ma usi dei servo? Ci vorrebbe anche un po' di descrizione del funzionamento, motori, parti usate e codice!
F

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...

Io ho qui 4 s3003, ma sono 0-180gradi, come fai a farlo andare avanti? :smiley:

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°.

guarda questo tutorial, ma devi essere ultrapreciso...

Valutero' l'operazione, in realta' li ho per iniziare a fare prove di un braccio meccanico, speravo che la modifica fosse reversibile :wink:

Tienili da conto, forse ne ho io qualcuno o qualche ingranaggio di troppo

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

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.

quanti led usi per seguire la luce?

non uso nessun led, ma delle fotoresistenze che misurano la quantità di luce presente nell'ambiente.

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);
}

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

ciao a tutti,
scusate se mi intrometto, sono nuovo del forum e di arduino :cry:

Ho un piccolo problema,
sto cercando di ricevere il segnale da due fotoresistenze e mandarlo a Max Msp tramite maxuino.
smanettando un pò, sono riuscito a leggere il segnale in entrata da un sensore attraverso uno sketch disponibile su Arduino, standard firmata.
Aggiunta la seconda fotoresistenza però, non arrivava nessun altro segnale.
come posso scrivere uno sketch che legga due o più valori analogici in entrata?
grazie mille in anticipo :slight_smile: