這是我們學(xué)習(xí)Arduino系列的下一部分,這次我們將學(xué)習(xí)并使用 Arrays 用各種閃爍順序。如果您想教孩子基本的焊接方法,那么這將是使孩子忙碌的理想項(xiàng)目-只需將LED安裝在一塊卡上,就可以從標(biāo)準(zhǔn)的9v電池中獲取電力。
這也是初學(xué)者Arduino編程中的關(guān)鍵課程,盡管如果您不打算實(shí)際使用它作為裝飾物,我還是強(qiáng)烈建議您將它放在面包板上。
注意:這是一個(gè)非常重要的過程。入門級(jí)教程,我們當(dāng)然不會(huì)突破任何新領(lǐng)域–是嗎?只是一臺(tái)教授使用陣列和 For循環(huán)來處理大量LED 的概念的設(shè)備(或其他輸出設(shè)備)。/em》
如果您還沒有這樣做,那么現(xiàn)在是跟隨該系列其他文章的好時(shí)機(jī):
什么是Arduino?您可以使用它嗎?
什么是Arduino入門工具包?它包含什么?
您可以通過入門工具包購買更多很酷的組件
入門您的Arduino入門套件?安裝驅(qū)動(dòng)程序并設(shè)置電路板和端口
Fritzing,這是一個(gè)免費(fèi)的電路圖繪制工具
仔細(xì)查看Arduino應(yīng)用程序和示例閃爍程序的結(jié)構(gòu)
》
對(duì)于此項(xiàng)目,您至少需要用紅色或綠色的 8或9個(gè)LED ,每個(gè)LED的電阻, 面包板和一些接線。我最近購買了Ooomlout的入門套件,本教程對(duì)此進(jìn)行了介紹,它具有很高的性價(jià)比,并且具有比您所需要的更多的LED和電阻器,并且配備了整潔的面包板和Arduino外殼來保存物品。整潔。
這是最后一件事:
以及正在播放的視頻。
這是Fritzing的接線圖。這是非?;镜抹C只需將LED的正極引線連接到 2-》任何引腳(最多13針),然后將負(fù)極引腳通過電阻串聯(lián)到地。我在這里使用的值為560歐姆。就是這樣。
在軟件方面,請(qǐng)考慮如何在代碼中寫入所有這些LED。您可以這樣處理:
int led1 = 2; // first LED on pin 2
int led2 = 3; // second on pin 3
// etc etc
void loop(){
digitalWrite(led1,HIGH);
delay(100);
digitalWrite(led1,LOW);
delay(100);
digitalWrite(led2,HIGH);
// etc
}
您應(yīng)該能夠看到9個(gè)LED,這很快就會(huì)使人感到疲勞。答案在于 Arrays ,如果您不記得我們關(guān)于基本數(shù)據(jù)類型的Programming 101,基本上就是列表。
語法看起來像這樣(將其放在第一個(gè)代碼中的一行):
int leds[] = {2,3,4,5,6,7,8,9,10};
方括號(hào)表示“?變量將是一個(gè) Array 。大括號(hào)括起了數(shù)組將要保留的引腳號(hào)列表。
現(xiàn)在,要使用數(shù)組,我們需要通過索引號(hào)對(duì)其進(jìn)行尋址。 索引從0 開始,因此總是比其中的事物總數(shù)少1(所以有9個(gè)項(xiàng)目,最后一個(gè)項(xiàng)目的索引為8 )。
您可以這樣寫:
leds[0]
在我們的例子中,它將獲取數(shù)字2,因?yàn)槟鞘撬饕?的含義在我們的數(shù)組中。
目前為止?大。但是,僅憑這一點(diǎn)對(duì)我們來說還不夠—我們還需要某種方法來遍歷LED陣列的每個(gè)元素。為此,我們將使用 for循環(huán)。這樣做的語法如下:
for(initial variable; condition under which we repeat again; change to variable each iteration)
例如:
for(int i = 0; i《9; i++)
說
開始僅使用變量 i 循環(huán),變量 i 的值為零
僅當(dāng)我小于9 時(shí)才繼續(xù)循環(huán)?(so:0,1,2,3,4,5,6,7,8)
每次,給i加1 (i ++是所以說i = i + 1)
因此,基本上,循環(huán)將重復(fù)與LED一樣多的次數(shù),并且每次重復(fù),我們都會(huì)有一個(gè)變量 i ,我們可以根據(jù)需要使用它。
我們將從此結(jié)構(gòu)開始使用兩次。進(jìn)入設(shè)置功能后,使我們所有的引腳都變?yōu)檩敵瞿J?,如下所示?/p>
void setup(){
for(int i = 0;i《 9;i++){
pinMode(leds[i],OUTPUT);
}
}
您能看到我們?cè)谀抢镒隽耸裁磫幔坎挥镁帉?行代碼來聲明每個(gè)單獨(dú)的引腳為輸出,而是創(chuàng)建一個(gè)“ for”循環(huán)來重復(fù)9次,每次設(shè)置另一個(gè)引腳。
現(xiàn)在,您應(yīng)該能夠看到如何我們可以在主程序循環(huán)中執(zhí)行完全相同的操作來依次打開每個(gè)LED:
void loop(){
for(int i = 0;i《 9;i++){
digitalWrite(leds[i],HIGH);
delay(100);
digitalWrite(leds[i],LOW);
}
}
嘗試一下。如果您希望不再次鍵入它,則可以從此處下載今天項(xiàng)目的完整代碼(盡管我鼓勵(lì)您這樣做,因?yàn)樗兄趯W(xué)習(xí)過程)。
好的,現(xiàn)在我們有了一個(gè)相當(dāng)無聊的照明順序。讓我們編程另一個(gè)。只是為了好玩,讓我們使其完全隨機(jī)。用以下代碼替換主循環(huán)代碼:
void loop(){
int randomLed = random(0,8);
digitalWrite(leds[randomLed],HIGH);
delay(50);
randomLed = random(0,8);
digitalWrite(leds[randomLed],LOW);
}
我們沒有使用“ for”循環(huán)遍歷每個(gè)LED,而是從0-9中選擇一個(gè)隨機(jī)數(shù),然后將其閃爍。
我今天要把它留在那里,因?yàn)槟F(xiàn)在應(yīng)該已經(jīng)掌握了足夠的知識(shí)來編寫所有新序列并進(jìn)行循環(huán)實(shí)驗(yàn)。為了證明這一切是多么容易,我挑戰(zhàn)了我的妻子,想出一個(gè)她想看的序列,然后得到了她自己編程,只給出了代碼和課程。到目前為止。她想出了這個(gè),所以看看您是否可以將其匹配做作業(yè)!
責(zé)任編輯:wv
-
Arrays
+關(guān)注
關(guān)注
0文章
6瀏覽量
6422
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論