999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

談如何用Python控制Arduino

2016-05-14 02:09:32羅亮陳紅盧解卿
中國信息技術教育 2016年8期

羅亮 陳紅 盧解卿

Python是一種面向對象、解釋型計算機程序設計語言,它的設計哲學是優雅、明確、簡單。因為其開源免費的精神與簡單易學的特點,自1989年問世以來,尤其是2004年以后,Python的使用率呈線性增長并被TIOBE編程語言排行榜評為2010年度語言。

Arduino是一款便捷靈活、方便上手的開源電子原型平臺,它包含可以用來做電路連接的Arduino電路板和配套的程序開發環境(Arduino IDE)?;贏rduino的項目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運行的軟件,如Processing、VB、Python等。

當我們使用Python語言通過串口控制Arduino讀取設備狀況并實施控制的時候,就構成了上位機下位機系統。安裝有Python之類軟件實施控制的計算機為上位機,能夠控制設備并獲取設備狀況的Arduino為下位機,它們相互之間可以通過串行口或無線的方式進行通訊,進而實現控制與被控制。

安裝Python

Python主要分為兩大類,即Python2和Python3。Python2是目前應用最廣泛的一個版本,最新版本號為2.7.11,適合初學者學習使用。Python3相對于Python2而言,有很多接口發生了變化并且可用的第三方庫不多且不成熟,雖然它代表以后的發展趨勢,但還是不建議初學者使用。Python下載地址為:https://www.python.org/downloads/。本例是下載了2.7.11版本,文件名為python-2.7.11.msi,安裝在文件夾“C:\Python27”,安裝過程中注意在如圖1的設置中添加可執行文件搜索路徑。

安裝Arduino

Arduino主控板部分可在淘寶網上通過關鍵詞“arduino uno”“arduino mini”“arduino mega”搜索購買。Arduino集成開發環境(Arduino IDE)可訪問“https://www.arduino.cc/en/Main/Software”,根據需要下載安裝,最新版本為1.6.7,歷經Arduino 00xx、Arduino 1.0.x、1.5.x BETA、Arduino 1.6.x四個系列的版本。本例硬件使用了Arduino Uno,軟件使用了Arduino1.5.8版本。軟件安裝在文件夾“C:\arduino158”,當Arduino Uno主控板與計算機通過USB連接后,需要安裝驅動,驅動文件默認在文件夾“C:\arduino158\drivers”,安裝完成后,在設備管理器中可以看到Arduino Uno占用的串行端口號,如圖2所示。

安裝Pyserial

Pyserial是協助Python控制串口通訊的第三方庫。pyserialv2.7下載地址為:http://sourceforge.net/projects/pyserial/,pyserialV3.0下載地址為:https://github.com/pyserial/pyserial。

若非Windows 64位操作系統,下載pyserial-2.7.win32.exe直接安裝即可,否則需要使用pyserial-2.7.tar.gz文件手動進行安裝。安裝方法為:將pyserial-2.7.tar.gz解壓至C盤根目錄后,運行CMD命令,進入文件夾“C:\ pyserial-2.7”,執行安裝命令:“python setup.py install”。具體執行過程可參考圖3的步驟。

啟動Arduino IDE作為下位機進行通訊調試

當Arduino主控板連上PC主機并安裝好相應的驅動程序后,我們使用鼠標雙擊Arduino安裝文件夾中的arduino.exe可以達到啟動Arduino集成編輯環境的目的。

啟動完成后,可通過菜單“file→preferences”設置中文環境,通過菜單“工具→板”設置“Arduino Uno”,“工具→端口”設置“Com3(Arduino Uno)”。如表1所示,輸入相關程序代碼后,點擊“上傳”按鈕燒錄程序至Arduino主控板中。啟用串口監視器后,根據程序代碼,輸入字符o,點擊按鈕“發送”可以發現Arduino主控板與數字引腳13相連的Led燈會變亮,輸入字符c,點擊按鈕“發送”可以發現Arduino主控板與數字引腳13相連的Led燈會停止發光。具體程序代碼的功能,請查看表1中相應的注釋。

啟動Python并進行初步通訊調試

安裝完成Python運行與編輯環境及涉及串口通訊的第三方庫pyserial后,通過“開始→所有程序→Python 2.7→IDLE(Python GUI)”或“Python(command line)”直接啟動Python,亦可以找到Python安裝文件夾下的“python.exe”雙擊啟動。啟動完成后,在命令提示符“>>>”下依次輸入import serial、ser=serial.Serial(2)、ser.write(“o”)、ser.write(“c”)等命令就可以實現對Arduino主板上與數字引腳13相連Led燈的控制,ser.close()關閉打開的串行口,exit()退出Python運行環境。

注意:本例Arduino使用串行口3,故serial.Serial()中的參數為2,參數始終比串行口序號小1。

有關pyserial的詳細用法,可以參考http://pythonhosted.org/pyserial/。以下的例子是先定義串行口ser,然后再對串行口ser進行配置。

趣味拓展:隨論壇在線人數變化的燈

我們在訪問論壇時,經常會看到類似的統計數據:。結合Python和Arduino各自擅長的功能,可以輕松做到讀取在線人數并根據在線人數多少決定亮燈情況。表2所示代碼是簡化情況,我們可以根據需要修改Python及相應的Arduino程序,讓亮燈更加人性化。

尤其應引起注意的是:①字符編碼問題。安裝chardet模塊,可以準確知道網絡中獲取字符的編碼,從而正確處理。②多空一行。Python構成語句塊的代碼需要多增加一個空行。詳見第18行代碼。③適當延時。在程序執行方式下,串行口對象ser來不及初始化,就迅速執行后面代碼,導致無效write,當加了第13行代碼后,則一切正常。④確保論壇首頁有“總計”“人在線”相關關鍵字,若無,請根據實際情況修改。

后記

Python第三方庫——pyserial提供了豐富的函數對串行口進行操作,從而使Phthon能夠很方便地對Arduino進行通訊。

在編寫程序代碼進行控制的過程中,要注意Python、Arduino使用同樣的通訊速率并且不要太大,建議都使用9600,否則容易出現數據錯誤。

經過試驗,若上位機PC、下位機Arduino均安裝藍牙,亦可以使用pyserial進行無線通訊達到控制的目的,有興趣的同仁可以自行嘗試。

Python的GUI編程似乎并不容易上手,其內建的Tkinter只能進行簡單GUI布局,若要做到VB集成開發環境所見即所得的效果,估計還需要安裝wxPython、Jython之類第三方庫才能做到。圖4是使用Python的Tkinter構建的控制Arduino主控板Led燈GUI界面,相關程序可聯系linkall@sina.com取得。

主站蜘蛛池模板: 中文字幕久久波多野结衣| 亚洲中文字幕日产无码2021| 91香蕉视频下载网站| 国产一区二区人大臿蕉香蕉| 波多野一区| 青草视频在线观看国产| 亚洲色偷偷偷鲁综合| 国产成人麻豆精品| 国内熟女少妇一线天| …亚洲 欧洲 另类 春色| 国产一区二区网站| 国产流白浆视频| 人妻中文久热无码丝袜| 亚洲av成人无码网站在线观看| 亚洲日韩高清无码| 国产大片喷水在线在线视频| 久久人人妻人人爽人人卡片av| 久久久精品久久久久三级| 国产AV无码专区亚洲A∨毛片| 福利在线不卡| 爱做久久久久久| 色婷婷电影网| 久久婷婷六月| 国产综合亚洲欧洲区精品无码| 欧美有码在线| 婷婷午夜天| 亚洲男人的天堂网| 国产91丝袜在线播放动漫 | 国产在线精品香蕉麻豆| 亚洲精品va| 强奷白丝美女在线观看| 无码一区二区三区视频在线播放| 亚洲欧美日韩视频一区| 精品成人免费自拍视频| 久久精品这里只有国产中文精品| 国产在线拍偷自揄拍精品| 欧美精品综合视频一区二区| 99九九成人免费视频精品| 天堂在线www网亚洲| 国产精品久久久久久久久| 亚洲中文字幕手机在线第一页| 人妻中文字幕无码久久一区| 日本午夜影院| 综合色在线| 国产成人午夜福利免费无码r| 欧美特黄一级大黄录像| 亚洲无线一二三四区男男| 国产精品所毛片视频| 波多野结衣国产精品| 国内精品小视频福利网址| 九九热视频精品在线| 精品亚洲国产成人AV| 久久精品66| 国产欧美精品一区aⅴ影院| 潮喷在线无码白浆| 日本www色视频| 婷婷六月在线| 毛片网站在线看| 美女一区二区在线观看| 欧美另类图片视频无弹跳第一页| 午夜不卡福利| 久久久久久久蜜桃| 国产免费精彩视频| 国产精品成人免费综合| 国产欧美日韩va另类在线播放| 亚洲制服中文字幕一区二区| 亚洲 日韩 激情 无码 中出| 超碰精品无码一区二区| 亚洲精品午夜天堂网页| 中文字幕 日韩 欧美| 亚洲国产91人成在线| 国产丝袜啪啪| 国产精品网址在线观看你懂的| 亚洲国产亚洲综合在线尤物| 国产成人久久777777| 91九色国产在线| 国产成人亚洲毛片| 青青热久麻豆精品视频在线观看| 亚洲日韩高清无码| 国产SUV精品一区二区6| 中日无码在线观看| 97se亚洲综合在线天天|