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