談談使用Arduino

2021-07-09 04:24:34 字數 1727 閱讀 4921

這兩天接了乙個小活是用arduino做乙個類似智慧型家居檢測的東西,包括溫度、濕度、煙霧檢測。對於arduino其實並不是第一次接觸,之前和同學一起整過那個3軸的機器手畫圖,不過當時**沒有親自寫。這次算是完完整整接觸了一回。

首先第一感覺就是便宜,一共**了兩次,加上七七八八的東西一共100塊不到,arduino uno主機板才25塊錢,倒是有的好的感測器比較貴。畢竟arduino這東西硬體開源,一下大大拉低了**。其次就是arduino的開發環境,這個也是我覺得為什麼他能這麼流行起來的原因,非常的straightforward,沒有什麼devicetree,  memory map之類的,直接乙個c++的程式設計環境,乙個void setup() 乙個void loop(),幾行**就可以點燈、驅動lcd屏,獲取感測器資料等,非常的方便,這個世界還是軟體的世界,因此適合軟體程式設計才是正道。

整個系統搭起來前前後後也花了多半天時間,要把一件簡單的是做好也是挺不容易的,下面講講其中一些經驗。

1,對於arduino的程式設計風格,我覺得這個是最重要的,也是我寫**之前在搜尋引擎上最想找到的,arduino因為軟硬體都開源,所以可以非常好的繼承已有的**,避免重複造輪子,這也是軟體程式設計最大的特點。特別是感測器就那麼幾種,肯定有別人寫好的驅動,現成的庫,因此千萬不要拿到乙個感測器就去找他的datasheet,然後重新寫乙個時序,這不是arduino的風格,是以前嵌入式微控制器的風格。

這裡我用的dht11和lcd1602屏就是用的已有的庫檔案,其中dht11是網上找到的,lcd的驅動是arduino開發環境自帶的,都是用c++寫的,想去看其具體函式實現可以直接查源**。

2,,開始lcd的使用還是找的中文社群的資料,主要是熟悉硬體的連線方式,後來發現arduino自帶庫檔案之後,發現他官網上是有library的說明的,在這裡比如實現液晶屏文字滾動的效果,看到他.h檔案裡有個autosroll,但是用了半天總感覺不對,看源**也沒太看出什麼門道來,後來仔細看他官網上的描述和示例程式,很快發現並不是我想要的功能,隨後用scrolldisplayleft這個函式實現了想要的功能,目前只有lcd的blink功能沒有成功使用,估計是lcd的驅動型號的問題,這個目前使用delay和lcd.clear函式簡單替代,暫時也就不深究了。

3,說一點除錯方面的經驗,arduino可以非常方便的利用串列埠,只需要乙個簡單的初始化就可以用其串列埠來,這是乙個非常好的除錯手段。目前據我所知arduino的開發環境是沒有單步除錯的,所以除錯還是要善於利用串列埠print。

4,還想簡單說說arduino的library,他在安裝目錄下面有個library目錄,裡面有它自帶的一些庫檔案,第三方庫檔案可以直接放到這個目錄就可以正常工作(不過需要重啟arduino),其實在arduino的工作目錄下,也有乙個library目錄,第三方庫放到這裡也可以,同樣需要重啟arduino。這裡我自己也利用c++的類開發了乙個無源蜂鳴器的庫,可以看到arduino的庫都是用物件導向的方式開發的。

5,乙個小問題,arduino的int型別是16bit的,這也是昨天debug時間最長的乙個問題,這個主要是因為他的微控制器是16位的,因此如果有超過32768的數就需要32bit的long型別運算,而且他編譯器裡面的格式轉換是跟運算數對應而非和被賦值的數對應的,也就是兩個int型別相乘結果還是int型別,無論賦值到int還是long都用可能出現溢位的問題。有可能c和c++裡面就是這麼定義的,自己有點忘了:p

總而言之,arduino還是個挺好玩的東西,現在這個時代很適合給小朋友當玩具啊哈哈。

初步使用Arduino

北京同事測試canon鏡頭使用的控制器是arduinouno,藉此機會剛好使用下arduino,一直都聽說這東西比較火,還沒用過,慚愧。測試使用的板卡為最普通的arduinouno,開發生態環境確實很好,開發環境 庫都很全。有基礎的差不多20分鐘就能上手,我工作 中主要用到多執行緒 硬體定時器 sp...

Arduino使用雨滴模組

上買的雨滴模組。有兩個部分,如下圖所示 上面的模組兩邊都有引腳,左邊的四個引腳與arduino相連,右邊的兩個引腳與第二個部分相連。各個引腳的意義如下 a0 模擬訊號輸出引腳,輸出滴了雨滴後的模擬電壓值 d0 數碼訊號輸出引腳,第乙個部分中的可調電阻可以限定乙個固定的值,當模擬電壓超出該值時輸出1,...

Arduino使用遊戲搖桿joystick

這是我買的37款感測器套件中的一款,下面是截圖 vrx表示x軸方向的輸出 vry表示y軸方向的輸出 sw輸出0表示按下搖桿,其它值都表示沒有按下搖桿。那如果判斷x軸和y軸的方向呢?通過測試,發現引腳水平朝向右邊時,x軸和y軸如下圖所示,搖桿靜止時x軸輸出為501,y軸輸出為503 根據參考文獻1中給...