Ho acquistato da poco un Arduino Leonardo ma stò avendo alcuni problemi con un particolare sketch...
Quando la collego al pc sembra (non sempre) che il sistema la riconosca, sia sotto windows che sotto linux, ma quando vado a caricarci sopra lo sketch, l'IDE di Arduino segnala Uploading... ma non finisce più e a volte si blocca completamente e non è possibile fare più ninete finchè non resetto la scheda.
A volte la scheda si scollega da sola cambiando porta e con questo sketch proprio non ne vuole sapere...
La scheda è molto nuova, forse sei anche uno dei primi ad averla acquistata. Io personalmente non so risponderti, non avendola né sapendo come funziona.
Ma questo comportamento te lo fa sia sotto Window che sotto Linux? Cioè il cambiare porta da sé?
azz, già le prime leonardo in giro? sicuro sia originale? (tranquillo, nessuno ti spara, ti diciamo che te la sei cercata di certo, però è per vederci chiaro senò è inutile)
comunque ad occhio si tratta più di un problema di comunicazione USB del firmware sulla scheda, magari per una rara incompatibilità?? riusciresti a provare su di un altro PC?
sisi originale, lo comprata da pochissimo e la stò testando in questi giorni...
il problema me lo fà sia sotto linux che sotto windows e solo con questo sketch...
la comunicazione seriale lo già testata con altri sketch è mi sembra abbastanza lineare..
Tu dici che ti salta la seriale, nel tuo sketch stai usando la seriale oltre ad un'altra libreria. Prova creando 2 sketch singoli, uno con la seriale e l'altro con l'altra libreria.
i lol'd, è lo stesso problema che ho io usando la seriale con un alto baudrate, amplificato
Using the serial monitor effectively: Since serial is going through only one processor on the Leonardo, the board is capable of filling your computer's serial buffer faster than the Uno or earlier boards. You may notice that if you send serial continually, for example like this:
the Serial Monitor in the IDE slows down considerably as it tries to keep up. If you encounter this, add a short delay to your loop so that the computer's serial buffer is not filled as fast. Even a millisecond delay will help:
void loop() {
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
delay(1);
}
ok
la seriale lo già usata e funge
ho provato la libreria singolarmente salvandomi la variabile letta dal ricevitore ir e mi carica lo sketch senza problemi
credo che il problema sia proprio nella libreria utilizzando la comunicaione seriale...
però lo stesso sketch testato su arduino uno funziona...
Frodo478:
credo che il problema sia proprio nella libreria utilizzando la comunicaione seriale...
però lo stesso sketch testato su arduino uno funziona...
Ma la UNO è differente. Andrebbe capito cosa c'è che non va usando entrambe le librerie.
La Leonardo ha un unico chip, l'Atmega32U4, che integra un convertitore seriale/USB per cui non necessita del chip accessorio delle UNO e delle MEGA. Avendo quindi la gestione USB in hardware può in teoria essere programmata per emulare una periferica USB.
pablos:
Grazie Leo ... ahhh bhe mi consolo allora. Non c'e' speranza di ottenere un mcu più veloce. =( l'importante è integrare
puoi portarla da solo a 20MHz, basta che cambi il quarzo e sul forum italiano se ne è parlato molto, astro se non sbaglio aveva rilasciato un firmware buono a riguardo, o forse era menniti? troppe guide di troppi utenti XD
comunque io sto aspettando la due da un anno giusto..
mi sa che è una leggenda come il mostro di lochness XD
comunque hai provato premendo il reset quando nell'ide ti dice le dimensioni effettive dello sketch?
se è un problema di seriale, se il firmware è fatto bene, allora dovresti risolvere
Inoltre il bootloader prende 4 kB, per cui dei 32 che ha il chip alla fine ne restano 28. In quei 4 kB ci sta un bootloader bello corposo, che ha anche un comportamento "curioso", come è stato osservato qualche settimana fa
superlol:
puoi portarla da solo a 20MHz, basta che cambi il quarzo e sul forum italiano se ne è parlato molto, astro se non sbaglio aveva rilasciato un firmware buono a riguardo, o forse era menniti? troppe guide di troppi utenti XD
Era un bootloader modificato da astrobeed. Ma non va bene per la Leonardo perché questa scheda usa un bootloader totalmente differente.
allora, se il problema è che riempi la seriale troppo in fretta, fammi questo favore, scarica il sorgente di arduino IDE e installa ant.
poi sostituisci il file arduino-1.0.1/app/src/processing/app/SerialMonitor.java
con quello allegato. col terminale vai alla cartella arduino-1.0.1/build/
e digita
ant run
a questo punto dovrebbe compilare e lanciare la versione di arduino modificata, che non dovrebbe dare problemi. Fammi sapere se funziona che faccio una patch request.
per chi se ne intende: in pratica ogni mesaggio ricevuto via seriale lancia una richiesta di update della textbox + aggioranmento dello scroll...
io invece bufferizzo tutto in una stringa, che viene sparata come sopra ad ogni richiesta di update grafico.
quindi anzichè avere una situazione 1000richieste:1update ci sarà una situazione 1richiesta:1update
è brutta perchè uso il lock su un oggetto Object che è dummy, in teoria sarebbe da usare una lista di String sincronizzata, ma in questo caso specifico potrebbe essere che l'ovehead della lista sia più grande dell'elemento contenuto, il che mi pare ancora più brutto.
@frodo:
Rileggendo le specifiche della scheda, è tornato fuori questo:
The reset is triggered when the Leonardo's virtual (CDC) serial / COM port is opened at 1200 baud and then closed. When this happens, the processor will reset, breaking the USB connection to the computer (meaning that the virtual serial / COM port will disappear)
Forse che viene aperta una connessione a bassa velocità e la scheda la interpreta come un reset?
Ciao
ho provato il tuo codice e anche sulla mia Leonardo non ne vuole sapere di caricare lo sketch. Se commento tutte le istruzioni Serial. il codice viene caricato ma mi blocca la scheda.
Secondo me potrebbe essere più una incompatibilità della libreria IRremote piuttosto che un problema di comunicazione.