Go Down

Topic: Control Arduino from WIndows using Python (Read 3019 times) previous topic - next topic

simplesi

1st post attempt failed so this one is not as long winded

This code
Code: [Select]
from firmata import *
import time
a = Arduino("COM32", baudrate=57600) # Baudrate must match rate set in sketch
#time.sleep(3)
a.pin_mode(12, firmata.OUTPUT)

print "wait"
time.sleep(2)
print "Go"
b=1
while True:
    a.digital_write(12, firmata.HIGH)
    time.sleep(1)
    a.digital_write(12, firmata.LOW)
    time.sleep(1)
    print "count" , b
    b= b +1

#a.serial.close()


Stops after 5 counts - ctrl-c takes tens secs to hand back control and then it give this
Code: [Select]
Traceback (most recent call last):
  File "E:\Dropbox\Private\arduino\py\firmatatest.py", line 12, in <module>
    a.digital_write(12, firmata.HIGH)
  File "build\bdist.win32\egg\firmata\firmata.py", line 91, in digital_write
    self.serial.write(chr(self.digital_output_data[port_number] >> 7))
  File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 268, in write
    err = win32.GetOverlappedResult(self.hComPort, self._overlappedWrite, ctypes.byref(n), True)
KeyboardInterrupt


any ideas why and what to do about it or alternative working methods of switching pins off and on using Python from Windows?

regards
Simon

PaulS

Code: [Select]
a = Arduino("COM32"
32? You need to shitcan whatever application is abusing your COM ports. I never get a number above 8 when connecting my Arduinos.

simplesi

"Ditch" might be the nice term to use over this side of the pond :)

i don't think that the high com port num is the problem as the Firmate_Test.exe prog works just fine (unless Python on Windows can't handle it???)

(I'm running an 8 Yr old XP machine here that has had more USB kit plugged into it over the years that I've had hot dinners)

I did reset a com port to a lower number a few years ago  so might try doing it again.

regards
Simon

simplesi

made no diff - switched it down to com2 - still stopped after 5 iterations :(

Simon

simplesi

this is getting wierder !
I'd left the python prog running since last post and just noticed my LED on in 12 going off and on - switched to my Python console and the count is now up to 43!

Simon

robtillaart


So consider solved, but not understood?
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

simplesi

Not at all :)
Over an hour the count should have got to 1800 :)

Simon

simplesi

#7
Nov 18, 2012, 10:03 pm Last Edit: Nov 18, 2012, 10:10 pm by simplesi Reason: 1
Finally after many days of googling and trying I've manged to get a continous blink and read an analog input program running :)
Code: [Select]
from pyfirmata import Arduino, util
import time
a = Arduino("COM2", baudrate=57600) # Baudrate must match rate set in sketch

print "wait"
time.sleep(2)
print "Go"
it = util.Iterator(a)
it.start()
a.analog[5].enable_reporting()
while True:
    a.digital[12].write(1)
    time.sleep(1)
    a.digital[12].write(0)
    time.sleep(1)
    print "analog 5" , a.analog[5].read()


I downloaded pyfirmata from here
https://bitbucket.org/tino/pyfirmata
and added to my python 2.7 install by cd ing to my download location
Code: [Select]
E:\downloads\tino-pyfirmata-4bed4280dd31\tino-pyfirmata-4bed4280dd31
and then typing
Code: [Select]
c:\Python27\python.exe setup.py install

regards
Simon

robtillaart

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy