Pages: [1]   Go Down
Author Topic: Problema con uno sketch Arduino Uno  (Read 1013 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti!
So da subito che il mio problema sarà facilmente risolvibile da chi ha esperienza nella programmazione arduino, ma io non riesco a far funziobare un robot evita_ostacoli a ultrasuoni composto da:
-3 sensori a ultrasuoni HC-SR04(quello DX è decentrato di 9 cm);
-2 motori convenzionali(quelli con fili positivo e quello negativo, niente GND)
-Scheda Arduino UNO
-batteria da 9 volt collegata a GND e Vin
-breadboard
-molti cavi di connessione
Il codice che ho adoperato è questo:
Code:
int trigDX = 11; 
int echoDX = 12; 
int trigSX = 10;
int echoSX = 9;
int trigAX = 8;
int echoAX = 7;
int motoreSX = 13;
int motoreDX = 6;
int terra = 5;

void setup() { 
pinMode( terra, OUTPUT);
pinMode( motoreSX, OUTPUT );
pinMode( motoreDX, OUTPUT );
pinMode( trigDX, OUTPUT ); 
pinMode( echoDX, INPUT );
pinMode( trigSX, OUTPUT ); 
pinMode( echoSX, INPUT );
pinMode( trigAX, OUTPUT ); 
pinMode( echoAX, INPUT );

void loop() { 
digitalWrite( terra, HIGH );
digitalWrite( motoreSX, HIGH );
digitalWrite( motoreDX, HIGH );
digitalWrite( trigDX, LOW );   
digitalWrite( trigDX, HIGH ); 
pinMode( trigSX, LOW ); 
pinMode( trigSX, HIGH );
pinMode( trigAX, LOW ); 
pinMode( trigAX, HIGH );
delayMicroseconds( 10 ); 
digitalWrite( trigDX, LOW );
digitalWrite( trigSX, LOW );
digitalWrite( trigAX, LOW );
long durationDX = pulseIn( echoDX, HIGH );
long durationSX = pulseIn( echoSX, HIGH );
long durationAX = pulseIn( echoAX, HIGH );
long rDX = 0.034 * durationDX / 2;
long rSX = 0.034 * durationSX / 2;
long rAX = 0.034 * durationAX / 2;   
if ( rDX < 14 ) {
digitalWrite( motoreSX, LOW );
delayMicroseconds( 500 );
digitalWrite( motoreSX, HIGH );
}
if ( rSX < 5 ) {
digitalWrite( motoreDX, LOW);
delayMicroseconds( 500 );
digitalWrite( motoreDX, HIGH);
}
if ( rAX < 7 ) {
 if ( rSX < rDX ) {
 digitalWrite( motoreSX, LOW);
 delayMicroseconds ( 700 );
 digitalWrite(motoreSX, HIGH);
}
 else {
digitalWrite( motoreDX, LOW );
delayMicroseconds ( 700 );
digitalWrite( motoreDX, HIGH );
 }
}
delay( 1500 ); 
}
se volete avere chiaro il funzionamento dei sensori andate qui: http://barcadero.wordpress.com/2012/02/14/sensore-a-ultrasuoni-hc-sr04-e-arduino/
Ah, è vero, il problema: non parte nulla!!!!
misteriosamente i motori non partono (e sospetto nemmeno i sensori!).
grazie in anticipo a chi vorrà aiutarmi !
ALBERTO01
Logged

Tuscany
Offline Offline
Edison Member
*
Karma: 66
Posts: 1948
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A parte il fatto che con una batteria a 9V ( di ridotta capacita' ) non vai molto lontano... dubito che ce la faccia ad erogare la corrente necessaria per tutto quello che hai menzionato..

Prima di vedere cosa fa' lo sketch, mi togli una curiosita' ...
Come li hai collegati i motori ad arduino ?

Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

positivo a GND
negativo lo vedi nel codice
grazie!
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

positivo a GND
negativo lo vedi nel codice
grazie!

puff!!  smiley-fat (nel senso che è scoppiato il pin di Arduino)
Tutorial --> http://glgprograms.altervista.org/index.php?p=micro/arduino-8

Comunque, procedi con ordine.
Stacca tutto e prova componente per componente con gli sketch di prova che trovi nei vari tuttorial.
Così sarai sicuro di cosa funziona e cosa no.
Poi ti consiglio di fare un po' di debug tramite il serial monitor verificando lo stato del programma nei punti critici, come la stampa dei valore dei sensori, ecc. 
« Last Edit: February 11, 2013, 11:09:04 am by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Tuscany
Offline Offline
Edison Member
*
Karma: 66
Posts: 1948
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
puff!!  smiley-fat (nel senso che è scoppiato il pin di Arduino)

E' il caso che codesti motorini li scolleghi e al loro posto mettici dei LED ( con una resistenza in serie ), cosi' intanto vedi se lo sketch funziona ( e se le porte sono ancora "vive" )

Non puoi collegare direttamente i motori sui pin di arduino, neanche se sono dei motorini da bambole.
hai mica dei dati su quei motori ?
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

a PaoloP
Ti è scoppiato il pin????
ora comunque controllo i dati e lo sketch!
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah, dimenticavo!
nel codice trovate "terra" perche per fare il progetto ho occupato tutti i 3 PIN GND, ma se utilizzavo il 3 la scheda non si "accendeva"(non riuscivo a caricare il programma e non si alimentava neanche!)
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho torvato i dati del motore: http://it.opitec.com/opitec-web/articleNumber/224057/kbmo/p/2 non sono sicuro che sia questo, cmq, vai nella sezione
in cui è e trovi tutti i motori(non cambiano di tanto!)
A paoloP: oddio, io non ce li ho tutti quei componenti! inoltre per me è scritto come se fosse in arabo! smiley-fat smiley-fat smiley-sad smiley-sad smiley-sad
« Last Edit: February 12, 2013, 11:21:07 am by alberto01 » Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se hai collegato direttamente il motorino con i pin di Arduino, visto che l'assorbimento del modello inferiore è di 70mA probabilmente hai bruciato il pin di Arduino che può erogare massimo 40mA.

Puoi verificarlo facilmente caricando su Arduino lo sketch del blink, modificando il numero del pin con quello a cui era collegato il motore e vedere se lampeggia collegandoci un led con in serie una resistenza da 470 ohm.
Schemi di collegamento --> http://arduino.cc/forum/index.php/topic,146152.0.html

Se non dovesse funzionare ed hai la versione di Arduino con il Chip estraibile puoi sostituire il chip con uno nuovo.
Se comunque dovesse funzionare, ti consiglio di acquistare una scheda per il controllo dei motori come questa --> http://arduino.cc/en/Main/ArduinoMotorShieldR3
a cui puoi collegare anche i sensori, oppure se non vuoi comprare la scheda, prendi il singolo integrato per pilotare i motori: L293D (max 600mA) --> http://glgprograms.altervista.org/index.php?p=micro/arduino-8
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho controllato tutti i PIN, non ce ne sono di bruciati o rotti...
cmq, potrebbe non essere quello il modello, guarda nella sezione motori e motoriduttori del sito...
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Comunque, quella scheda fa "da scudo" all scheda Arduino dall'assorbimento di superiore alla norma del motore?? smiley-confuse smiley-eek-blue
o deve essere programmata anche quella???  smiley-eek smiley-eek
mi puoi trovare un esempio o un tutorial????? smiley-wink
GRAZIE ANCORA!
« Last Edit: February 13, 2013, 12:37:18 pm by alberto01 » Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

--> http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial/?ALLSTEPS

Si, serve per poter collegare motori Dc o 1 motore stepper.
Non deve essere programmata, ma si programma Arduino per agire sui motori.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho notato che sotto ha quelle cose di connessione, come-si-chiamano????, quelle spinette di ferro, ma ce le ha integrate ho devo mettercele io??Perchè ho visto che occupano tutti i pin della scheda, ed io devo collegarci i sensori!
Cmq, grz(tt abbrvt!)
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La scheda dovrebbe avere gli strip femmina lunghi già montati.
E' normale che occupino tutti i pin, anzi è preferibile; infatti sono "passanti".
Vuol dire che è possibile collegare i jumper ai pin della seconda scheda che è collegata ai pin sottostanti.
In questo modo puoi collegare più schede sovrapposte e tutte potranno accedere ai pin dell'Arduino.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 1
Posts: 32
Un robot non può recare danno agli esseri Umani, nè può permettere che, a causa del suo mancato intervento, gli esseri Umani ricevano danno
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ahhh, grazie! Ho capito!
credo che per un po' non avrò bisogno di aituo, oggi ordino la scheda e se ho bisogno di aiuto lo scrivo in un nuovo topic
grazie!!!
Logged

Pages: [1]   Go Up
Jump to: