本篇將介紹有關(guān)LED燈的四個不同類型的實驗
實驗一:閃爍的LED
實驗材料:
- Nano開發(fā)板
- 配套USB數(shù)據(jù)線
- 一個LED燈
- 一個470Ω的電阻
- 若干導(dǎo)線
電路連接圖:
把LED和電阻插入面包板, LED燈的負(fù)極連接Nano板的GND引腳惧辈,LED的正極連入電阻的一端滤港,電阻的另一端接入nano板的A5引腳粟按。
為何本實驗需要串聯(lián)一個電阻羽德?
我們所購買的LED燈最大電流只允許20毫安静暂,能夠承受的電壓范圍在2.0-2.2之間尿背,當(dāng)其電壓超過其所承受范圍時了讨,LED燈通過的電流就會快速上升沛鸵,很容易造成LED燈的損壞,因此需要串聯(lián)進(jìn)一個合適的分壓電阻才能保證LED燈的正常工作灯谣,這樣就可以保證即使供電電壓出現(xiàn)小幅度的波動時潜秋,LED燈仍可以正常工作。
編寫代碼:
新建sketch胎许,拷貝如下代碼替換自動生成的代碼并進(jìn)行保存峻呛。
int pin=A5;//LED的管腳
void setup(){
pinMode(pin,OUTPUT);//設(shè)置管腳為輸出模式
}
void loop() {
digitalWrite(pin,1);//向管腳寫入1,設(shè)置為高電平辜窑,則LED燈亮
}
連接開發(fā)板钩述,設(shè)置好對應(yīng)端口號和開發(fā)板類型,進(jìn)行程序下載穆碎。
實驗現(xiàn)象
LED燈亮起
再寫個程序讓它閃爍吧
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毫秒
}
連接開發(fā)板所禀,設(shè)置好對應(yīng)端口號和開發(fā)板類型方面,進(jìn)行程序下載放钦。
實驗現(xiàn)象
LED燈閃爍(亮一秒,暗一秒)
函數(shù)講解
-delay函數(shù):
- 暫停程序指定為參數(shù)的時間量(以毫秒為單位)恭金。(一秒鐘內(nèi)有1000毫秒)
- 句法:delay(ms)
- 參數(shù):ms:暫停的毫秒數(shù)
實驗二:按鍵控制LED燈
前面介紹了如何使LED閃爍操禀,下面我們來看一下,通過檢測按鍵狀態(tài)來控制LED燈亮滅横腿,把LED的亮滅變成人為可控制的床蜘。
實驗材料:
- Nano開發(fā)板
- 配套USB數(shù)據(jù)線
- 一個LED燈
- 一個470Ω的電阻
-2個按鈕 -
若干杜邦線
實驗中我們用到了輕觸按鍵,常見的有2腳按鍵和4腳按鍵蔑水,其內(nèi)部結(jié)構(gòu)如下圖所示:
按鈕圖
當(dāng)按下按鍵時邢锯,按鍵兩端接通,當(dāng)放開時搀别,兩端再次斷開丹擎。
電路連接圖:
LED與電阻的接法與實驗一類似,將按鈕左右兩端連到A2與GND引腳上歇父。
編寫代碼
/*
* Digital_Button
* 通過按鍵控制LED燈亮滅
*/
int buttonPin = A2; // 按鍵的管腳定義
int ledPin = 9; // LED燈管腳定義
int buttonState = 0; // 存儲按鍵狀態(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); // 點亮LED
}
else {
digitalWrite(ledPin, LOW); // 熄滅LED
}
連接開發(fā)板,設(shè)置好對應(yīng)端口號和開發(fā)板類型榜苫,進(jìn)行程序下載护戳。
實驗現(xiàn)象
按下按鍵,LED燈點亮垂睬。放開按鍵媳荒,LED燈熄滅。
小貼士
- 由于Arduino上電后驹饺,數(shù)字I/O管腳處于懸空狀態(tài)钳枕,此時通過digitalRead()讀到的是一個不穩(wěn)定的值(可能是高,也可能是低)赏壹。所以通過pinMode()函數(shù)設(shè)置按鍵引腳為上拉輸入模式(INPUT_PULLUP)鱼炒。
通俗的說:上拉電阻(pullup resistor),目的是使在斷路的時候,這一點變成高電壓(5V)蝌借。當(dāng)變成通路的時候昔瞧,電壓就會降下來。- 按鍵在按下的過程中菩佑,有一段接觸未接觸的不穩(wěn)定過程自晰,即按鍵的抖動。在判斷按鍵狀態(tài)時擎鸠,通過delay()延時跳過抖動的不穩(wěn)定狀態(tài).
實驗三LED燈的減弱增強
本實驗通過PWM脈寬調(diào)制來控制LED燈亮度缀磕。
由已學(xué)的PWM知識可知:
在我們的Nano開發(fā)板上,第3劣光、5袜蚕、6、9绢涡、10牲剃、11引腳具有PWM功能。
通過使用analogWrtie()函數(shù)雄可,在指定的引腳上通過高低電平的不斷轉(zhuǎn)換輸出一個周期固定的方波凿傅,通過改變高低電平的占空比,進(jìn)而得到不同的電壓輸出数苫。
電路連接圖:
編寫代碼
新建sketch聪舒,拷貝如下代碼替換自動生成的代碼并進(jìn)行保存
int ledPin = 9;
void setup ()
{
pinMode(ledPin,OUTPUT);
}
void loop()
{
for (int a=0; a<=255;a++) //循環(huán)語句,控制PWM亮度的增加
{
analogWrite(ledPin,a);
delay(8); //當(dāng)前亮度級別維持的時間,單位毫秒
}
for (int a=255; a>=0;a--) //循環(huán)語句虐急,控制PWM亮度減小
{
analogWrite(ledPin,a);
delay(8); //當(dāng)前亮度的維持的時間,單位毫秒
}
}
連接開發(fā)板箱残,設(shè)置好對應(yīng)端口號和開發(fā)板類型,進(jìn)行程序下載止吁。
實驗現(xiàn)象:
LED燈由亮變暗被辑,又由暗變亮
函數(shù)講解:
analogWrite()
- 功能:analogWrite()實現(xiàn)對引腳設(shè)置PWM的要求【吹耄可以被用來控制LED等盼理,電機轉(zhuǎn)動,舵機等俄删。
- 句法:analogWrite(pin,value)
- 參數(shù):pin:寫入的引腳宏怔;value:占空比,在0~255之間畴椰。(0時候為關(guān)举哟,即LOW;255為開迅矛,即HIGH)
- 無返回值
- 使用analogWrite()不需要再用pinMode()設(shè)置引腳為輸出妨猩。
小貼士:
程序中使用analogWrite()函數(shù),通過兩個for循環(huán)秽褒,逐漸改變輸出PWM占空比壶硅,進(jìn)而改變LED燈的亮度。兩個for循環(huán)中都有延時語句销斟。
實驗四(高能實驗):流水LED
本實驗講解:多個LED依次點亮并以此熄滅的狀態(tài)
實驗材料:
- Nano開發(fā)板
- 配套USB數(shù)據(jù)線
- 5個LED燈
- 5個470Ω的電阻
- 若干杜邦線
電路連接圖:
5個LED燈的負(fù)極連接到開發(fā)板的GND引腳庐椒,正極分別連接限流電阻連接到開發(fā)板的數(shù)字I/O引腳。
實物連接圖:
編寫代碼:
int delayTime = 200;
int ledPin;
void setup()
{
for (ledPin = 2; ledPin < 7; ledPin++) //依次設(shè)置2-6個數(shù)字引腳為輸出模式
{
pinMode(ledPin, OUTPUT); //設(shè)置第ledPin個引腳為輸出模式
}
}
void loop()
{
for (ledPin = 2; ledPin < 7; ledPin++) //每隔delayTime依次點亮2~6引腳相連的led燈
{
digitalWrite(ledPin, HIGH); //點亮ledPin引腳相連的led燈
delay(delayTime);//延時delayTime
}
for (ledPin = 6; ledPin > 1; ledPin--) //每隔delayTime依次熄滅6~2引腳相連的led燈
{
digitalWrite(ledPin, LOW); //熄滅ledPin引腳相連的led燈
delay(delayTime);//延時delayTime
}
}
連接開發(fā)板蚂踊,設(shè)置好對應(yīng)端口號和開發(fā)板類型约谈,進(jìn)行程序下載。
實驗現(xiàn)象:
五個LED燈依次點亮,又依次熄滅棱诱,如此往復(fù)循環(huán)泼橘。
小貼士:
- 在setup部分通過for循環(huán)將2 ~ 6號引腳設(shè)置為輸出模式。在loop部分迈勋,通過兩個for循環(huán)依次點亮2 ~ 6號LED燈炬灭,依次熄滅6 ~ 2號LED燈,使用的依然是digitalWrite函數(shù)靡菇。
- 延時時間定義為200重归,你可以改變它來控制流動速度。