Pages: 1 [2] 3   Go Down
Author Topic: arduino e python  (Read 3271 times)
0 Members and 1 Guest are viewing this topic.
Urbana Padova
Offline Offline
Full Member
***
Karma: 0
Posts: 196
a piccoli passi.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

[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 smiley-grin
Ciao
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Torino - Linux
Offline Offline
God Member
*****
Karma: 0
Posts: 522
Pigs on the wings!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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.
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Torino - Linux
Offline Offline
God Member
*****
Karma: 0
Posts: 522
Pigs on the wings!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
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???  :smiley
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: April 08, 2010, 07:42:50 am by federico » Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Torino - Linux
Offline Offline
God Member
*****
Karma: 0
Posts: 522
Pigs on the wings!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Castelletto Sopra Ticino, IT
Offline Offline
Full Member
***
Karma: 0
Posts: 169
Yes we can!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Urbana Padova
Offline Offline
Full Member
***
Karma: 0
Posts: 196
a piccoli passi.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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?
« Last Edit: April 08, 2010, 10:32:32 am by Stilgar » Logged

Torino - Linux
Offline Offline
God Member
*****
Karma: 0
Posts: 522
Pigs on the wings!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
« Last Edit: May 31, 2010, 04:00:11 pm by ArdLuka » Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai verificato con attenzione che la velocita' di lettura sia identica a quella di scrittura, sulla seriale? F
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

0
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sempre dal serial monitor?
Logged

Pages: 1 [2] 3   Go Up
Jump to: