Il kit
Il sensore ultrasonico
Connessioni
GND
3v
Pin 7
Pin 8
Pin, setup
//---Definiamo i pin dei motori-----------------int motorSX = 5;
int motorDX = 6;
//---Definiamo il pin che invia e quello che riceve----int invio = 7;
int ricevo = 8;
void setup(){
//---Definiamo le uscite dei motori--------------------------pinMode( motorSX, OUTPUT );
pinMode( motorDX, OUTPUT );
//---Gli diciamo che uno è un uscita e l'altro l'ingresso-pinMode( invio, OUTPUT );
pinMode( ricevo, INPUT );
}
Codice ostacolo
//------funzione che dice la distanza degli oggetti---------long ostacolo(){
//---all'inizio non invio niente--------------------------------digitalWrite( invio, LOW );
//---poi mando un urletto-di 10 microsecondi-----------digitalWrite( invio, HIGH );
delayMicroseconds( 10 );
digitalWrite( invio, LOW );
//---questa comoda funzione ci dice quanto passa prima dell'eco-long duration = pulseIn( ricevo, HIGH);
//---moltiplico per la velocità del suono--------long r = 0.034 * duration / 2;
//---dico alla funzione cosa deve restituire--------Serial.begin(9600);
Serial.println(r);
return r;
}
Codice funzioni
//----funzione va avanti con la velocita che vogliamo----void avantivel(int v){
//---scriviamo la velocità sui due motori---------analogWrite(motorSX,v);
analogWrite(motorDX,v);
}
//------funzione va a sinistra con la velocita che vogliamo-----void sinistravel(int v){
//---scriviamo la velocità solo sul destro-----------analogWrite(motorSX,0);
analogWrite(motorDX,v);
}
//------funzione che ferma il robottino------------void Stop(){
analogWrite(motorSX,0);
analogWrite(motorDX,0);
}
//------funzione va a destra con la velocita che vogliamo--void destravel(int v){
//---scriviamo la velocità solo sul sinistro---analogWrite(motorSX,v);
analogWrite(motorDX,0);
}
Loop
void loop(){
int v;
//---Vediamo quanto è distante l'ostacolo-----------------------int o = ostacolo();
//---se è troppo vicino giro a destra---------------------------if(o<40){
v=80;
destravel(v);
delay(500);
} //---altrimenti vado avanti-------------------------------------else{
//---più l'ostacolo è lontano, più vado veloce------------------v = o *3;
if(v>128) v = 128; //---ma mai troppo forte-if(v<50) v=50; //--- ne troppo piano----//---partenza----------------------avantivel(v);
}}
Scarica

istruzioniRobotArduinoUltrasonico