mercoledì 9 febbraio 2011

Un bug che non riesco a risolvere...

Arduinome funziona a meraviglia, a parte il fatto che non ha ancora una cornice appropriata e  un fastidioso bug che non riesco a risolvere. Dopo il video spiegherò meglio i dettagli:



A volte, quando premo un bottone, questo rimane acceso e il software lo interpreta come se lo stessi ancora premendo e fino a quando non lo premo nuovamente, questa situazione non si sblocca.
Premetto che qualsiasi utilizzo io ne stia facendo, il blocco non tarda ad arrivare. Nel caso stia utilizzando il programma On/Off di serialpyio (vedi post precedenti) non mi da nessun fastidio, ma se si blocca mentre sto registrando un pezzo, diventa più fastidioso.
Non riesco a capire in quali cause risieda questo problema, l'unica cosa che credo di poter escludere (spero!) è la componente hardware, in quanto i tasti funzionano bene e soprattutto si verifica in maniera casuale, in qualsiasi posizione della matrice.

L'unico accorgimento che ha diminuito il bug (o almeno così mi è sembrato) è stato l'aumento del baudrate, di default 57600, a 115200. In questo modo arduinome sarà più reattivo e quindi andrà a diminuire anche la latenza. In ogni caso è conveniente aumentare il baudrate e per farlo sono necessari solo questi brevi passaggi:

Aumentare il baudrate di arduinome
Per farlo andremo a modificare sia il firmware (3.2 l'attuale) di arduinome, che il programma al quale si interfaccia, ovvero serialpyio.

Firmware
  1. Aprire il firmware 3.2 attraverso la software di arduino
  2. Posizionarsi sulla riga 488 e cambiare il numero contenuto tra parentesi dopo Serial.begin, da 57600 a 115200.
  3. Verify e Upload
Serial-pyIO
  1. Posizionarsi nella cartella principale di serialpyio e poi src\spyio
  2. Per sicurezza creiamo una copia di backup del file router.py, che andremo ad editare
  3. Aprire router.py. In mancanza di python, per comodità consiglio l'utilizzo di Notepad++, che numera le righe, altrimenti qualsiasi editor di testo andrà benissimo.  
  4. Posizionarsi sulla riga 1194 e modificare il numero finale di questa stringa da 57600 a 115200
                   spyio.gui.dialog.devicedialog.AddSerialDeviceDialog(self, False, 57600)
             

Dopo queste due modifiche, quando interfacceremo il nostro arduinome a serial-pyIO avrà un baurate più elevato.

Baudrate

8 commenti:

  1. Hai fatto le due cose che avrei fatto anche io, aumentare il rate e controllare l' hardware. Non ho altre idee al momento e mi dispiace perchè dopo ore e ore di lavoro queste cose rompono le scatole parecchio.

    Spero tu riesca a risolvere. Io sto facendo la board proprio in questo momento. Speriamo bene :D

    RispondiElimina
  2. Credo che il problema sia causato dalla comunicazione tra arduino e serial-pyio. Probabilmente sarò costretto a comprarmi il 2009, ma prima preferisco aspettare, visto che il progetto non potrà andare avanti se si basa su un hardware fuori produzione! Tu per caso hai conoscenze di programmazione per arduino? volevo fare un programma che alla pressione di un tasto mi accendeva il led corrispondente, per escludere definitivamente la componente Hardware dal problema. Solo che non saprei da dove cominciare!

    Se hai anche tu un UNO, possiamo provare a risolvere questo problema nel caso si presenti anche a te!

    RispondiElimina
  3. Io ho sia l' UNO sia un Duemilanove (dove ho flashato i driver e il firmware).
    Ora sto terminando la parte della shield, con cui sto avendo un po di difficoltà, poi attacco il tutto e ti faccio sapere.

    Per il programma, io sono in grado di fare un semplice programma che dato un ingresso mi restituisce un uscita (anche in seriale volendo) però non saprei come interfacciarmi al firmware e poi all' hardware. credo comunque che non sia un problema hardware in quanto dovrebbe farlo sempre e non OGNI TANTO ma soprattutto nello stesso punto e non random.

    Sto cominciando anche a studiarmi il firmware se ho novità ti faccio sapere.

    RispondiElimina
  4. Che brutto, non riesco a farlo andare. Sicuramente ho sbagliato qualcosa "lato hardware" ed ora mi tocca rifare tutto. Vabbè, pazienza.

    RispondiElimina
  5. Mi dispiace, posso capirti perfettamente, le prime due volte che ho collegato arduino non si accendeva niente e la terza non andavano i pulsanti!

    Ma in che modo non funziona? Se mi dici il problema, magari riusciamo a risolverlo in due!

    RispondiElimina
  6. In pratica i pulsanti non funzionano tutti. Ho un pad che sembra anche andare ma gli altri o non vanno oppure non corrispondono alle luci che ai accendono, quelle poche che ai accendono.
    Ho provato con serialmonome in modalità MIDI con il Synth di Windows ma fa suoni strani....

    La sequenza di boot la fa a caso. Sicuramente devo controllare i cavi che collegano i pad allo shield. Oggi pomeriggio controllo il tutto.

    RispondiElimina
  7. Per i bottoni, oltre a controllare i cavi,la rete di resistenze da 100 Kohm l'hai tagliata dalla parte giusta? Nella mia completa ignoranza io non avevo tagliato solo il pin finale, ma tutta la fine della resistenza... Per quanto riguarda i collegamenti con la matrice di led io ho risolto tutto con questo link "http://store.curiousinventor.com/blog/arduinome-case-now-available-build-log/"

    RispondiElimina
  8. Per il network di resistenze ne ho trovato una da 8+1 quindi non ho nemmeno tagliato.

    Per i cavi devo controllare gli schemi perchè ho paura di aver mescolato gli schemi :)

    RispondiElimina