如何用python程式設計和控制arduino

不幸的是,不可能直接用Python程式設計Arduino,但是您可以使用Python程式控制它。下面是方法。...

Python風靡了編碼界。隨著這門新語言的興起,DIY電子領域也蓬勃發展。來自Arduino和Raspberry Pi等公司的開發板和單板計算機改變了人們生產家用電子產品的方式。如果你能用Python編程一個Arduino,那不是很棒嗎?

control-arduino-python

沒有比把兩件很酷的事情結合起來更好的感覺了。遺憾的是,用Python直接編寫一個Arduino是不可能的,因為董事會沒有選擇在板上解釋語言。但是,可以使用Python程序直接控制USB。

本文將向您展示如何使用Python程序從命令行設置一個Arduino UNO(儘管任何與Arduino兼容的板都可以在這裡工作)。本教程是為Windows10編寫的,但也適用於Mac和Linux。你甚至可以使用這個工作流程直接從樹莓皮控制一個Arduino,獲得最終的雙重DIY體驗。

為python設置arduino

在今天的項目中,我們將使用Arduino Uno以及Python的pyFirmata接口。您幾乎可以使用任何與Arduino兼容的板來實現這一點,儘管在編寫本文時,pyFfirmata接口僅支持Arduino Uno、Mega、Due和Nano。如果您已經是Python大師,您可以將自己的board支持添加到pyFirmata——如果您這樣做,請確保更新他們的GitHub!

program and control arduino with python

如果您還沒有安裝Arduino IDE。如果你對微控制器世界是完全陌生的,我們的初學者指南Arduino將幫助你把一切都做好。

連接Arduino板,打開IDE。確保在“工具”菜單中選擇了正確的板和端口。加載StandardFirmata示例草圖並將其上載到電路板。這將允許您直接控制Arduino,只要它通過USB連接到計算機。如果草圖上傳到你的董事會沒有任何錯誤,你準備好繼續。

python和命令行控件

我們將使用Python3.4來控制Arduino,因為您將要安裝的模塊將此指定為最新的兼容版本。在此之前的任何版本都應該可以正常工作,並且已報告更高版本可以工作。您可以從Python軟件基金會網站下載python3.4forwindows10。如果您想運行多個版本的Python,我們的Python虛擬環境指南將能夠幫助您。

一旦安裝了Python,我們就要將它添加到系統的PATH變量中。這將允許我們直接從命令行運行Python代碼,而不需要位於安裝它的目錄中。您可以通過打開控制面板,搜索環境並單擊編輯系統環境變量來完成此操作。在窗口底部選擇環境變量。這將打開此窗口:

program and control arduino with python

如果已經在列表中看到路徑,請單擊編輯,然後添加Python和Python/Scripts目錄。如果沒有路徑變量,請單擊“新建”並添加它。請注意,Python是直接安裝到C:\中的。如果你在別處安裝了它,你需要修改它來反映這一點。單擊OK返回windows鏈,您幾乎可以用Python控制Arduino了!

神奇的潤滑脂

你需要最後一個謎題,讓Python和我們的Arduino好好交談。這是Python接口pyFirmata的形式。這個由Tino de Bruijn創建的接口可以從github下載,不過您可以通過鍵入以下命令行直接安裝它:

pip install pyfirmata

一切都很好,它應該安裝並如下所示:

program and control arduino with python

如果失敗,請檢查將Python添加到環境變量部分,並確保為Python目錄指定了正確的路徑。

讓它發生

現在一切都設置好了,您可以為您的Arduino創建一個Python程序來測試它。打開您選擇的IDE。今天我們將使用Eclipse,但是您可以輕鬆地使用任何文本編輯器,甚至雲中的IDE。

創建新腳本,並將其另存為閃爍.py. 打破傳統的標準閃爍LED程序,您將創建一個程序,提示用戶在執行LED之前,他們希望LED閃爍的次數。這是一個簡短的程序,如果你想直接下載到這裡,你可以下載,但讓我們把它分解。

首先,您需要從pyFirmata模塊以及標準Python時間模塊導入所需的內容。

from pyfirmata import Arduino, utilimport time

現在你要建立Arduino董事會。本文假設您使用的是Arduino Uno板,但支持其他幾個Arduino板。有關板上支持的詳細信息,請參閱pyFirmata github。

檢查您在ArduinoIDE中使用的COM端口,並將其作為變量板輸入到代碼中。

board = Arduino("COM3")

現在您將設置用戶提示。熟悉Python的人將在這裡識別出所有的東西。您使用輸入函數將問題打印到屏幕,並將答案存儲為變量。一旦用戶提供了一個數字,程序就會報告LED閃爍的次數。

loopTimes = input('How many times would you like the LED to blink: ')print("Blinking " + loopTimes + " times.")

要使LED閃爍適當次數,請使用for循環。如果您是Python的新手,請注意縮進,與其他語言不同,空格是語法的一部分。注意,引腳13是ArduinoUno Uno的車載LED,如果您的板不同,您需要修改此指示燈。

for x in range(int(loopTimes)): board.digital[13].write(1) time.sleep(0.2) board.digital[13].write(0) time.sleep(0.2)

您將在這裡將loopTimes變量轉換為整數,因為來自用戶的輸入將自動存儲為字符串。在這個簡單的演示中,我們假設用戶將輸入一個數值。任何其他條目(如“8”)都將拋出錯誤。

保存腳本,並打開命令提示符。

閃爍的燈光和其他啟示

一切都準備就緒,您只需導航到腳本所在的位置並運行它。為此,請鍵入cd[path to the script's directory],然後鍵入python閃爍.py.

一切正常,您的程序將啟動時略有延遲Arduino初始化,提示您輸入一個數字,然後使用板載LED閃爍多次。

程序輸出應如下所示:

program and control arduino with python

在您選擇的閃爍次數後,只要按回車鍵,Arduino就會執行您的命令。

program and control arduino with python

小開端

這個項目是Python和Arduino板之間通信的一個基本開始。這種方法與通常將腳本上傳到Arduino本身的工作流程非常不同,但是它為使用平臺打開了一種全新的方式,特別是如果您喜歡Python編程語言的話。

如果你在家裡使用Linux服務器,這種與Arduino板通信的方法可以將服務器擴展到一個成熟的DIY家庭自動化系統中。通過將控制微控制器的Python腳本與DIY自動化電路相結合,您的NAS存儲盒可以承擔一組全新的有用功能。

為了讓它成為最終的DIY體驗,為什麼不建造你自己的NAS盒,並用它來控制你的設備呢?想象一下在你的Plex服務器上按play並讓燈自動關閉是多麼酷!

你已經在用Python控制Arduino了嗎?有沒有我們還不知道的解決辦法?請在下面的評論部分告訴我們!

  • 發表於 2021-03-11 16:20
  • 閱讀 ( 74 )
  • 分類:程式設計

你可能感興趣的文章

阿杜伊諾(arduino)和樹莓皮(raspberry pi)的區別

關鍵區別–arduino vs raspberry pi Arduino和Raspberry Pi的主要區別在於Arduino是一個微控制器開發板,而Raspberry Pi是基於Linux作業系統的通用計算機。 選擇Arduino或Raspberry Pi取決於要開發的專案。本文討論了最常見的Arduino Uno和Raspberry Pi...

  • 發佈於 2020-10-11 03:02
  • 閲讀 ( 50 )

perl公司(perl)和python(python)的區別

關鍵區別–perl與python 計算機程式為計算機執行任務提供指令。一組指令被稱為計算機程式。計算機程式是用程式語言開發的。高階語言程式設計師可以理解,但計算機卻不能理解。因此,這些程式被轉換成機器可理解的格式...

  • 發佈於 2020-10-19 17:38
  • 閲讀 ( 41 )

這些diy聖誕電子產品專案的成本都不到5美元

...更進一步,使用RGB LED條代替商店購買的神仙燈,並使用Arduino板來控制它們。 ...

  • 發佈於 2021-03-12 02:23
  • 閲讀 ( 75 )

6種將arduino連線到android的簡單方法

Arduino板和類似的微控制器使創造力比以往任何時候都更容易獲得。無論你是控制LED燈帶,自動化你的家,甚至保護你的財產,這些小奇蹟是大多數DIY電子產品的核心。 ...

  • 發佈於 2021-03-12 23:13
  • 閲讀 ( 60 )

如何用arduino遙控你的家,5個diy專案

...何工作的基礎知識,並給出一些任何人都能做的簡單DIY Arduino專案的例子。 ...

  • 發佈於 2021-03-13 11:21
  • 閲讀 ( 56 )

9個最好的pi程式設計資源,把你的樹莓pi使用

...流,偶爾會有一個Raspberry Pi關注點,比如這篇文章介紹了Arduino、Raspberry Pi、NodeMcu和MQTT。 ...

  • 發佈於 2021-03-14 03:57
  • 閲讀 ( 52 )

10個涉及程式設計或指令碼的有益愛好

... Arduino是電子、程式設計和休閒的完美結合。它是一個開源的微控制器(即一個微型的單電路計算機),具有各種元件和可程式設計邏輯。把它想象成**使用的樂高,使用實...

  • 發佈於 2021-03-14 18:18
  • 閲讀 ( 69 )

arduino vs raspberry pi:哪臺是你的迷你電腦?

Arduino和Raspberry Pi看起來非常相似——它們都是可愛的小電路板,上面有一些晶片和引腳——但實際上它們是非常不同的裝置。 ...

  • 發佈於 2021-03-15 06:18
  • 閲讀 ( 51 )

如何用python讀寫google工作表

Python是一種優秀的程式語言。語法可能看起來奇怪和不尋常,但它很容易學習和使用。它支援Minecraft Pi版,以及一系列網站和學術研究專案。 ...

  • 發佈於 2021-03-16 13:43
  • 閲讀 ( 72 )

如何使用arduino eeprom在電源週期之間儲存資料

你知道Arduino關閉後可以儲存資料嗎?不是儲存在快閃記憶體中的草圖。我說的是EEPROM中的可變資料。加入我,我向你展示如何讀寫它,以及它能為你的專案做些什麼。 ...

  • 發佈於 2021-03-16 14:09
  • 閲讀 ( 37 )