久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

基礎(chǔ)教程2 Arduino 讓多個(gè)LED 炫酷地閃

 龍之吻6iinxl8c 2018-06-13

我是潘,,曾經(jīng)是個(gè)工程師。這是為Ardui.Co 寫的專欄,。上一課,,你已經(jīng)了解Arduino 的基本工作原理,并且學(xué)會(huì)了控制一個(gè)燈,,但覺得不夠酷,?Arduino Uno 有13個(gè) DIGITAL I/O 端口,可以同時(shí)控制13個(gè) LED,。而且 Arduino 還可以通過 I2C,、SPI 等協(xié)議擴(kuò)展,控制幾百個(gè) LED 都不成問題,,但擴(kuò)展我們后面再講,,現(xiàn)在先演示一下怎樣控制多個(gè) LED 。

電路是這樣設(shè)計(jì)的:從第 8 個(gè) DIGITAL I/O 開始到第 13 個(gè),,每個(gè)端口串聯(lián)一個(gè)220歐姆的電阻和 LED,。其中,LED 正極(長(zhǎng)的一端)接電阻,,電阻再接I/O,,LED 負(fù)極接地(Arduino 上的 GND 端口)

基礎(chǔ)教程2 Arduino 讓多個(gè)LED 炫酷地閃

我們選用紅黃綠 3 種 LED,但每種顏色的 LED 壓降都不一樣,,紅色約 2.1V,,黃色2.4V、綠色2.7V,而 Arduino DIGITAL I/O 輸出高電平為 5V ,,這意味著串聯(lián)的電阻壓降不一樣,,三種 LED 通過電流大小不等,因此別奇怪它們的亮度不同,。

現(xiàn)在要讓 LED 按順序輪流點(diǎn)亮,,就是傳說中的跑馬燈效果,程序如下:

int del = 100; // 設(shè)置延時(shí),,100毫秒

void setup()

{

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

pinMode(10, OUTPUT);

pinMode(11, OUTPUT);

pinMode(12, OUTPUT);

pinMode(13, OUTPUT);

}

void loop()

{

digitalWrite(8, HIGH);

delay(del);

digitalWrite(8, LOW);

digitalWrite(9, HIGH);

delay(del);

digitalWrite(9, LOW);

digitalWrite(10, HIGH);

delay(del);

digitalWrite(10, LOW);

digitalWrite(11, HIGH);

delay(del);

digitalWrite(11, LOW);

digitalWrite(12, HIGH);

delay(del);

digitalWrite(12, LOW);

digitalWrite(13, HIGH);

delay(del);

digitalWrite(13, LOW);

}

看看效果:

基礎(chǔ)教程2 Arduino 讓多個(gè)LED 炫酷地閃

這程序很容易理解,,端口 8~13 設(shè)置為輸出模式,然后點(diǎn)亮一個(gè)就滅掉一個(gè),,而且也能很好工作,。只是重復(fù)代碼太多,6 個(gè) LED 好處理,,但如果有幾百個(gè) LED 呢,?

Arduino Uno 只有 32KB 程序空間,因此必須精簡(jiǎn)以節(jié)約空間,,這樣才能在以后容納更復(fù)雜的系統(tǒng),。我們將上述程序改成 for 循環(huán):

int del = 100; // 延時(shí)默認(rèn)為100毫秒

void setup()

{

// 初始化端口的模式為 OUTPUT

for (int i = 8; i <= 13="" ;="">

{

pinMode(i, OUTPUT);

}

}

void loop()

{

for (int i = 8; i <= 13;="">

{

digitalWrite(i, HIGH);

delay(del);

digitalWrite(i, LOW);

}

for (int i = 13; i >= 8; i--)

{

digitalWrite(i, HIGH);

delay(del);

digitalWrite(i, LOW);

}

}

IDE顯示,沒有優(yōu)化前,,程序占用1,270 字節(jié),,優(yōu)化后為 1,122 字節(jié),總空間的3%?,F(xiàn)在對(duì)于動(dòng)輒幾 TB 存儲(chǔ)空間的個(gè)人電腦來講,1KB 根本不足道,,但對(duì) Arduino ,,每一個(gè)字節(jié)都要精打細(xì)算。

現(xiàn)在我們讓它有更多的變化,,加入一個(gè)隨機(jī)函數(shù) random(),,讓跑馬燈循環(huán) 3 遍后,隨機(jī)點(diǎn)亮 3 個(gè),。

random(x) 函數(shù),,能夠在 0 ~ x(不包含最大值 x)的范圍內(nèi)隨機(jī)生成一個(gè)整數(shù),比如 random(256),,隨機(jī)生成 0 ~ 255 中的一個(gè)整數(shù),,再如 random(10, 20),隨機(jī)生成 10 ~ 19 中的一個(gè)整數(shù),。

void loop(),,本身已經(jīng)是個(gè)循環(huán),我們要在里面嵌套一個(gè)小循環(huán):

int del = 100; // 延時(shí)默認(rèn)為100毫秒

void setup()

{

// 初始化端口的模式為 OUTPUT

for (int i = 8; i <= 13="" ;="">

{

pinMode(i, OUTPUT);

}

}

void loop()

{

for (int j = 1; j <= 3;="" j++="">

{

for (int i = 8; i <= 13;="">

{

digitalWrite(i, HIGH);

delay(del);

digitalWrite(i, LOW);

}

for (int i = 13; i >= 8; i--)

{

digitalWrite(i, HIGH);

delay(del);

digitalWrite(i, LOW);

}

}

for (int k = 1; k <= 3;="" k++="">

{

int p = random(8, 14);

digitalWrite(p, HIGH);

delay(del);

digitalWrite(p, LOW);

}

}

p 是一個(gè)變量,,用 random() 給它賦值前,,要聲明它的類型為整數(shù) int:

int p;

p = random(8, 14);

但為了節(jié)省空間,,我們把它寫成上面的形式。

燈光不僅是我們塑造環(huán)境氛圍的一種基本需求,,而且是一種藝術(shù)表現(xiàn)形式,。后面你會(huì)發(fā)現(xiàn)通過 Arduino ,往往只需簡(jiǎn)單幾段代碼,,就可以創(chuàng)造出千變?nèi)f化的效果,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約