本篇介紹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)步驟
-
根據(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í)物連接圖 -
新建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 } -
連接開發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開發(fā)板類型,進(jìn)行程序下載。
程序下載
3. 實(shí)驗(yàn)現(xiàn)象
通過(guò)旋轉(zhuǎn)電位器旋鈕,LED燈亮度改變。

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ù)將范圍做了重新映射。


