[Robot Sensoriale] Arduino Uno + L293D + Ir Sharp

Salve, ragazzi allora sto cominciando a buttare giù il codice che mi dovrebbe far funzionare il mio robot a navigazione sensoriale...

Allora ho due motoriduttori contrallati tramite L293D, un servo che fa girare di 180 gradi il sensore infrarossi sharp e in fine ovviamente ho arduino UNO !!!

Il circuito dovrebbe essere corretto, in tal caso post tutti i collegamenti che ho effettuato:

L293D:

Pin 1-8-9-16 collegati tra loro e al polo positivo dell'alimentazione dell'integrato (4 pile da 1.5V) Pin 3-6 collegato il Motoriduttore SX Pin 11-14 collegato il Motoriduttore DX Pin 4-5-12-13 collegati tra loro e alla massa di arduino e dell'alimentazione dell'integrato Pin 2 Collegato al 4 Digital pin di Arduino Pin 7 Collegato al 3 Digital pin di Arduino Pin 10 Collegato al 6 Digital pin di Arduino Pin 2 Collegato al 4 Digital pin di Arduino Pin 15 Collegato al 5 Digital pin di Arduino

Sensore Sharp IR

1) Collegato alla massa (GND) di Arduino 2) Collegato al 5V di Arduino 3) Collegato all'ANALOG IN A5

Servomotore

1) Collegato alla Massa di Arduino (GND) 2) Collegato alla 5V di Arduino 3) Collegato al Pin 8 Digital

Questi sono tutti i collegamenti li ho postati per essere tranquillo che tutti i collegamenti che ho effettuato siano corretti...

Il problema mi viene essenzialmente sul codice il quale non mi fa funzionare i motori...o meglio ne fa funzionare solamente uno e a tratti.... Sto cercando solamente di far girare entrambi i motoriduttori per capire che l'integrato e motoriduttori funzioni mentre invece mi si muove a tratti il servomotore o.O

Premetto anche che il programma lo vorrei scrivere io, ma vedendo quelli in rete mi viene sempre un dubbio:

Il programma l'ho preso qua: http://www.robot-italy.net/roboforum/blog.php?b=60 utilizzando i stessi numeri di pin digitali di arduino ma senza nessun risultato....i motoriduttori non ne vogliono sapere....

ps: l'unico comando che AVVOLTE mi funziona è dando sul SERIALMONITOR il numero 8 (che per altro mi va avanti che indietro) il resto degli altri tasti non mi da nessun movimento...

Mi vene una domanda, potrebbe essere che mi hanno venduto un altro integrato? Sull'integrato c'è scritto l293d ma senza la scritta MALESYA che trovo sulle img di google....può essere?

malesya è perchè è stato prodotto in malesia!!!!!! [smiley=2vrolijk_08.gif] [smiley=2vrolijk_08.gif]

...l'integrato però va bene, il codice non riesco a vederlo perchè non sono registrato al forum del link che hai postato

ma i motoriduttori che corrente assorbono? :) riesci a far girare i motori senza arduino mettendo a 0 e vcc le entrate del ponte h?

Assorbono 0.6A....avete qualche esempio di codice da dove prendere spunto?

Ciao evilmonkey93

Se i motori assorbono 0,6A Ti consiglio di non usare il L293D perché quello al massimo puó dare 0,6A. Non so come hai misurato la corrente del motore ma presumo senza carico. Se hai un carico asorbirá di piú e si romperá il L293D.

CiaoUwe

Allora il progetto è cosi composto:

Ho acquistato questi due motoriduttori:

http://www.robot-italy.com/product_info.php?products_id=18

L’integrato L293D, arduino uno e il sensore sharp IR 2Y0A21.
Le correnti dovrebbero essere corrette.

Al momento sto scrivendo il programma per il robot, però non ne riesco a venire fuori…

Questa è una bozza, di come vorrei progettare il tutto:

#include <Servo.h>

Servo servoradar;

int i = 0;
int posizioneservoradar = 0;

int MOTO_SX[] = {4, 3};
int MOTO_DX[] = {6, 5};

int SharPin = A5;

void setup(){
    Serial.begin(9600);
     
for(i = 0; i < 2; i++){
    pinMode(MOTO_SX[i], OUTPUT);
     pinMode(MOTO_DX[i], OUTPUT);
     }
  
  servoradar.attach(8);
  posizioneservoradar = 90;
  servoradar.write(posizioneservoradar);
  
  delay(1000);
}

void loop(){

  float Lettura = analogRead(SharPin)*0.0032; // 
  float distanza = 20*pow(Lettura, -1.10);
  servoradar.write(0);  // Posiziono il radar a 90°, cioè al centro e guardo avanti
  
if(distanza < 12)
{       
digitalWrite(MOTO_SX[0], LOW);
digitalWrite(MOTO_SX[1], HIGH);
digitalWrite(MOTO_DX[0], LOW);
digitalWrite(MOTO_DX[1], HIGH);
}
else
{
digitalWrite(MOTO_SX[0], LOW);
digitalWrite(MOTO_SX[1], LOW);
digitalWrite(MOTO_DX[0], LOW);
digitalWrite(MOTO_DX[1], LOW);
}

  
  
}

In poche parole vorrei far questo:
Il servo motore lo faccio girare da 0 a 180° continuamente tipo “radar”, su cui sopra è collocato il sensore sharp…
Se il sensore mi rileva una distanza minore a 180 “if(distanza<12)” allora lo faccio girare se è superiore lo mando avanti…che ne pensate?

Sto facendo la stessa cosa, io utilizzo un SRF05 ( Ultrasuono ). Mi manca solamente di comprare la base + Ponte H ed altri accessori.

Il codice ovviamente ancora non l'hai fatto???