單片機學習筆記(Arduino Uno r3)
Aduino是什麼?
分為硬體和軟體兩個部分,硬體和軟體共同組成了Arduino,使用時須将Arduino硬體和軟體配合使用
- 硬體:Arduino系列各種型号的開發闆
- 軟體:Arduino IDE
Arduino與單片機的關系?
Arduino開發闆上有控制晶片,這些晶片為單片機。例:在Arduino Uno r3上一共有兩個晶片,開發闆主要晶片Atmega328,和另一個管理序列槽通信的晶片Atmega 16u2,這兩個晶片各自均為單片機。
單片機的作用?
單片機通過引腳從外部接收信号,經過對接收信号的分析,然後通過引腳向外做出不同反應。
單片機的意義?
假如以傳感器為輸入裝置,将傳感器和單片機連接配接,單片機就可以通過傳感器感覺周圍環境,進而根據環境變化,改變單片機上連接配接的輸出裝置的狀态。這樣就實作了自動控制的效果。
單片機的相關概念
電平
電壓的狀态,分高電平(高電壓)和低電平(低電壓)兩種。
I/O端口
I/O是簡寫,全稱是Intput/Output,即輸入輸出,将裝置連上單片機I/O端口,可以讓裝置從I/O端口傳送信号給單片機,也可以讓單片機從I/O端口輸出信号給裝置。I/O端口既可以用作輸入,也可以用作輸出。
數字信号
在單片機中,數字信号隻有兩種,0和1,可以用高電平和低電平表示。
模拟信号
一個可以在某個範圍内取值的數,相對于數字信号隻有0和1,模拟信号可以是例如0~1023之間的數、0~255之間的數等等,範圍視情況不同可以任意規定。相比數字信号僅有兩種狀态,模拟信号更多的狀态更适合傳達溫度變化、亮度變化等連續變化的情況。
A/D轉換
A/D是簡寫,全稱是 Analog/Digital,即模拟/數字。A/D轉換是将模拟信号轉換成數字信号,規則可以視情況任意設定。例如模拟信号是從0~1023之間的一個數,假如設定規則是當模拟信号>511時轉換為數字信号1,否則轉換為數字信号0,那麼此時就是一個模數信号的轉換。作用是将模拟信号的許多種狀态分為兩種狀态,友善單片機選擇以高電平還是低電平作出反應,也友善單片機中以二進制進行運算代表是和非兩種狀态。
PWM
PWM全稱Pulse Width Modulation,即脈沖寬度調制,目的是輸出模拟信号。例:相對于低電平,高電平為脈沖。通過調節高電平所占的時間的比例(即調節脈沖寬度),進而使輸出的平均電流大小發生變化,達到輸出模拟信号的目的。
占空比
在一個周期内,高電平持續的總時間所占的比例。
序列槽通信
一種通信方式,與并口通信相對應,例:假如有4個信号要傳輸,序列槽通信是把四個信号通過一條通道一個一個傳輸,而并口通信則是把四個信号通過四條通道同時傳輸。
中斷
假設單片機在執行程式A,當單片機接收到某一信号時,暫停執行程式A轉而執行程式B,當執行完B後再回到之前暫停的地方繼續執行程式A。在這個例子中,B為中斷程式,接收到的信号為中斷請求,執行程式B為中斷響應。
晶振
一片以特定角度切下的石英晶體,加直流電壓時晶體以固定頻率振動,使輸出的電流也以晶振的振動頻率變化。
計時器
單片機上連接配接有晶振時,通過晶振的振動頻率計時,方式是累加振動和振動之間相隔的時間。
如何使用Arduino?
如何下載下傳程式 如何編寫程式 如何連接配接Arduino和I/O裝置
如何下載下傳程式
以Arduino Uno r3 開發闆為例,步驟如下
1、從Arduino官網ArduinoHome – Download – Windows Installer頁面下載下傳Windows版本的Arduino IDE安裝包并安裝
2、将開發闆的USB接口用資料線和電腦的USB接口連接配接
3、在電腦上的 裝置管理器 – 端口裡找到Arduino裝置,然後從Arduino IDE安裝目錄下的Driver檔案夾安裝驅動,安裝成功後可以看到Arduino的COM口序号
4、打開電腦上的Arduino IDE,在工具 – 端口裡選擇正确的COM口序号,就可以在這個軟體頁面下編譯程式下載下傳程式了
如何編寫程式
Arduino程式分為三部分,預處理指令,setup函數和loop函數。執行流程是先執行預處理指令,然後執行一次setup,然後循環執行loop。
Arduino将單片機許多基本功能都寫成了函數,這些函數的函數定義由Aduino IDE在編譯程式時自動從庫中讀取,當需要某項功能時,隻需要在setup或loop直接調用對應的函數即可。基本函數大概可分為讀取I/O端口輸入的資料,對資料進行運算,判斷資料類型,從I/O端口輸出資料,計時,序列槽通信,對位進行操作八個類型。
Arduino還有很多第三方庫,包含了寫好的函數,每個函數有各自的功能,可供調用。常用的庫有标準連結庫,通信庫,傳感器庫,音效和聲波庫,電機和脈寬調制庫,計時器庫,實用工具庫等
如何連接配接Arduino和外部裝置
以Arduino Uno r3為例,開發闆上常用的端口有數字I/O端口,模拟輸入端口,模拟輸出端口,電源端口。
通常情況下,判斷一個裝置怎麼接上開發闆,需要了解的資訊有:哪根是接電源正極的線,哪根是接電源負極線,哪根線輸入還是輸出,假如輸入,是輸入數字量還是模拟量;假如輸出,是輸出數字量還是模拟量。
Tips:
- 數字I/O口前加~符号的,表示該I/O作為模拟輸出端口
- 當單片機數字I/O口輸出高電平時,可以作為正極
- Arduino電壓供應端口有不同大小的電壓供應,注意外接裝置的工作電壓大小
其它:
- Arduino Uno r3開發闆上排列着LED,分别标有TX和 RX,T為transmit縮寫,R為receive縮寫,分别表示序列槽通信狀态。當有資料通過序列槽通信輸入單片機時,RX亮;當單片機通過序列槽通信輸出資料時,TX亮。
- Arduino Uno r3開發闆上有兩個晶片,Atmega 328是主要晶片,Atmega 16 u2的作用是把USB通信轉換成序列槽通信。Arduino上和電腦上連接配接的都是USB接口,USB全稱Universal Serial Bus,是通用串行總線,和串行口(序列槽)不同,是以當使用序列槽通信時,需要一個轉換子產品,此處的Atmega 16 u2就代替了這個轉換子產品。
- 因為電腦實際和單片機是用USB接口連接配接的,是以把單片機連上電腦安裝驅動後看到的COM口序列号不是真實序列槽連接配接,隻是虛拟序列槽。