Go Down

Topic: arduino e python (Read 3 times) previous topic - next topic

Stilgar

[cite]Tieni presente che con "s=serial.Serial(1)", cerchi i dati sulla seconda porta seriale.
quindi, su linux /dev/ttyS1; e da quel che mi risulta, su windows, com1 (non sono sicurissimo di windows perchè non ho modo di provare)
[cite]
Il problema con windows è che devi sapere il driver della seriale virtuale come viene mappato. (Nel mio caso sono COM8 e COM9, ma uso 2 Arduini2k9).
Potresti chiedere alla Classe Serial di dirti quali seriali vede.
In genere è l'ultima e compare e scompare quando colleghi arduino .... quindi è facile da capire quale sia.
Se non vuoi impelagarti con il codice, verifichi tramite l'ide quale porta COM compare e scompare quando colleghi Arduino :D
Ciao

.::Luka::.

amici avete pienamente ragione sull'utilizzo di linux al posto di windows e mi prometto che vi passero appena avro' risolto il problema di usare 3 monitor con 2 schede video sotto linux dal quale attualmente sto postando.

Ma torniamo a noi....

la porta è la com3 come risulta dall'idle di arduino
quando vado ad usare python dopo la linea finale di print s non mi stampa alcun valore eppure anche da pytho risulta la porta com3.
Mah!

>>> import serial
>>> s=serial.Serial(2)
>>> print s
Serial<id=0xaf0f90, open=True>(port='COM3', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0, dsrdtr=0)
>>> while(2):
     line=s.readline()
     print line

nathanvi

@Pelletta, ti prego, no flame. Sebbene anche io prediliga Linux anche windows è un ottimo sistema operativo. Con i propri pregi e difetti.

@Luka, tieni conto che la stessa considerazione vale per windows.Se tu scrivi s=serial.Serial(1) stai dicendo di aprire le comunicazioni con la COM1.
Il tuo IDE dialoga con questa?
Se si allora non comprendo altrimenti basta modificare il numerino.
Prova e facci sapere: il codice è esatto se riprendi il primo sketch indicato nella pagina che hai linkato.

.::Luka::.

Quote

Luka, tieni conto che la stessa considerazione vale per windows.Se tu scrivi s=serial.Serial(1) stai dicendo di aprire le comunicazioni con la COM1.
Il tuo IDE dialoga con questa?
Se si allora non comprendo altrimenti basta modificare il numerino.
Prova e facci sapere: il codice è esatto se riprendi il primo sketch indicato nella pagina che hai linkato.


ma infatti ho inserito il 2 in quanto mi riconosce la com3 come riporta la stampa in python:
Serial<id=0xaf0f90, open=True>(port='COM3'

o mi sto confondendo?

nathanvi

direi che va bene.
A quel ptuno il tuo codice python dovrebbe essere:

Code: [Select]

import serial
s=serial.Serial(2)
while(1):
    line=s.readline()
    print line


Una domanda importante: ovviamente dal IDE di Arduino leggi l'output dalla scheda correttamente vero???  ::)

.::Luka::.

bhè la porta è settata correttamente e gli sketch vengono tutti caricati.

Ma non dovrei cambiare anche while(1) in while(2)?

Federico

#21
Apr 08, 2010, 02:41 pm Last Edit: Apr 08, 2010, 02:42 pm by federico Reason: 1
No, while(1) e' un escamotage, che significa "fallo sempre". 1 in C significa True, e finche' vero e' vero il loop continuera'. Si esce dal loop con la chiamata break
F
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

nathanvi

No, non devi.
Questo perchè while(1) è un ciclo "infinito"
Ma quindi fammi capire e dimmi se corrisponde tutto alle azioni che fai:

  • Avvii l'IDE Arduino
  • Imposti la porta e la scheda
  • Carichi lo sketch correttamente
  • Dall'IDE apri il "Serial Monitor"
  • Sul serial monitor leggi correttamente l'output
  • A questo punto chiudi il serial monitor
  • Avvii il programmino in python



Tutto corretto?
Segui questi passaggi. Eventualmete cambia l'istruzione s=serial.Serial(2) in s=serial.Serial(3) e rilancialo.

Mi dici che errori ottieni esattamente?

.::Luka::.

il processo è quello che hai postato tu, attualmente non ho arduino sottomano appena posso smanetto.
L'errore è che python si blocca e non mi stampa nessun valore dalla seriale

t30

Quote
L'errore è che python si blocca e non mi stampa nessun valore dalla seriale


Strano che si blocchi senza dare nessuna indicazione di errore.
Ma da risorse del sistema di wondows con che device vedi la porta seriale? COM3?

Stilgar

#25
Apr 08, 2010, 05:31 pm Last Edit: Apr 08, 2010, 05:32 pm by Stilgar Reason: 1
Code: [Select]

s=serial.Serial(1)

Mi viene solo un dubbio ... sicuri che sia "dammi la prima" e non "dammi la seriale con indice 1".
Credevo fosse un'array di Serial, quindi la seriale di indice 1...
La prima dovrebbe avere l'indice a 0....
Non so se con Pyton le cose cambino ... non conosco il linguaggio.
Solo una curiosità.
Altra curiosità. La velocità è la stessa in entrambe le seriali, vero?
Non è che arduino lavori a 9600 e pyton a 120000?

nathanvi

Ciao Stilgar, effettivamente il motivo per il quale ho scritto a Luka di modificare l'indice è proprio perchè non so bene se vuole l'indice o il numero della COM.

Per quanto riguarda la velocità, se si omette python lavora a 9600 altrimenti bisogna specificarlo: questo è motivo per il quale ho chiesto a luka di psotare esattamente lo sketch che ha utilizzato.

.::Luka::.

#27
May 31, 2010, 10:59 pm Last Edit: May 31, 2010, 11:00 pm by ArdLuka Reason: 1
Arieccomi, tornato a casa in toscana torno a smanettare.

nel serial monitor mi restituisce questo:
serial monitor
[][][][][][][][][]<-quadrati

chiudo il serial monitor ed inserisco il codice in python 2.5 e non succede niente, o meglio il cursore è sotto le >>> senza fare niente

mah!

Federico

Hai verificato con attenzione che la velocita' di lettura sia identica a quella di scrittura, sulla seriale? F
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

.::Luka::.

sempre dal serial monitor?

Go Up