|
按鍵控制LED實(shí)驗(yàn) I/O 口的意思即為INPUT 接口和OUTPUT 接口,到目前為止我們設(shè)計(jì)的小燈實(shí)驗(yàn)都還只是應(yīng)用到Arduino 的I/O 口的輸出功能,這個實(shí)驗(yàn)我們來嘗試一下使用Arduino的I/O 口的輸入功能即為讀取外接設(shè)備的輸出值,我們用一個按鍵和一個LED 小燈完成一個輸入輸出結(jié)合使用的實(shí)驗(yàn),讓大家能簡單了解I/O 的作用。按鍵開關(guān)大家都應(yīng)該比較了解,屬于開關(guān)量(數(shù)字量)元件,按下時為閉合(導(dǎo)通)狀態(tài)。完成本實(shí)驗(yàn)要 用到的元件如下: 按鍵開關(guān)*1 file:///C:\Users\juli\AppData\Local\Temp\ksohtml\wps8021.tmp.png 紅色M5 直插LED*1 220Ω電阻*1 10KΩ電阻*1 面包板*1 面包板跳線*1 扎 我們將按鍵接到數(shù)字7 接口,紅色小燈接到數(shù)字11 接口(Arduino 控制器0-13 數(shù)字I/O 接口都可以用來接按鍵和小燈,但是盡量不選擇0 和1 接口,0 和1 接口為接口功能復(fù)用,除I/O 口功能外也是串口通信接口,下載程序時屬于與PC 機(jī)通信故應(yīng)保持0 和1 接口懸空,所以為避免插拔線的麻煩盡量不選用0 和1 接口),按下面的原理圖連接好電路。 file:///C:\Users\juli\AppData\Local\Temp\ksohtml\wps8031.tmp.png file:///C:\Users\juli\AppData\Local\Temp\ksohtml\wps8032.tmp.png 實(shí)物連接圖: file:///C:\Users\juli\AppData\Local\Temp\ksohtml\wps8033.tmp.jpg 下面開始編寫程序,我們就讓按鍵按下時小燈亮起,根據(jù)前面的學(xué)習(xí)相信這個程序很容易就能編寫出來,相對于前面幾個實(shí)驗(yàn)這個實(shí)驗(yàn)的程序中多加了一條條件判斷語句,這里我們使用if 語句,Arduino 的程序便寫語句是基于C 語言的,所以C 的條件判斷語句自然也適用于Arduino,像while、swich 等等。這里根據(jù)個人喜好我們習(xí)慣 于使用簡單易于理解的if 語句給大家做演示例程。 我們分析電路可知當(dāng)按鍵按下時,數(shù)字7 接口可讀出為高電平,這時我們使數(shù)字11 口輸出高電平可使小燈亮起,程序中我們判斷數(shù)字7 口是否為低電平,要為低電平使數(shù)字11 口輸出也為低電平小燈不亮,原理同上。 參考源程序: int ledpin=11;//定義數(shù)字11 接口 int inpin=7;//定義數(shù)字7 接口 int val;//定義變量val void setup() { pinMode(ledpin,OUTPUT);//定義小燈接口為輸出接口 pinMode(inpin,INPUT);//定義按鍵接口為輸入接口 } void loop() { val=digitalRead(inpin);//讀取數(shù)字7 口電平值賦給val if(val==LOW)//檢測按鍵是否按下,按鍵按下時小燈亮起 { digitalWrite(ledpin,LOW);} else { digitalWrite(ledpin,HIGH);} } ////////////////////////////////////////////// 實(shí)驗(yàn)結(jié)果,及其現(xiàn)象:當(dāng)按鍵按下時,LED亮,按鍵沒有按下時,LED不亮。 下載完程序我們本次的小燈配合按鍵的實(shí)驗(yàn)就完成了,本實(shí)驗(yàn)的原理很簡單,廣泛被用于各種電路和電器中,實(shí)際生活中大家也不難在各種設(shè)備上發(fā)現(xiàn),例如大家的手機(jī)當(dāng)按下任一按鍵時背光燈就會亮起,這就是典型應(yīng)用了。你可以把LED當(dāng)成繼電器,就可以控制220v電燈啦!
|