用Python控制Arduino實現Blink
第一種方法:用pyFirmata實現
1.安裝pyFirmata包
執行命令:pip install pyFirmata
在python2.7或python3.X下都可以執行。
pyFirmata包實現了python對Arduino進行控制的功能,它與Arduino之間通訊遵循的是Firmata協議
如果pyton下執行from pyfirmata import Arduino不報錯,證明安裝成功
2.在Arduino IDE中為Arduino寫入程式Standard Firmata.
3. 在Python IDEL中編寫下面的程式
from pyfirmata import Arduino, util
import time
board = Arduino('COM8') #Arduino所在串列埠是COM8,這是windows下的表示
while 1:
board.digital[13].write(0) #向埠13寫入0
time.sleep(1)
board.digital[13].write(1) #向埠13寫入1
time.sleep(1)
執行程式,可見13引腳led閃爍。
pyFirmata程式的說明文件 https://github.com/tino/pyFirmata
第二種方法:用pymata_aio來實現
pymata_aio功能更強,它可以實現對舵機,超聲模組的控制
1,安裝pymata_aio
pymata_aio在python3上能順利執行,在python2上不能順利安裝
執行命令: pip3 install pymata_aio
安裝完成後,在python命令列下執行from pymata_aio.pymata3 import PyMata3,如果不報錯,說明安裝成功。
2,上傳程式firmataplus.ino到Arduino
3, 串列埠連線電腦和Arduno
4, 例項程式
from pymata_aio.pymata3 import PyMata3
from pymata_aio.constants import Constants
BOARD_LED = 13
board = PyMata3(com_port="/dev/ttyACM0") #連線串列埠
def setup():
board.set_pin_mode(BOARD_LED, Constants.OUTPUT) #宣告引腳為輸出
#board.enable_analog_reporting(0)
board.set_pin_mode(0,Constants.ANALOG) #設定A0, 讀模擬訊號
def loop():
try:
print("LED On")
board.digital_write(BOARD_LED, 1) #寫為數字1
board.sleep(1.0) #等待1秒
print("LED Off")
board.digital_write(BOARD_LED, 0) #寫為數字0
board.sleep(1.0)
print( board.analog_read(0) ) #讀A0,結果為0-1023的一個數
except:
board.shutdown() #關閉連線, 很有必要
if __name__ == "__main__":
setup()
while True:
loop()
5, pymata_aio網址: