本篇將介紹有關(guān)LED燈的四個(gè)不同類(lèi)型的實(shí)驗(yàn)
實(shí)驗(yàn)一:閃爍的LED
實(shí)驗(yàn)材料:
- Nano開(kāi)發(fā)板
- 配套USB數(shù)據(jù)線
- 一個(gè)LED燈
- 一個(gè)470Ω的電阻
- 若干導(dǎo)線
電路連接圖:

把LED和電阻插入面包板, LED燈的負(fù)極連接Nano板的GND引腳,LED的正極連入電阻的一端,電阻的另一端接入nano板的A5引腳。
為何本實(shí)驗(yàn)需要串聯(lián)一個(gè)電阻?
我們所購(gòu)買(mǎi)的LED燈最大電流只允許20毫安,能夠承受的電壓范圍在2.0-2.2之間,當(dāng)其電壓超過(guò)其所承受范圍時(shí),LED燈通過(guò)的電流就會(huì)快速上升,很容易造成LED燈的損壞,因此需要串聯(lián)進(jìn)一個(gè)合適的分壓電阻才能保證LED燈的正常工作,這樣就可以保證即使供電電壓出現(xiàn)小幅度的波動(dòng)時(shí),LED燈仍可以正常工作。
編寫(xiě)代碼:
新建sketch,拷貝如下代碼替換自動(dòng)生成的代碼并進(jìn)行保存。
int pin=A5;//LED的管腳
void setup(){
pinMode(pin,OUTPUT);//設(shè)置管腳為輸出模式
}
void loop() {
digitalWrite(pin,1);//向管腳寫(xiě)入1,設(shè)置為高電平,則LED燈亮
}
連接開(kāi)發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開(kāi)發(fā)板類(lèi)型,進(jìn)行程序下載。

實(shí)驗(yàn)現(xiàn)象
LED燈亮起
再寫(xiě)個(gè)程序讓它閃爍吧
int pin=A5;//連接LEDA5引腳
void setup(){
pinMode(pin,OUTPUT);//設(shè)置管腳為輸出模式
}
void loop(){
digitalWrite(pin,HIGH);//將管腳設(shè)置為高電平,則LED燈亮
delay(1000);//等待1000毫秒
digitalWrite(pin,LOW);//將管腳設(shè)置為低電平,則LED燈滅
delay(1000);//等待1000毫秒
}
連接開(kāi)發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開(kāi)發(fā)板類(lèi)型,進(jìn)行程序下載。

實(shí)驗(yàn)現(xiàn)象
LED燈閃爍(亮一秒,暗一秒)
函數(shù)講解
-delay函數(shù):
- 暫停程序指定為參數(shù)的時(shí)間量(以毫秒為單位)。(一秒鐘內(nèi)有1000毫秒)
- 句法:delay(ms)
- 參數(shù):ms:暫停的毫秒數(shù)
實(shí)驗(yàn)二:按鍵控制LED燈
前面介紹了如何使LED閃爍,下面我們來(lái)看一下,通過(guò)檢測(cè)按鍵狀態(tài)來(lái)控制LED燈亮滅,把LED的亮滅變成人為可控制的。
實(shí)驗(yàn)材料:
- Nano開(kāi)發(fā)板
- 配套USB數(shù)據(jù)線
- 一個(gè)LED燈
- 一個(gè)470Ω的電阻
-2個(gè)按鈕 -
若干杜邦線
實(shí)驗(yàn)中我們用到了輕觸按鍵,常見(jiàn)的有2腳按鍵和4腳按鍵,其內(nèi)部結(jié)構(gòu)如下圖所示:
按鈕圖
當(dāng)按下按鍵時(shí),按鍵兩端接通,當(dāng)放開(kāi)時(shí),兩端再次斷開(kāi)。
電路連接圖:

LED與電阻的接法與實(shí)驗(yàn)一類(lèi)似,將按鈕左右兩端連到A2與GND引腳上。
編寫(xiě)代碼
/*
* Digital_Button
* 通過(guò)按鍵控制LED燈亮滅
*/
int buttonPin = A2; // 按鍵的管腳定義
int ledPin = 9; // LED燈管腳定義
int buttonState = 0; // 存儲(chǔ)按鍵狀態(tài)值
void setup() {
pinMode(ledPin, OUTPUT); //設(shè)置LED管腳輸出模式
pinMode(buttonPin, INPUT_PULLUP); //設(shè)置按鍵管腳上拉輸入模式
}
void loop() {
buttonState = digitalRead(buttonPin);// 檢查按鍵是否被按下
if (buttonState == HIGH) //如果按鍵按下,那buttonState應(yīng)該為高電平
{
digitalWrite(ledPin, HIGH); // 點(diǎn)亮LED
}
else {
digitalWrite(ledPin, LOW); // 熄滅LED
}
連接開(kāi)發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開(kāi)發(fā)板類(lèi)型,進(jìn)行程序下載。

實(shí)驗(yàn)現(xiàn)象
按下按鍵,LED燈點(diǎn)亮。放開(kāi)按鍵,LED燈熄滅。
小貼士
- 由于Arduino上電后,數(shù)字I/O管腳處于懸空狀態(tài),此時(shí)通過(guò)digitalRead()讀到的是一個(gè)不穩(wěn)定的值(可能是高,也可能是低)。所以通過(guò)pinMode()函數(shù)設(shè)置按鍵引腳為上拉輸入模式(INPUT_PULLUP)。
通俗的說(shuō):上拉電阻(pullup resistor),目的是使在斷路的時(shí)候,這一點(diǎn)變成高電壓(5V)。當(dāng)變成通路的時(shí)候,電壓就會(huì)降下來(lái)。- 按鍵在按下的過(guò)程中,有一段接觸未接觸的不穩(wěn)定過(guò)程,即按鍵的抖動(dòng)。在判斷按鍵狀態(tài)時(shí),通過(guò)delay()延時(shí)跳過(guò)抖動(dòng)的不穩(wěn)定狀態(tài).
實(shí)驗(yàn)三LED燈的減弱增強(qiáng)
本實(shí)驗(yàn)通過(guò)PWM脈寬調(diào)制來(lái)控制LED燈亮度。
由已學(xué)的PWM知識(shí)可知:
在我們的Nano開(kāi)發(fā)板上,第3、5、6、9、10、11引腳具有PWM功能。
通過(guò)使用analogWrtie()函數(shù),在指定的引腳上通過(guò)高低電平的不斷轉(zhuǎn)換輸出一個(gè)周期固定的方波,通過(guò)改變高低電平的占空比,進(jìn)而得到不同的電壓輸出。
電路連接圖:

編寫(xiě)代碼
新建sketch,拷貝如下代碼替換自動(dòng)生成的代碼并進(jìn)行保存
int ledPin = 9;
void setup ()
{
pinMode(ledPin,OUTPUT);
}
void loop()
{
for (int a=0; a<=255;a++) //循環(huán)語(yǔ)句,控制PWM亮度的增加
{
analogWrite(ledPin,a);
delay(8); //當(dāng)前亮度級(jí)別維持的時(shí)間,單位毫秒
}
for (int a=255; a>=0;a--) //循環(huán)語(yǔ)句,控制PWM亮度減小
{
analogWrite(ledPin,a);
delay(8); //當(dāng)前亮度的維持的時(shí)間,單位毫秒
}
}
連接開(kāi)發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開(kāi)發(fā)板類(lèi)型,進(jìn)行程序下載。

實(shí)驗(yàn)現(xiàn)象:
LED燈由亮變暗,又由暗變亮


函數(shù)講解:
analogWrite()
- 功能:analogWrite()實(shí)現(xiàn)對(duì)引腳設(shè)置PWM的要求??梢员挥脕?lái)控制LED等,電機(jī)轉(zhuǎn)動(dòng),舵機(jī)等。
- 句法:analogWrite(pin,value)
- 參數(shù):pin:寫(xiě)入的引腳;value:占空比,在0~255之間。(0時(shí)候?yàn)殛P(guān),即LOW;255為開(kāi),即HIGH)
- 無(wú)返回值
- 使用analogWrite()不需要再用pinMode()設(shè)置引腳為輸出。
小貼士:
程序中使用analogWrite()函數(shù),通過(guò)兩個(gè)for循環(huán),逐漸改變輸出PWM占空比,進(jìn)而改變LED燈的亮度。兩個(gè)for循環(huán)中都有延時(shí)語(yǔ)句。
實(shí)驗(yàn)四(高能實(shí)驗(yàn)):流水LED
本實(shí)驗(yàn)講解:多個(gè)LED依次點(diǎn)亮并以此熄滅的狀態(tài)
實(shí)驗(yàn)材料:
- Nano開(kāi)發(fā)板
- 配套USB數(shù)據(jù)線
- 5個(gè)LED燈
- 5個(gè)470Ω的電阻
- 若干杜邦線
電路連接圖:

5個(gè)LED燈的負(fù)極連接到開(kāi)發(fā)板的GND引腳,正極分別連接限流電阻連接到開(kāi)發(fā)板的數(shù)字I/O引腳。
實(shí)物連接圖:

編寫(xiě)代碼:
int delayTime = 200;
int ledPin;
void setup()
{
for (ledPin = 2; ledPin < 7; ledPin++) //依次設(shè)置2-6個(gè)數(shù)字引腳為輸出模式
{
pinMode(ledPin, OUTPUT); //設(shè)置第ledPin個(gè)引腳為輸出模式
}
}
void loop()
{
for (ledPin = 2; ledPin < 7; ledPin++) //每隔delayTime依次點(diǎn)亮2~6引腳相連的led燈
{
digitalWrite(ledPin, HIGH); //點(diǎn)亮ledPin引腳相連的led燈
delay(delayTime);//延時(shí)delayTime
}
for (ledPin = 6; ledPin > 1; ledPin--) //每隔delayTime依次熄滅6~2引腳相連的led燈
{
digitalWrite(ledPin, LOW); //熄滅ledPin引腳相連的led燈
delay(delayTime);//延時(shí)delayTime
}
}
連接開(kāi)發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開(kāi)發(fā)板類(lèi)型,進(jìn)行程序下載。

實(shí)驗(yàn)現(xiàn)象:
五個(gè)LED燈依次點(diǎn)亮,又依次熄滅,如此往復(fù)循環(huán)。
小貼士:
- 在setup部分通過(guò)for循環(huán)將2 ~ 6號(hào)引腳設(shè)置為輸出模式。在loop部分,通過(guò)兩個(gè)for循環(huán)依次點(diǎn)亮2 ~ 6號(hào)LED燈,依次熄滅6 ~ 2號(hào)LED燈,使用的依然是digitalWrite函數(shù)。
- 延時(shí)時(shí)間定義為200,你可以改變它來(lái)控制流動(dòng)速度。
