Pages: 1 [2]   Go Down
Author Topic: Servomotore smette di funzionare  (Read 1288 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il fatto è che non so più dove guardare: da quello che vedo io non c'è niente che possa fare interferenza :S non so veramente più cosa fare. Comunque oggi provo di nuovo a eliminare la parte del codice che fa interferenza e aggiungere mano a mano le funzioni smiley . Avevo pensato al WD come possibile soluzione ma se mi dici così, eviterò di usarlo
Per la seriale: la serial3 comunica usando un xbee serie 1, mentre la serial usa la normale USB leggiseriale legge i dati dall' xBee (s3). Avevo pensato alla possibilità che creassero problemi ma non ho pensato a togliere quella di debug. In ogni caso entrambe le modalità funzionano ( sempre, l unico problema è che il servo è immobile) smiley

Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa, ma dici di usare 2 seriali. Se usi un Arduino Diecimila con Atmega168, la seriale hardware è una sola, per cui l'altra dev'essere sicuramente di tipo software.
Ora, che tipo di seriale software usi? Se usi una vecchia versione, essa è bloccante in ricezione. Forse i problemi potrebbero nascere da questo.

Inoltre, l'Atmega168 ha 1024 byte di memoria. Potrebbe essere che hai esaurito la Ram libera? Hai fatto un controllo per verificare l'occupazione di memoria del tuo sketch?
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il problema è sulla scheda della macchina: una arduino MEGA2560 R3. Comunque sull'altra scheda uso una porta software fatta con softwareserial. A proposito dell errore della macchina: ho isolato il problema: sembra proprio essere causato dalla funzione map()ho cancellato tutto il codice e mantenendo ogni pezzo singolarmente l unico che sembra dare errore è quello di map nella parte di codice con spia==1
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il problema è sulla scheda della macchina: una arduino MEGA2560 R3.
Avevo capito l'inverso, che cioè sulla macchina ci fosse la Diecimila.

Quote
Comunque sull'altra scheda uso una porta software fatta con softwareserial. A proposito dell errore della macchina: ho isolato il problema: sembra proprio essere causato dalla funzione map()ho cancellato tutto il codice e mantenendo ogni pezzo singolarmente l unico che sembra dare errore è quello di map nella parte di codice con spia==1
Prova ad usare una variabile tampone invece che assegnare il risultato di map alla stessa variabile che passi alla funzione.
Potrebbe essere un problema di valori fuori range? Sei certo delle conversioni che effettui, che non ti portino ad avere situazioni in cui il servo non si muove perché il codice dice di non muoverlo?
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Effettivamente potrebbe essere un ottima idea quella di usare un altra variabile, e  per la variabile fuori range ho usato un if con la condizione che il numero preso in considerazione sia nel range corretto. Il problema maggiore rimane nel fatto che il servo si muove in base a un numero pre impostato e non in base a una variabile (uso servo.write(45) e non p.es servo.write(variabile) ). Ciò che mietete più in crisi è che la funzione che crea problemi non tocca minimamente il servo, e oltretutto se provo a muoversi manualmente non si sposta, indicando il fatto che è attivo smiley
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

lato "servo" non posso aiutarti, non ho mai usato dei servo e quindi non so come si pilotino con l'Arduino.
Sul resto ti consiglio di fare delle prove.
Anche mettere un po' di Serial.print di debug non è male, per stampare i vari punti del programma dove passa l'elaborazione ed i valori delle variabili per capire che strada prende il flusso del programma.
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buondì smiley
Ho lavorato ancora un po' al problema. Ho eliminato la funzione map che creava problemi semplificando un po' il codice e ho provato anche ad usare un altro servomotore. Ora il problema non sorge più passando da una modalità all altra ma salta fuori semplicemente dopo un po' di tempo, senza che eventi particolari avvengano nel frattempo. Da quel che avevo visto il flusso sembra seguire il corso giusto e non si blocca mai. Mi domando se non sia un qualche problema della scheda, magari è rotta :S

p.s arduino ha il multitasking?

Buona giornata,

Pro
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 497
Posts: 12299
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai dato un'occhiata al LeOS?
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

0
Offline Offline
Faraday Member
**
Karma: 30
Posts: 2905
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Da quello che ho letto, sembra un problema di memoria non correttamente gestita, tipo scrittura fuori indice di un array.
Controlla se l'hai fatta fuori dal vaso.  smiley-grin

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Offline Offline
Newbie
*
Karma: 1
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao, grazie a tutti per le risposte, leOS è alquanto interessante, penso che lo userò presto. In merito al vasino...la stavo facendo fuori alla grande, ora capisco anche che parte del codice causava il problema smiley se il pacchetto dati non aveva il delimitatore finale si attaccava a quello seguente e io finivo per mettere 8 dati in un array da 4 smiley ho fatto un po' di modifiche e per ora sembra andare tutto bene smiley grazie mille ancora a tutti!!!

Buona giornata,

Pro
Logged

Pages: 1 [2]   Go Up
Jump to: