四種LED燈實(shí)驗(yàn)匯總

本篇將介紹有關(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)行程序下載。


上傳圖.png
實(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燈由亮變暗,又由暗變亮


亮.jpg
暗.jpg
函數(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í)物連接圖:
實(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)速度。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容