“(RB-13K024)基于Arduino電子積木套件”的版本間的差異
(未顯示1個(gè)用戶的1個(gè)中間版本) | |||
第5行: | 第5行: | ||
:Arduino 可以使用開(kāi)發(fā)完成的電子元件例如 Switch 或 sensors 或其他控制器、LED、步進(jìn)馬達(dá)或其他輸出裝置。Arduino 也可以獨(dú)立運(yùn)作成為一個(gè)可以跟軟件溝的接口,例如說(shuō):flash processing Max/MSP VVVV 或其他互動(dòng)軟件。Arduino 開(kāi)發(fā) IDE 接口基于開(kāi)放源代碼,可以讓您免費(fèi)下載使用開(kāi)發(fā)出更多令人驚艷的互動(dòng)作品。 | :Arduino 可以使用開(kāi)發(fā)完成的電子元件例如 Switch 或 sensors 或其他控制器、LED、步進(jìn)馬達(dá)或其他輸出裝置。Arduino 也可以獨(dú)立運(yùn)作成為一個(gè)可以跟軟件溝的接口,例如說(shuō):flash processing Max/MSP VVVV 或其他互動(dòng)軟件。Arduino 開(kāi)發(fā) IDE 接口基于開(kāi)放源代碼,可以讓您免費(fèi)下載使用開(kāi)發(fā)出更多令人驚艷的互動(dòng)作品。 | ||
? | == | + | ==Arduino技術(shù)參數(shù)== |
# 微控制器核心:AVRmega168-20PU(處理速度可達(dá) 20MIPS) | # 微控制器核心:AVRmega168-20PU(處理速度可達(dá) 20MIPS) | ||
# 工作電壓:+5V | # 工作電壓:+5V | ||
第21行: | 第21行: | ||
# 支持插針 | # 支持插針 | ||
? | == | + | ==Arduino下載軟件及開(kāi)發(fā)環(huán)境 == |
# 軟件下載 | # 軟件下載 | ||
官方軟件下載地址:http://arduino.cc/en/Main/Software | 官方軟件下載地址:http://arduino.cc/en/Main/Software | ||
第71行: | 第71行: | ||
(9)Serial.print (數(shù)據(jù),數(shù)據(jù)的進(jìn)制)——從串行端口輸出數(shù)據(jù)。Serial.print(數(shù)據(jù))默認(rèn)為十進(jìn)制等于 Serial.print(數(shù)據(jù),DEC)。 | (9)Serial.print (數(shù)據(jù),數(shù)據(jù)的進(jìn)制)——從串行端口輸出數(shù)據(jù)。Serial.print(數(shù)據(jù))默認(rèn)為十進(jìn)制等于 Serial.print(數(shù)據(jù),DEC)。 | ||
(10)S erial.println(數(shù)據(jù),數(shù)據(jù)的進(jìn)制)——從串行端口輸出數(shù)據(jù),跟隨一個(gè)回車和一個(gè)換行符。這個(gè)函數(shù)所取得的值與 Serial.print()一樣。 | (10)S erial.println(數(shù)據(jù),數(shù)據(jù)的進(jìn)制)——從串行端口輸出數(shù)據(jù),跟隨一個(gè)回車和一個(gè)換行符。這個(gè)函數(shù)所取得的值與 Serial.print()一樣。 | ||
? | == | + | ==Arduino應(yīng)用基礎(chǔ)篇== |
:一般傳感器為三線制即 VCC、GND、信號(hào)(+、-、S),Arduino Sensor Shield V5.0傳感器擴(kuò)展板將 Arduino Duemilanove 2009 控制器的全部數(shù)字與模擬接口以舵機(jī)線序形式擴(kuò)展出來(lái),還特設(shè) IIC 接口、32 路舵機(jī)控制器接口、藍(lán)牙模塊通信接口、SD 卡模塊通信接口、APC220 無(wú)線射頻模塊通信接口、RB URF v1.1 超聲波傳感器接口、12864液晶串行與并行接口。 | :一般傳感器為三線制即 VCC、GND、信號(hào)(+、-、S),Arduino Sensor Shield V5.0傳感器擴(kuò)展板將 Arduino Duemilanove 2009 控制器的全部數(shù)字與模擬接口以舵機(jī)線序形式擴(kuò)展出來(lái),還特設(shè) IIC 接口、32 路舵機(jī)控制器接口、藍(lán)牙模塊通信接口、SD 卡模塊通信接口、APC220 無(wú)線射頻模塊通信接口、RB URF v1.1 超聲波傳感器接口、12864液晶串行與并行接口。 | ||
[[文件:ert11.jpg|500px|有框|居中]] | [[文件:ert11.jpg|500px|有框|居中]] | ||
第216行: | 第216行: | ||
取模擬值并在 PC 機(jī)上顯示。蜂鳴器發(fā)聲模塊接數(shù)字 7 接口,火焰?zhèn)鞲衅鹘幽M 1 接口。 | 取模擬值并在 PC 機(jī)上顯示。蜂鳴器發(fā)聲模塊接數(shù)字 7 接口,火焰?zhèn)鞲衅鹘幽M 1 接口。 | ||
[[文件:ert29.jpg|500px|有框|居中]] | [[文件:ert29.jpg|500px|有框|居中]] | ||
? | <pre style='color:blue'> | + | <pre style='color:blue'>int f lame=0;//定義火焰接口為模擬 0 接口 |
? | int f lame=0;//定義火焰接口為模擬 0 接口 | + | |
int Beep=7;//定義蜂鳴器接口為數(shù)字 7 接口 | int Beep=7;//定義蜂鳴器接口為數(shù)字 7 接口 | ||
int val=0;//定義數(shù)字變量 val | int val=0;//定義數(shù)字變量 val | ||
第228行: | 第227行: | ||
void loop() | void loop() | ||
{ | { | ||
? | + | ||
? | + | ||
val=analogRead(flame);//讀取火焰?zhèn)鞲衅鞯哪M值 | val=analogRead(flame);//讀取火焰?zhèn)鞲衅鞯哪M值 | ||
Serial.pr int ln(val);/ /輸出模擬值,并將其打印出來(lái) | Serial.pr int ln(val);/ /輸出模擬值,并將其打印出來(lái) | ||
第240行: | 第238行: | ||
digitalWrite(Beep,HIGH); | digitalWrite(Beep,HIGH); | ||
} | } | ||
? | } | + | }</pre> |
:演示視頻地址請(qǐng)點(diǎn)擊:http://v.youku.com/v_show/id_XMTk4NjU5MDcy.html | :演示視頻地址請(qǐng)點(diǎn)擊:http://v.youku.com/v_show/id_XMTk4NjU5MDcy.html | ||
:例程二:壓力大小測(cè)試儀的制作,使用壓力感測(cè)電阻控制 LED 亮滅程度,并將反 | :例程二:壓力大小測(cè)試儀的制作,使用壓力感測(cè)電阻控制 LED 亮滅程度,并將反 |
2015年6月12日 (五) 17:14的最后版本
目錄 |
概述
- Arduino 是一塊基于開(kāi)放源代碼的 USB 接口 Simp le I/O 接口板(包括 12 通道數(shù)字GPIO,4 通道 PWM 輸出,6-8 通道 10bit ADC 輸入通道),并且具有使用類似 Java,C語(yǔ)言的 IDE 集成開(kāi)發(fā)環(huán)境。讓您可以快速使用 Arduino 語(yǔ)言與 F lash 或 Processing 等軟件,作出互動(dòng)作品。 Arduino 可以使用開(kāi)發(fā)完成的電子元件例如 Switch 或 sensors 或其他控制器、LED、步進(jìn)馬達(dá)或其他輸出裝置。Arduino 也可以獨(dú)立運(yùn)作成為一個(gè)可以跟軟件溝的接口,例如說(shuō):flash processing Max/MSP VVVV 或其他互動(dòng)軟件。Arduino 開(kāi)發(fā) IDE 接口基于開(kāi)放源代碼,可以讓您免費(fèi)下載使用開(kāi)發(fā)出更多令人驚艷的互動(dòng)作品。
- Arduino 可以使用開(kāi)發(fā)完成的電子元件例如 Switch 或 sensors 或其他控制器、LED、步進(jìn)馬達(dá)或其他輸出裝置。Arduino 也可以獨(dú)立運(yùn)作成為一個(gè)可以跟軟件溝的接口,例如說(shuō):flash processing Max/MSP VVVV 或其他互動(dòng)軟件。Arduino 開(kāi)發(fā) IDE 接口基于開(kāi)放源代碼,可以讓您免費(fèi)下載使用開(kāi)發(fā)出更多令人驚艷的互動(dòng)作品。
Arduino技術(shù)參數(shù)
- 微控制器核心:AVRmega168-20PU(處理速度可達(dá) 20MIPS)
- 工作電壓:+5V
- . 外部輸入電壓:+7V~+12V(建議)
- . 外部輸入電壓(極值):+6V≤Vin≤+20V
- 數(shù)字信號(hào) I/O 接口 0~13:共 14 個(gè),其中 6 個(gè) PWM 輸出接口(P in11、Pin10、Pin9、P in6、Pin5、Pin3)
- 模擬信號(hào)輸入接口 0~5:共 6 個(gè)
- DC I/O 接口電流:40 mA
- Flash 容量:16 KB (其他 2K 用于 bootloader)
- SRAM 靜態(tài)存儲(chǔ)容量:1KB
- EEPROM 存儲(chǔ)容量:512 bytes
- 時(shí)鐘頻率:16MHz、支持 USB 接口協(xié)議
- 支持 USB 供電與外部供電
- 支持 ISP 下載功能
- 支持插針
Arduino下載軟件及開(kāi)發(fā)環(huán)境
- 軟件下載
官方軟件下載地址:http://arduino.cc/en/Main/Software
- 軟件及硬件驅(qū)動(dòng)安裝
軟件是綠色版本,軟件解壓縮后即可使用。
- 軟件解壓完成后,接下來(lái)要安裝 Arduino 硬件驅(qū)動(dòng)。
- 現(xiàn)將 Arduino 上的方頭 USB 連接好之后,另外一端的 USB 連接好計(jì)算機(jī)任意一個(gè)US B 接口。
接下來(lái)就會(huì)出現(xiàn) F 232R US B UART 的驅(qū)動(dòng)程序安裝畫面。
按照安裝提示選擇從列表或指定位置安裝,點(diǎn)擊下一步。
- 點(diǎn)擊瀏覽,找到 Arduino 軟件所在位置的 drivers
文件夾,再次點(diǎn)擊下一步,就可 以進(jìn)行安裝驅(qū)動(dòng)程序了,顯示完成即硬件驅(qū)動(dòng)安裝完成。
- Arduino 編譯下載軟件使用說(shuō)明
打開(kāi)軟件只需執(zhí)行 arduino.exe 執(zhí)行文件,就可以看到如下程序編譯窗口。
- 在輸入程序前需要先選擇板號(hào)和 COM 口,COM 口號(hào)可以在我的電腦右鍵管理里設(shè)備管理器里看到,實(shí)例中 COM 口為 COM13。
- 板號(hào)的選擇就需要您根據(jù)您自己Arduino的型號(hào)選擇,實(shí)例中使用的為Arduino Duemilanove 168,需選擇 Arduino Diecimila,Duemilanove,or Nano w/ATmega 168,若硬件為 Arduino Mega 1280 即需選擇 Arduino Mega。
基本設(shè)置完畢就可以編寫程序了。
Arduino 基 本語(yǔ) 言概述
- Arduino 使用起來(lái)要比其他微處理器更易懂,與 Basic S tamp 有些相似,Arduino 的編程語(yǔ)言更為簡(jiǎn)單和人性化,Arduino編程語(yǔ)言基于C語(yǔ)言,但其實(shí)用性要遠(yuǎn)高于C語(yǔ)言,主要由于它將一些常用語(yǔ)句組合函數(shù)化,例如:延時(shí)函數(shù) delay( 1000)即為一秒。
- Arduino 程序基本架構(gòu)
(1)聲明變量及接口名稱(int val; int ledPin=13;)。 (2)setup()——函數(shù)在程序開(kāi)始時(shí)使用,可以初始化變量、接口模式、啟用庫(kù)等 (例如:pinMode(ledPin,OUTUPT);)。 (3)loop()——在 setup()函數(shù)之后,即初始化之后,loop() 讓你的程序循環(huán)地被執(zhí)行,使用它來(lái)運(yùn)轉(zhuǎn) Arduino。
- Arduino 常用編程語(yǔ)言
(1)pinMode(接口名稱,OUTPUT 或 INP UT)將——接口定義為輸入或輸出接口, 用在 setup()函數(shù)里。 (2)digitalWrite(接口名稱,HIGH 或 LOW)——將數(shù)字接口值至高或低。 (3)digitalRead(接口名稱)——讀出數(shù)字接口的值。 (4)analogWrit e(接口名稱, 數(shù)值)——給一個(gè)接口寫入模擬值(PWM 波)。對(duì)于 ATmega168 芯片的 Arduino(包括 Mini 或 BT),該函數(shù)可以工作于 3,5,6,9,10和 11 號(hào)接口。老版的 ATmega8 芯片的 US B 和 serial Arduino 僅僅支持 9,10 和 11 號(hào)接口。 (5)analogRead(接口名稱)——從指定的模擬接口讀取值,Arduino 對(duì)該模擬值進(jìn)行 10-bit 的數(shù)字轉(zhuǎn)換,這個(gè)方法將輸入的 0-5 電壓值轉(zhuǎn)換為 0 到 1023 間的整數(shù)值。 (6)delay()——延時(shí)一段時(shí)間,delay(1000)為一秒。 (7)Serial.begin(波特率)——設(shè)置串行每秒傳輸數(shù)據(jù)的速率(波特率)。在同計(jì)算機(jī)通訊時(shí),使用下面這些值:300,1200,2400,4800,9600,14400,19200,28800,38400,57600 或 115200。你也可以在任何時(shí)候使用其它的值,比如,與 0 號(hào)或 1 號(hào)插口通信就要求特殊的波特率。用在 setup()函數(shù)里 (8)Serial.read()——讀取持續(xù)輸入的數(shù)據(jù)。 (9)Serial.print (數(shù)據(jù),數(shù)據(jù)的進(jìn)制)——從串行端口輸出數(shù)據(jù)。Serial.print(數(shù)據(jù))默認(rèn)為十進(jìn)制等于 Serial.print(數(shù)據(jù),DEC)。 (10)S erial.println(數(shù)據(jù),數(shù)據(jù)的進(jìn)制)——從串行端口輸出數(shù)據(jù),跟隨一個(gè)回車和一個(gè)換行符。這個(gè)函數(shù)所取得的值與 Serial.print()一樣。
Arduino應(yīng)用基礎(chǔ)篇
- 一般傳感器為三線制即 VCC、GND、信號(hào)(+、-、S),Arduino Sensor Shield V5.0傳感器擴(kuò)展板將 Arduino Duemilanove 2009 控制器的全部數(shù)字與模擬接口以舵機(jī)線序形式擴(kuò)展出來(lái),還特設(shè) IIC 接口、32 路舵機(jī)控制器接口、藍(lán)牙模塊通信接口、SD 卡模塊通信接口、APC220 無(wú)線射頻模塊通信接口、RB URF v1.1 超聲波傳感器接口、12864液晶串行與并行接口。
接口示意圖如下:
- 常用數(shù)字電子積木
按壓式大按鈕模塊
- 按壓式大按鈕模塊是 Arduino 學(xué)習(xí)入門必備數(shù)字開(kāi)關(guān)量輸入模塊,通過(guò)編程可以實(shí)
現(xiàn)發(fā)光燈控制,發(fā)聲器控制,按鍵選擇功能等。 電磁式蜂鳴器發(fā)聲模塊
- 蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電源供電,廣泛應(yīng)用于計(jì)算機(jī)、
打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中 作發(fā)聲器件。若想獲得有關(guān)蜂鳴器資訊請(qǐng)點(diǎn)擊:蜂鳴器的結(jié)構(gòu)原理及制作。 單向傾角傳感器模塊
- 基于鋼球開(kāi)關(guān)的數(shù)字模塊,利用鋼球的特性,通過(guò)重力作用使鋼球向低處滾動(dòng),
從而使開(kāi)關(guān)閉合或斷開(kāi),國(guó)內(nèi)的滾珠開(kāi)關(guān)大都是水銀開(kāi)關(guān),易破損、氧化、漏氣、壽 命短、污染環(huán)境等弊端,鋼球滾珠開(kāi)關(guān)摒棄以上缺點(diǎn),更環(huán)保易用,比使用水銀開(kāi)關(guān) 更加安全,可作為單向傾角傳感器使用。 震動(dòng)傳感器模塊
- 震動(dòng)式開(kāi)關(guān)數(shù)字輸出模塊,當(dāng)模塊所處環(huán)境發(fā)生震動(dòng)時(shí),模塊信號(hào)將產(chǎn)生高低電
平變化,左邊傳感器內(nèi)有鋼珠適合檢測(cè)較小幅度的震動(dòng),右側(cè)傳感器內(nèi)有彈簧適合測(cè) 量較大震動(dòng)幅度的震動(dòng)。 磁感應(yīng)傳感器模塊
- 磁感應(yīng)傳感器的主要構(gòu)成的材料來(lái)自于干簧管。干簧管是一種磁敏的特殊開(kāi)關(guān)。
它通常由兩個(gè)或三個(gè)既導(dǎo)磁又導(dǎo)電材料做成的簧片觸點(diǎn),被封裝在充有惰性氣體(如氮、氦等)或真空的玻璃管里,玻璃管內(nèi)平行封裝的簧片端部重疊,并留有一定間隙或相互接觸以構(gòu)成開(kāi)關(guān)的常開(kāi)或常閉接點(diǎn)。若想獲得有關(guān)磁感應(yīng)傳感器詳細(xì)資料請(qǐng)點(diǎn)擊: 磁感應(yīng)傳感器的知識(shí)。 Mini 尋線傳感器模塊
- Mini
紅外尋線傳感器是根據(jù)反射式光電傳感器原理開(kāi)發(fā)的專用機(jī)器人產(chǎn)品,可以幫助你的機(jī)器人進(jìn)行白線或黑線跟蹤,可以檢測(cè)白底中的黑線,也可以檢測(cè)黑底中的 白線。尋線反饋信號(hào)可以提供穩(wěn)定的 TTL 電平輸出(開(kāi)關(guān)量),使尋線更準(zhǔn)確更穩(wěn)定。其可用于光電測(cè)速、程控小車尋線,是輪式機(jī)器人的必備傳感器。若想獲得有關(guān)紅外傳感器詳細(xì)資料請(qǐng)點(diǎn)擊:尋線傳感器原理簡(jiǎn)介與應(yīng)用。 Mini 避障傳感器模塊
- Mini IR Dectector是一款距離可調(diào)式避障傳感器。此傳感器對(duì)環(huán)境光線適應(yīng)能力強(qiáng)、精度高,其具有一對(duì)紅外線發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線,當(dāng)檢測(cè)方向遇到障礙物(反射面)時(shí),紅外線反射回來(lái)被接收管接收,此時(shí)指示燈亮起,經(jīng)過(guò)電路處理后,信號(hào)輸出接口輸出數(shù)字信號(hào),可通過(guò)電位器旋鈕調(diào)節(jié)檢測(cè)距離,有效距離 2~40cm,工作電壓為 3.3V-5V,由于工作電壓范圍寬泛,在電源電壓波動(dòng)比較大的情況下仍能穩(wěn)定工作,適合多種單片機(jī)、Arduino 控制器、BS2 控制器使用,安裝到機(jī)器人上即可感測(cè)周圍環(huán)境的變化。若想獲得有關(guān)紅外傳感器詳細(xì)資料請(qǐng)點(diǎn)擊: 紅外遙控的發(fā)射和接收原理簡(jiǎn)介與應(yīng)用。
數(shù)字繼電器模塊
- Arduino Relay Shield 數(shù)字繼電器模塊提供一路輸入輸出功能,模塊集成動(dòng)態(tài)指示燈,可顯示繼電器開(kāi)合狀態(tài),設(shè)有續(xù)流二極管起保護(hù)作用,最高可以接 250V/3A 的交流或 30V/3A 直流設(shè)備,因此可以通過(guò) Roboboard 控制器、Arduino 控制器來(lái)控制,將弱電控制轉(zhuǎn)換成強(qiáng)電控制。在使用 Arduino 設(shè)計(jì)互動(dòng)作品時(shí),很多大電流或者高電壓的設(shè)備(如電風(fēng)扇等)通常無(wú)法直接用 Arduino 或其他單片機(jī)的數(shù)字 I/O 接口進(jìn)行控制,這時(shí)就可以用這款數(shù)字繼電器模塊通過(guò) 3P 傳感器連接線直接插到 Arduino S ensor Shield V5.0 傳感器擴(kuò)展板或 Arduino MEGA Sensor Shield V1.0 專用傳感器擴(kuò)展板上,這將會(huì)幫您解決這個(gè)問(wèn)題,真可謂制作互動(dòng)作品的必備之選。若想獲得更多關(guān)于繼電器方面的知識(shí)請(qǐng)點(diǎn)擊:關(guān)于繼電器的一些知識(shí)。
人體紅外熱釋電傳感器
- 人體紅外熱釋電傳感器是一款基于熱釋電效應(yīng)的人體熱釋運(yùn)動(dòng)傳感器,能檢測(cè)到
人體或動(dòng)物身上發(fā)出的紅外線,配合菲涅爾透鏡能使傳感器探測(cè)范圍更遠(yuǎn)更廣??稍贏rduino 控制器上編程應(yīng)用,通過(guò) 3P 傳感器連接線插接到 Arduino 專用傳感器擴(kuò)展板上使用,可以輕松實(shí)現(xiàn)人體或動(dòng)物檢測(cè)的相關(guān)的互動(dòng)效果。若想獲得更多關(guān)于熱釋電傳感器方面的知識(shí)請(qǐng)點(diǎn)擊:熱釋電紅外傳感器。 綜合應(yīng)用實(shí)例
- 例程一:用按壓式大按鈕模塊和蜂鳴器發(fā)聲模塊搭建簡(jiǎn)單電路,實(shí)現(xiàn)按鍵發(fā)聲提示
功能。
- 蜂鳴器發(fā)聲模塊接數(shù)字接口7,大按鈕模塊接數(shù)字接口11,當(dāng)大按鈕按下蜂鳴器鳴響,這里大按鈕模塊為輸入設(shè)備,蜂鳴器模塊為輸出設(shè)備。
例程源代碼: int Beep=7;//定義蜂鳴器接口 int But ton=11;//定義大按鈕接口 int val;//定義數(shù)字變量 val void setup() { pinMode(Beep,OUTPUT);//定義蜂鳴器為輸出接口 pinMode(But ton,INPUT);// 定義大按鈕為輸出接口 } void loop() { val=digit alRead(Button);// 將數(shù)字接口 11 的值讀取賦給 val if(val==LOW)//若按鍵被按下蜂鳴器鳴響 { digit alWr ite(Beep,LOW); } else { digit alWr ite(Beep,HIGH); } }
- 例程二:震動(dòng)模塊和數(shù)字 13 接口自帶 LED 搭建簡(jiǎn)單電路,制作震動(dòng)閃光器。
- 利用數(shù)字 13 接口自帶的 LED,將震動(dòng)傳感器接入數(shù)字 7 接口,當(dāng)震動(dòng)傳感器感測(cè)
到有震動(dòng)信號(hào)時(shí),LED 閃爍發(fā)光。
例程源代碼: int Led=13;//定義 LED 接口 int S hock=7;//定義震動(dòng)傳感器接口 int val;//定義數(shù)字變量 val void setup() { pinMode(Led,OUTPUT);//定義 LED 為輸出接口 pinMode(S hock,INPUT);//定義震動(dòng)傳感器為輸出接口 } void loop() { val=digit alRead(Shock);//將數(shù)字接口 7 的值讀取賦給 val
if(val==HIGH)//當(dāng)震動(dòng)傳感器檢測(cè)有信號(hào)時(shí),LED 閃爍 { digitalWrite(Led,LOW); } else { digitalWrite(Led,HIGH); } }
- 例程三:將紅外熱釋電傳感器信號(hào)接口通過(guò)連接線插到數(shù)字7接口上,搭建簡(jiǎn)單電路,檢測(cè)到人體或動(dòng)物身上發(fā)出的紅外線時(shí),控制器自帶數(shù)字 13 接口 LED 燈點(diǎn)亮。
例程源代碼: int Led=13;//定義 LED 接口 int S ensor=7;//定義紅外熱釋電傳感器接口 int val;//定義數(shù)字變量 val void setup() { pinMode(Led,OUTPUT);//定義 LED 為輸出接口 pinMode(S ensor,INP UT); //定義紅外熱釋電傳感器為輸出接口 } void loop() { val=digit alRead(Sensor);//將數(shù)字接口 7 的值讀取賦給 val if(val==LOW) //當(dāng)紅外熱釋電傳感器檢測(cè)有信號(hào)時(shí),LED 亮起 { digitalWrite(Led,LOW); } else { digit alWr ite(Led,HIGH); } }
- 綜上所述,數(shù)字傳感器模塊使用方法比較簡(jiǎn)單,一般都是輸出高低電平數(shù)字量信
號(hào),通過(guò)以上三個(gè)實(shí)例的介紹,大家可以舉一反三,學(xué)習(xí)使用其他類型的數(shù)字傳感器模塊,完成自己的互動(dòng)佳作。
- 常用模擬傳感器
旋轉(zhuǎn)角度傳感器模塊
- Arduino 旋轉(zhuǎn)角度傳感器是基于可調(diào)電位計(jì)工作原理所設(shè)計(jì),其不僅可以做為可調(diào)電阻控制電機(jī)轉(zhuǎn)速,還可以在其旋轉(zhuǎn)頭部安裝單擺輪,測(cè)量?jī)A角,旋轉(zhuǎn)角度從 0 到 300度,可使用 3P 傳感器連接線與 Arduino Sensor Shield V5.0 傳感器擴(kuò)展板接插,通過(guò)編程在 Arduino Mega168 控制器上可以輕松實(shí)現(xiàn)與旋轉(zhuǎn)位置相關(guān)的互動(dòng)作品。
- 光線傳感器模塊
- Arduino Light S ensor 是基于半導(dǎo)體的光電效應(yīng)原理所開(kāi)發(fā)的光線傳感器,其可用來(lái)對(duì)周圍環(huán)境光的強(qiáng)度進(jìn)行檢測(cè),結(jié)合各種單片機(jī)控制器或者 Arduino 控制器可實(shí)現(xiàn)光的測(cè)量、光的控制和光電轉(zhuǎn)換等功能,可通過(guò) 3P 傳感器連接線與 Arduino 專用傳感器擴(kuò)展板結(jié)合使用,可以制作光感相關(guān)的互動(dòng)作品。若想獲得更多關(guān)于光線傳感器方面的知識(shí)請(qǐng)點(diǎn)擊:光敏電阻的原理及應(yīng)用。
火焰?zhèn)鞲衅髂K
- 遠(yuǎn)紅外火焰?zhèn)鞲衅骺梢杂脕?lái)探測(cè)火源或其它一些波長(zhǎng)在 760 納米~1100 納米范圍內(nèi)的熱源,探測(cè)角度達(dá) 60 度,其中紅外光波長(zhǎng)在 940 納米附近時(shí),其靈敏度達(dá)到最大。此火焰?zhèn)鞲衅髟跍缁饳C(jī)器人比賽或者搜救機(jī)器人比賽中起著非常重要的作用,它可以 當(dāng)做機(jī)器人的眼睛來(lái)尋找火源或光源足球,結(jié)合 Arduino 控制器與傳感器擴(kuò)展板,可利用它制作滅火機(jī)器人、足球機(jī)器人等。
F SR 壓力傳感器
- Force Sensing Resistor 壓力感應(yīng)電阻是著名 Interlink Electronics 公司生產(chǎn)的一款重量輕,體積小,感測(cè)精度高,超薄型壓力傳感器。當(dāng)壓力感測(cè)電阻器感應(yīng)面的壓力增加時(shí),其阻抗就會(huì)減少,從而取得壓力數(shù)據(jù)。其可用于機(jī)械手末端夾持器感測(cè)夾持物品有無(wú),仿生機(jī)器人足下行走地面感測(cè),哺乳類動(dòng)物咬力測(cè)試生物實(shí)驗(yàn),應(yīng)用范圍及其廣泛。若想獲得更多關(guān)于壓力傳感器方面的知識(shí)請(qǐng)點(diǎn)擊:關(guān)于壓力傳感器的知識(shí)。
綜合應(yīng)用實(shí)例
- 例程一:使用火焰?zhèn)鞲衅骱头澍Q器模塊搭建一個(gè)簡(jiǎn)單電路,制作火焰報(bào)警器,讀
取模擬值并在 PC 機(jī)上顯示。蜂鳴器發(fā)聲模塊接數(shù)字 7 接口,火焰?zhèn)鞲衅鹘幽M 1 接口。
int f lame=0;//定義火焰接口為模擬 0 接口 int Beep=7;//定義蜂鳴器接口為數(shù)字 7 接口 int val=0;//定義數(shù)字變量 val void setup() { pinMode(Beep,OUTP UT);// 定義 LED 為輸出接口 pinMode(flame,INPUT);//定義蜂鳴器為輸入接口 S erial.begin(9600);//設(shè)定波特率為 9600 } void loop() { val=analogRead(flame);//讀取火焰?zhèn)鞲衅鞯哪M值 Serial.pr int ln(val);/ /輸出模擬值,并將其打印出來(lái) if(val>=600)//當(dāng)模擬值大于 600 時(shí)蜂鳴器鳴響 { digitalWrite(Beep,LOW); } else { digitalWrite(Beep,HIGH); } }
- 演示視頻地址請(qǐng)點(diǎn)擊:http://v.youku.com/v_show/id_XMTk4NjU5MDcy.html
- 例程二:壓力大小測(cè)試儀的制作,使用壓力感測(cè)電阻控制 LED 亮滅程度,并將反
饋模擬值在 PC 屏幕上顯示。
- 壓力感應(yīng)電阻是彎曲壓力傳感器的一種,簡(jiǎn)稱 FSR。FSR 是一種隨著有效表面上
壓力增大而輸出阻值減小的高分子薄膜,F(xiàn)SR 并不是測(cè)壓元件或形變測(cè)量?jī)x,盡管他們有著相似的性能。而且這類壓力感測(cè)電阻不適用于精密測(cè)量,但是 FSR 卻是一款靈敏度較高的傳感器。
首先看一下 Force Sensing Resistor 壓力感應(yīng)電阻的使用方法
- 按照上圖搭建電路,數(shù)字 11 接口連接綠色 LED,將 FSR 讀出的模擬值賦給 LED,
這樣通過(guò) LED 的亮度我們就可以看出讀出模擬值和壓力值的大小了。
例程源代碼:
int led=11;//定義 LED 接口為數(shù)字 11 接口 int F SR=0;//定義壓力傳感器接口為模擬 0 接口 int val;//定義數(shù)字變量 val int i;//定義數(shù)字變量 i void setup() { pinMode(led,OUTP UT);// 定義 LED 為輸出接口 pinMode(F SR,INP UT);// 定義壓力傳感器為輸入接口 Serial.begin(9600);//設(shè)定波特率為 9600 } void loop() { val=analogRead(FSR);//度取壓力傳感器的模擬值并將其賦給變量 val
analogWrit e(led,val);//將 val 的值賦給 LED 接口 Serial.pr intln(val);打印 val 的模擬值
}
Arduino 應(yīng) 用高 級(jí) 篇
- RB URF v1.1 超聲波傳感器
- RB URF v1.1 超聲波傳感器是機(jī)器人領(lǐng)域最常用的測(cè)距避障模塊。其可用來(lái)檢測(cè)對(duì)方機(jī)器人的有無(wú)和距離。偵測(cè)距離可達(dá) 3cm 到 340cm,傳感器在有效探測(cè)范圍內(nèi)自動(dòng)標(biāo)定,無(wú)需任何人工調(diào)整就可以獲得障礙物準(zhǔn)確的距離。令你的機(jī)器人像蝙蝠一樣通過(guò)聲納來(lái)感知周圍的環(huán)境,你只需要在單片機(jī)、BS2 微控制器或Arduino 微控制器中編寫一小段程序,就可以根據(jù)障礙物的距離精確的控制機(jī)器人的電機(jī)運(yùn)行,從而使你的機(jī)器人輕松地避開(kāi)障礙物。
- 超聲波的工作原理就像聲納一樣,通過(guò)發(fā)送器發(fā)出超聲波信號(hào),遇到物體反射回
來(lái)傳到接收器,然后計(jì)算反射回來(lái)所用的時(shí)間,即可計(jì)算距障礙物的距離。
- Arduino 與超聲波傳感器搭建電路進(jìn)行測(cè)距實(shí)驗(yàn)。Arduino Sensor Shield V5.0 傳感器擴(kuò)展板設(shè)有超聲波接口可直接接插使用,對(duì)應(yīng)發(fā)射和接收接口分別為模擬 0和模擬1,即數(shù)字 14 和數(shù)字 15 接口(模擬接口 0-5 可代替數(shù)字接口使用接口號(hào)對(duì)應(yīng)數(shù)字 14-19)。
- 編一個(gè)簡(jiǎn)單的測(cè)距程序,在 13 接口接一個(gè)小燈,使其當(dāng)測(cè)得距離大于 50 厘米時(shí)亮起。
- 例程源代碼:
int inputP in=4; // 定義超聲波信號(hào)接收接口 int outputP in=5; // 定義超聲波信號(hào)發(fā)出接口 int ledpin=13; void setup() { Serial.begin(9600); pinMode(ledpin,OUTPUT); pinMode(inputP in, INPUT); pinMode(outputP in, OUTPUT); }
void loop() { digitalWrite(outputPin, LOW); // 使發(fā)出發(fā)出超聲波信號(hào)接口低電平 2μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); // 使發(fā)出發(fā)出超聲波信號(hào)接口高電平 10μs,這里是至少 10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號(hào)接口低電平 int distance = pulseIn( inputP in, HIGH); // 讀出脈沖時(shí)間 distance= distance/58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米) Serial.pr intln(distance); //輸出距離值 delay(50); if (distance >=50)//如果距離大于 50 厘米小燈亮起 { digitalWrite(ledpin,HIGH);} else//如果距離小于 50 厘米小燈熄滅 { digit alWr ite(ledpin,LOW); } }
若想獲得更多關(guān)于超聲波傳感器方面的知識(shí)請(qǐng)點(diǎn)擊:超聲波測(cè)距原理及應(yīng)用實(shí)例
- Arduino 控制舵機(jī)
- 舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,主要是由外殼、電路板、無(wú)核心馬達(dá)、齒輪與位
置檢測(cè)器所構(gòu)成。其工作原理是由接收機(jī)或者單片機(jī)發(fā)出信號(hào)給舵機(jī),其內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為 20ms,寬度為 1.5ms 的基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。經(jīng)由電路板上的 IC 判斷轉(zhuǎn)動(dòng)方向,再驅(qū)動(dòng)無(wú)核心馬達(dá)開(kāi)始轉(zhuǎn)動(dòng),透過(guò)減速齒輪將動(dòng)力傳至擺臂,同時(shí)由位置檢測(cè)器送回信號(hào),判斷是否已經(jīng)到達(dá)定位。適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過(guò)級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為 0,電機(jī)停止轉(zhuǎn)動(dòng),一般舵機(jī)旋轉(zhuǎn)的角度范圍是 0°到 180°。
- 舵機(jī)有很多規(guī)格,但所有的舵機(jī)都有外接三根線,分別用棕、紅、橙三種顏色進(jìn)
行區(qū)分,由于舵機(jī)品牌不同,顏色也會(huì)有所差異,棕色為接地線,紅色為電源正極線,橙色為信號(hào)線。
- 舵機(jī)的轉(zhuǎn)動(dòng)的角度是通過(guò)調(diào)節(jié) PWM(脈沖寬度調(diào)制)信號(hào),就是占空比來(lái)實(shí)現(xiàn)的,標(biāo)準(zhǔn) PWM(脈沖寬度調(diào)制)信號(hào)的周期為 20ms(50Hz),理論上脈寬分布應(yīng)在 1ms到 2ms 之間,但是事實(shí)上脈寬可由 0.5ms 到 2.5ms 之間,脈寬和舵機(jī)的轉(zhuǎn)角 0°~180°相對(duì)應(yīng)。有一點(diǎn)值得注意的地方,由于舵機(jī)牌子不同,對(duì)于同一信號(hào),不同品牌的舵機(jī)旋轉(zhuǎn)的角度也會(huì)有所不同。
- 用 Arduino 控制舵機(jī)的方法有兩種,一種是通過(guò) Arduino 的普通數(shù)字傳感器接口產(chǎn)生占空比不同的方波,模擬產(chǎn)生 PWM 信號(hào)進(jìn)行舵機(jī)定位,第二種是直接利用 Arduino自帶的 S ervo 函數(shù)進(jìn)行舵機(jī)的控制,這種控制方法的優(yōu)點(diǎn)在于程序編寫簡(jiǎn)單,缺點(diǎn)是只能控制 2 路舵機(jī),因?yàn)?Arduino 自帶函數(shù)只提供了數(shù)字 9、 10 接口的控制。Arduino的 US B 接口供電功率有限,所以當(dāng)需要控制多個(gè)舵機(jī)時(shí)需要外接電源,Arduino S ensor Shield V5.0 傳感器擴(kuò)展板已將外接電源接口留出方便用戶使用。
控制方法一 將 RB-421 舵機(jī)接在 V5.0 傳感器擴(kuò)展板的數(shù)字 7 接口上
- 編寫一個(gè)程序讓舵機(jī)轉(zhuǎn)動(dòng)到用戶輸入數(shù)字所對(duì)應(yīng)的角度數(shù)的位置,并將角度值顯
示到 PC 屏幕上。
例程源程序 int servopin=7;//定義舵機(jī)接口數(shù)字接口 7 int myangle;/ /定義角度變量 int pulsewidth;//定義脈寬變量 int val; void servopulse(int servopin, int myangle) //定義一個(gè)脈沖函數(shù) { pulsewidth=(myangle*11)+500; //將角度轉(zhuǎn)化為 500-2480 的脈寬值 digitalWrite(servopin,HIGH); //將舵機(jī)接口電平至高
delayMicroseconds(pulsewidth); //延時(shí)脈寬值的微秒數(shù) digitalWrite(servopin,LOW); //將舵機(jī)接口電平至低 delay(20-pulsewidt h/1000); } void setup() { pinMode(servopin,OUTPUT);//設(shè)定舵機(jī)接口為輸出接口 Serial.begin(9600);//連接到串行端口,波特率為 9600 Serial.pr intln("servu=o_seral_simp le ready" ) ; } void loop() //將 0 到 9 的數(shù)轉(zhuǎn)化為 0 到 180 角度,并讓 LED 閃爍相應(yīng)數(shù)的次數(shù) { val=Ser ial.read();//讀取串行端口的值 if(val>'0'&&val<='9') { val=val-'0';//將特征量轉(zhuǎn)化為數(shù)值變量 val=val*(180/9); //將數(shù)字轉(zhuǎn)化為角度 Serial.print(" moving servo to "); Serial.print( val,DEC); Serial.println(); for(int i=0;i<=50; i++) //給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
} servopulse(servopin,val);//引用脈沖函數(shù) { } }
- 控制方法二
先具體分析一下 Arduino 自帶的 Servo 函數(shù)及其語(yǔ)句,來(lái)介紹一下舵機(jī)函數(shù)的幾個(gè) 常用語(yǔ)句吧。
- attach(接口)——設(shè)定舵機(jī)的接口,只有數(shù)字9或10接口可利用。
- wr ite(角度)——用于設(shè)定舵機(jī)旋轉(zhuǎn)角度的語(yǔ)句,可設(shè)定的角度范圍是0°到180°。
- read()——用于讀取舵機(jī)角度的語(yǔ)句,可理解為讀取最后一條 write()命令中的值。
- attached()——判斷舵機(jī)參數(shù)是否已發(fā)送到舵機(jī)所在接口。
- detach()——使舵機(jī)與其接口分離,該接口(數(shù)字9或10接口)可繼續(xù)被用作 PWM
接口。 注:以上語(yǔ)句的書寫格式均為“舵機(jī)變量名.具體語(yǔ)句()”例如:myservo.attach(9)。 將 RB-421 舵機(jī)接在傳感器擴(kuò)展板 V5.0 的數(shù)字 9 接口上。
例程源代碼:
- include <Servo.h>
// 定 義 頭 文件 , 這 里 有一 點(diǎn) 要 注意 , 可 以 直接 在
Arduino
軟 件菜 單 欄 單擊
Sketch>Importlibrary>S ervo, 調(diào)用 Servo 函數(shù),也可以直接輸入#include <Servo.h>,但是在 輸入時(shí)要注意在#include 與<Servo.h>之間要有空格,否則編譯時(shí)會(huì)報(bào)錯(cuò)。 Servo myservo;//定義舵機(jī)變量名 void setup() { myservo.attach(9);//定義舵機(jī)接口,9或10 } void loop() { myservo.write(90);//設(shè)置舵機(jī)旋轉(zhuǎn)的角度 }
- 我們?cè)谧鲆粋€(gè)小實(shí)驗(yàn),便于鞏固剛才所學(xué)的知識(shí),利用旋轉(zhuǎn)電位器傳感器模塊控
制 RB-421二自由度云臺(tái)運(yùn)動(dòng)姿態(tài)。
- 這里我們采用上述介紹的控制方法二,相比之下在不多于兩個(gè)舵機(jī)的情況下方法
二還是不錯(cuò)的選擇。我們將 RB-421二自由度云臺(tái)接到 Arduino 的數(shù)字9和10接口。將外接電源接到傳感器擴(kuò)展板 V5.0的紅色端子處,在模擬3和4號(hào)接口接入兩個(gè)旋轉(zhuǎn)電位器傳感器模塊。
例程源程序:
#include <Servo.h> S ervo myservo; S ervo myservo1; int analogP in = 3; int analogP in1 = 4; int val,val1; void setup() { myservo.attach(9) ; // 9 號(hào)引腳輸出電機(jī)控制信號(hào) myservo1.attach(10); S erial.begin(9600); //僅能使用 9、10 號(hào)引腳 } void loop() { S erial.print("servo:");
S erial.println(val); delay(15); S erial.print("servo1:"); Serial.pr int ln(val1); val = analogRead(analogPin); val1 = analogRead(analogPin1); // 讀取來(lái)自可變電阻的模擬值(0 到 1023 之間) val = map(val, 0, 1023, 0, 179); // 利用“map”函數(shù)縮放該值,得到伺服電機(jī)需要的角度(0 到 180 之間) val1 = map(val1, 0, 1023, 0, 179); myservo.write(val);// 設(shè)定伺服電機(jī)的位置 myservo1.write(val1); delay(15); // 等待電機(jī)旋轉(zhuǎn)到目標(biāo)角度 }
- MMA7260 三軸加速度計(jì)
- 此款三軸加速度傳感器采用
Freescale(飛思卡爾)公司生產(chǎn)性價(jià)比高微型電容式加速度傳感器 MMA7260 芯片。其采用了信號(hào)調(diào)理、單級(jí)低通濾波器和溫度補(bǔ)償技術(shù),并且提供了 4 個(gè)靈敏度量程選擇的接口和休眠模式接口,該產(chǎn)品帶有低通濾波并已作零 g 補(bǔ)償,化金工藝加工,用料上乘,可靠保證,體積小、重量輕,標(biāo)識(shí)符清晰簡(jiǎn)明,接線容易,防止接線錯(cuò)誤造成硬件損壞,可通過(guò) 7 彩跳線連接,插于 Mini 面包板上,通過(guò) Arduino 控制器編程,是制作傾角、運(yùn)動(dòng)、姿態(tài)檢測(cè)互動(dòng)作品的理想之選。
- 編寫一段程序采集三軸加速度計(jì) X、Y、Z 軸的輸出模擬值,通過(guò) Arduino 控制器串口回傳到 PC 屏幕上顯示。
例程源代碼:
int xpin=3; int ypin=4; int zpin=5; int n; int m; int i; void setup() { Serial.begin(9600); }
void loop() { n=analogRead(xpin); m=analogRead(ypin); i=analogRead(zpin); S erial.print("x="); S erial.println(n); S erial.print("y="); S erial.println(m); S erial.print("z="); S erial.println(i); }
更詳盡的使用方法和應(yīng)用實(shí)例,請(qǐng)參見(jiàn) MMA7260 三軸加速度計(jì)使用手冊(cè)。
- LCD 1602 Keypad Shield v2.0
- Arduino LCD1602 字符液晶擴(kuò)展板 v2.0 主板采用全新優(yōu)質(zhì) 2 行 16 個(gè)字符液晶,不僅具有對(duì)比度調(diào)節(jié)旋鈕、背光燈選擇開(kāi)關(guān),還具 4 個(gè)方向按鍵、1 個(gè)選擇按鍵和一個(gè)復(fù)位按鍵;4 個(gè)傳感器模擬接口、RB URF v1.1 超聲波傳感器接口、藍(lán)牙模塊接口、APC220無(wú)線數(shù)傳模塊通信接口、獨(dú)立擴(kuò)出更加易用方便。對(duì)Arduino 初學(xué)者來(lái)說(shuō),不必為繁瑣復(fù)雜液晶驅(qū)動(dòng)電路連線而頭疼了,這款 1602 液晶擴(kuò)展板真正意義上的將電路簡(jiǎn)化,直接將此板插到 Arduino Duemilanove 控制器上即可,傳感器也僅需一根通用 3P 傳感器連接線連接,可輕松實(shí)現(xiàn)傳感器數(shù)據(jù)的記錄顯示。
英文字符顯示清晰
可制作無(wú)線藍(lán)牙超聲波測(cè)距儀
- 下面我們做個(gè)按鍵選擇顯示功能的實(shí)驗(yàn),需要用到的設(shè)備有 Arduino 控制器、
LCD1602 液晶擴(kuò)展板和 USB 數(shù)據(jù)線,測(cè)試?yán)淘创a:
#include <LCD4Bit_mod.h> LCD4Bit_mod lcd = LCD4Bit_mod(2); char msgs[5][15] = {"Right Key OK ", "Up Key OK ", "Down Key OK ", "Left Key OK ", "Select Key OK" }; int adc_key_val[5] ={30, 150, 360, 535, 760 }; int NUM_KEYS = 5; int adc_key_in; int key=-1;
int oldkey=-1; void setup() { pinMode(13, OUTPUT); lcd.init(); lcd.clear(); lcd.printIn("KEYPAD testing... pressing"); } void loop() { adc_key_in = analogRead(0); digitalWrite(13, HIGH); key = get_key(adc_key_in); if (key != oldkey) { delay(50); adc_key_in = analogRead(0); key = get_key(adc_key_in); if (key != oldkey) { oldkey = key; if (key >=0){ lcd.cursorTo(2, 0); lcd.printIn(msgs[key]); } } }
digitalWrite(13, LOW); int get_key(unsigned int input) { int k; for (k = 0; k < NUM_KEYS; k++) { if (input < adc_key_val[k]) { return k; } } if (k >= NUM_KEYS) k = -1; return k; }
Arduino 驅(qū)動(dòng)控制 1602 液晶屏操作視頻請(qǐng)點(diǎn)擊: http:/ /v.youku.com/v_show/id_XMTc3ODY3Mzg0.html