Arduino基礎(chǔ)入門篇10—電位器控制LED燈

本篇介紹Arduino模擬輸入功能,通過(guò)讀取電位器輸入的電壓值來(lái)控制LED燈的亮度。

模擬輸入引腳是帶有ADC(Analog-to-Digital Converter,模數(shù)轉(zhuǎn)換器)功能的引腳。它可以將外部輸入的模擬信號(hào)轉(zhuǎn)換為芯片運(yùn)算時(shí)可以識(shí)別的數(shù)字信號(hào),從而實(shí)現(xiàn)讀入模擬值的功能。

Arduino 模擬輸入功能有10位精度,即可以將0~5V的電壓信號(hào)轉(zhuǎn)換為0~1024的整數(shù)形式表示。

我們通過(guò)使用analogRead() 函數(shù)讀取電位器輸入的電壓值,然后通過(guò)analogWrite()函數(shù)來(lái)控制LED燈亮度。

1. 實(shí)驗(yàn)材料

  • Uno R3開發(fā)板
  • 配套USB數(shù)據(jù)線
  • 面包板及配套連接線
  • 1個(gè)LED燈
  • 1個(gè)220Ω限流電阻
  • 1個(gè)電位器

電位器是一個(gè)可調(diào)的電阻,其原理如下圖所示:

電位器原理圖

通過(guò)旋轉(zhuǎn)旋鈕改變2號(hào)腳位置,從而改變2號(hào)腳到兩端的阻值。實(shí)驗(yàn)中將1腳和3腳分別接到開發(fā)板的5V的GND,再通過(guò)模擬輸入引腳A0來(lái)讀取電位器2號(hào)腳分得的電壓,其范圍在0V和5V之間。

2. 實(shí)驗(yàn)步驟

  1. 根據(jù)原理圖搭建電路。

    直插LED燈正極連接限流電阻,電阻另一端連接開發(fā)板第10引腳,LED燈負(fù)極接開發(fā)板GND。電位器1號(hào)腳和3號(hào)腳分別連接開發(fā)板5V和GND,2號(hào)腳連接開發(fā)板A0引腳。

    實(shí)驗(yàn)原理圖如下圖所示:

    實(shí)驗(yàn)原理圖

    實(shí)物連接圖如下圖所示:

    實(shí)物連接圖
  2. 新建sketch,拷貝如下代碼替換自動(dòng)生成的代碼并進(jìn)行保存。

     /*
        AnalogRead
        通過(guò)電位器改變LED燈亮度
     */
     
     int ledPin = 10;
     
     int readValue = 0; //保存讀到的模擬值
     int ledValue = 0;  //保存LED燈占空比
     
     void setup()
     {
       pinMode(ledPin, OUTPUT);     //數(shù)字口要選擇帶~號(hào)的具有pwm功能的輸出口
     }
     
     void loop()
     {
       readValue = analogRead(A0);     //讀取A0模擬口的數(shù)值(0-5V 對(duì)應(yīng) 0-1204取值)
       ledValue = map(readValue, 0, 1024, 0, 255); //將0到1024之間的數(shù)據(jù)映射成0到255之間的數(shù)據(jù)
       analogWrite(ledPin, ledValue);   //PWM最大取值255  
     }   
    
  3. 連接開發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開發(fā)板類型,進(jìn)行程序下載。

    程序下載

3. 實(shí)驗(yàn)現(xiàn)象

通過(guò)旋轉(zhuǎn)電位器旋鈕,LED燈亮度改變。

實(shí)驗(yàn)現(xiàn)象

4. 函數(shù)介紹

analogRead()

  • 描述:讀取指定模擬引腳的值。
  • 函數(shù)原型:analogRead(pin)
  • 參數(shù):模擬輸入引腳。
  • 返回值:0到1024之間的整數(shù)。

map()

  • 描述:將數(shù)據(jù)從一個(gè)范圍映射到另一個(gè)范圍。
  • 函數(shù)原型:map(value, fromLow, fromHigh, toLow, toHigh)
  • 參數(shù):
    • value: 要映射的數(shù)據(jù)
    • fromLow: 當(dāng)前范圍的下限值。
    • formHigh: 當(dāng)前范圍的上限值。
    • toLow: 目標(biāo)范圍的下限值。
    • toHigh: 目標(biāo)范圍的上限值。
  • 返回值:重新映射后的數(shù)據(jù)。

5. 實(shí)驗(yàn)分析

程序中通過(guò)analogRead()函數(shù)來(lái)讀取模擬輸入值,這個(gè)輸入值的范圍是0到1024之間,然后通過(guò)analogWrite()函數(shù)來(lái)改變LED燈占空比,占空比的范圍是0到255之間。通過(guò)使用map()函數(shù)將范圍做了重新映射。

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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