第三章 有趣的交通燈(Arduino邊做邊學:從點亮Led到物聯(lián)網(wǎng))

本系列文章為作者原創(chuàng),未經(jīng)作者書面同意,不得轉(zhuǎn)載!

第二個項目,我們來做一個交通燈。在第一個項目中,我們點亮了板載LED燈,可能很多盆友還是不過癮,我們既沒有動手設(shè)計電路圖,連接元器件,也沒有敲代碼,這樣就OK了,是不是感覺成功的喜悅來得有點太突然了?

沒關(guān)系,第二個項目能夠滿足您以上的所有需求,呵呵!不過啊,咱們學習還得一步一步來,千萬不要小看控制一盞LED燈,其實,您能夠控制一盞LED燈,您就能控制一部馬達(加一個繼電器),既然能夠控制一部馬達了,您就能創(chuàng)作出很多東西。所以,最關(guān)鍵的是我們的想象力和我們運用知識的能力。說得有點多了,我們開始今天的項目吧!

1 項目背景

我想大家都看見過交通燈,就是馬路上十字路口的紅綠燈。如果您開過車,我想您一定仔細觀察過交通燈,如果您還沒有駕駛過車,您是否仔細觀察過交通燈呢?交通燈包括三種個不同顏色的燈:紅燈、黃燈和綠燈。


交通燈.png

每個路口的紅綠燈切換的時間并不是相同,這個是根據(jù)不同路口的車流情況來設(shè)定的,我們假設(shè)紅綠燈切換的時長是30秒,那么三盞燈的閃動情況是這樣的:紅燈常亮30秒,紅燈熄滅,綠燈常亮27秒,然后按照1秒1次的頻率閃動3次(時長為3秒),綠燈熄滅,黃燈按照1秒一次的頻率閃動3次(時長為3秒),黃燈熄滅,如此重復,見下面的時序表:

狀態(tài) 時長(秒)
紅燈 常亮 30
綠燈 常亮 27
綠燈 閃爍 3
黃燈 閃爍 3

2 所需元器件

元器件 型號 數(shù)量 備注
主控板 arduino Uno 1
LED燈 3 紅黃綠各一個
電阻 220歐姆 3
面包板 1
杜邦線 7
數(shù)據(jù)線 Uno數(shù)據(jù)線 1

3 電路圖

根據(jù)交通燈的項目需求,我們需要按照上面的時序表控制三個不同顏色的LED燈的開關(guān),我們分別將LED燈的正極(較長一些的引腳,后面我們還會詳細介紹一下LED燈)接入Uno的2、7、12引腳(當然您也可以接入其它數(shù)字引腳),LED燈的負極引腳串聯(lián)一個220歐姆的限流電阻后接地(Uno上的GND引腳),由于Uno上面GND引腳有限,同時也是為了簡化接線,我們使用了面包板上的電源軌來同時接入三個LED燈的負極。


Untitled Sketch 2_bb.png

由于這是我們第一個電路圖,所以本章對電路的基本組成部分做一個較為詳細的介紹(這也是本系列文章的寫作風格,那就是盡量不脫離項目來介紹某個知識點,而是將知識點放在項目中講解,這樣能夠讓那些剛剛?cè)腴T的朋友能夠在項目的實踐過程中構(gòu)建較為全面的知識體系,這也是本人對教育家杜威先生的“從做中學”教育理念的一種實踐吧?。?,如果您確認對這部分內(nèi)容已經(jīng)很熟悉,您可以跳過這一節(jié)。

約翰·杜威(John Dewey,1859-1952):“所有的學習都是行動的副產(chǎn)品,所以教師要通過“做”,促使學生思考,從而學得知識?!?/p>

3.1 面包板

當您開始搭建一個電路時,面包板是最基本、最簡單的元件之一。由于面包板上有很多小插孔,各種電子元器件可根據(jù)需要任意插入或拔出,免去了焊接的工序,節(jié)省了電路的組裝時間,且元件可以重復使用,非常適合電路的組裝、調(diào)試和學習。
面包板是這個樣子的:


面包板.jpg

面包板這個名稱聽起來有點奇怪,電路跟面包有關(guān)系嗎?您別不信,還真有關(guān)系。面包板的得名可以追溯到真空管電路的年代,當時的電路元器件大都體積較大, 人們通常通過螺絲和釘子將他們固定在一塊切面包用的木板上進行連接,后來電路元器件體積越來越小,但面包板的名稱沿用了下來。

3.1.1 面包板的規(guī)格

面包板有不同的規(guī)格,如170孔(3547mm),400孔(8555mm),800孔(165*55mm)等。如下圖,從上到下依次為170孔、400孔和800孔面包板:

面包板.jpg

每塊面包板的四邊都有凸起和凹槽,使同一大小規(guī)格的面包板可以進行拼接,可用空間變大。面包板背面一般都有不干貼,方便其粘貼固定在物體上。

3.1.2 結(jié)構(gòu)以及內(nèi)部構(gòu)造

面包板使用熱固性酚醛樹脂制造,板底有金屬條,在板上對應位置打孔使得元件插入孔中時能夠與金屬條接觸,從而達到導電目的,一般將每5個孔用一條金屬條連接。板子中央一般有一條凹槽,這是針對需要集成電路、芯片試驗而設(shè)計的。板子兩側(cè)有兩排豎著的插孔(電源軌),也是5個一組,為板子上的元件提供電源。

3.1.2.1 電源軌

在面包板的上下兩側(cè)分別有兩列插孔,一般是作為電源引入的通路。上方第一行標有“+”的一列有5組插孔,每組5個(內(nèi)部5個孔連通),均為正極。上方第二行標有“-”的一列有5組插孔,每組5個(內(nèi)部5個孔連通),均為接地。面包板下方第一行與第二行結(jié)構(gòu)同上。如需用到整個面包板,通常將“+”與“+”用導線連接起來,“-”與“-”用導線連接起來。


電源軌.JPEG

800孔的電源板電源軌有兩種類型,一種是整個電源軌全連通,面包板上的紅藍標識線為:一整條線,另一種是電源軌分為兩部分,中間斷開,我們在搭建電路時一定注意,如下圖:


電源軌說明.jpg

3.1.2.2 接線軌

連接孔分為上下兩部分,是我們的主工作區(qū),用來插接原件和跳線。在同一列中的5個插孔(在面包板的兩端有字母標識,即a-b-c-d-e,f-g-h-i-j)是互相連通的;列和列(在面包板的上下兩側(cè)有數(shù)字標識,即1-30)之間以及凹槽上下部分(即e-f)是不連通的。

接線軌.JPEG

3.1.2.3 凹槽

在面包板的中間有一個長長的凹槽,其作用如下:

  • 表示上下兩部分是斷開的。

  • 凹槽中間距離為7.26mm,剛好插入標準窄體的DIP引腳集成電路芯片。


    凹槽1.png
  • 由于集成電路芯片引腳很多,一般不易取下來,如果暴力拔出很容易弄彎引腳,甚至折斷引腳,這個凹槽剛好可以用鑷子之類東西伸到集成電路下面,方便取出集成電路。


    凹槽2.png

3.1.3 如何在面包板上搭建電路

3.1.3.1 串聯(lián)電路

串聯(lián)電路圖:


串聯(lián) 02.png

我們在面包板上的連線:


串聯(lián) 01.png

3.1.3.2 并聯(lián)電路

并聯(lián)電路圖:


并聯(lián)電路 01.png

我們在面包板上的連線:


并聯(lián)電路 02.png

實際運行效果:


并聯(lián) 03.png

3.1.4 面包板使用及注意事項

    1. 安裝分立元件時,應便于看到其極性和標志,將元件引腳理直后,在需要的地方折彎。為了防止裸露的引線短路,必須使用帶套管的導線,一般不剪斷元件引腳,以便于重復使用。一般不要插入引腳直徑大于0.8mm的元器件,以免破壞插座內(nèi)部接觸片的彈性。
    1. 對多次使用過的集成電路的引腳,必須修理整齊,引腳不能彎曲,所有的引腳應稍向外偏,這樣能使引角與插孔可靠接觸。要根據(jù)電路圖確定元器件在面包板上的排列方式,目的是走線方便。為了能夠正確布線并便于查線,所有集成電路的插入方向要保持一致,不能為了臨時走線方便或縮短導線長度而把集成電路倒插。
    1. 根據(jù)信號流程的順序,采用邊安裝邊調(diào)試的方法。元器件安裝之后,先連接電源線和地線。為了查線方便,連線盡量采用不同顏色。例如:正電源一般采用紅色絕緣皮導線面包板的使用負電源用藍色,地線用黑線,信號線用黃色,也可根據(jù)條件選用其它顏色。
    1. 面包板宜使用直徑為0.6mm左右的單股導線。根據(jù)導線的距離以及插孔的長度剪斷導線,要求線頭剪成45斜口,線頭剝離長度約為6mm左右,要求全部插入底板以保證接觸良好。裸線不宜露在外面,防止與其它導線斷路。
    1. 連線要求緊貼在面包板上,以免碰撞彈出面包板,造成接觸不良。必須使連線在集成電路周圍通過,不允許跨接在集成電路上,也不得使導線互相重疊在一起,盡量做到橫平豎直,這樣有利于查線,更換元器件及連線。
    1. 最好在各電源的輸入端和地之間并聯(lián)一個容量為幾十微法的電容,這樣可以減少瞬變過程中電流的影響。為了更好地抑制電源中的高頻分量,應該在該電容兩端再并聯(lián)一個高頻去耦電容,一般取0.01 ~ 0.047μf的獨石電容。
    1. 在布線過程中,要求把各元器件放置在面包板上的相應位置以及所用的引腳號標在電路圖上,保證調(diào)試和查找故障的順利進行。
    1. 所有的地線必須連接在一起,形成一個公共參考點。

3.1.5 布線原則

    1. 盡量減少連接點。增加一個連接點,相當于人為地增加了故障概率。
    1. 盡量避免立交橋。所謂的“立交橋”就是元器件或者導線騎跨在別的元器件或者導線上。初學者最容易犯這樣的錯誤。這樣做,一方面給后期更換元器件帶來麻煩,另一方面,在出現(xiàn)故障時,零亂的導線很容易使人失去信心。
    1. 盡量牢靠。有兩種現(xiàn)象需要注意:第一、集成電路很容易松動,因此,對于運放等集成電路,需要用力下壓,一旦不牢靠,需要更換位置。第二、有些元器件管腳太細,要注意輕輕撥動一下,如果發(fā)現(xiàn)不牢靠,需要更換位置。
    1. 方便測試。5孔孤島一般不要占滿,至少留出一個孔,用于測試。
    1. 布局盡量緊湊,信號流向盡量合理。
    1. 布局盡量與原理圖近似。這樣有助于同學們在查找故障時,盡快找到元器件位置。
    1. 電源區(qū)使用盡量清晰。在搭接電路之前,首先將電源區(qū)劃分成正電源、地、負電源3個區(qū)域,并用導線完成連接。

3.1.6 保護

    1. 盡量避免進水、碎屑以及粉狀物進入插孔。
    1. 避免集成電路的粗暴插拔,以免管腳折在插孔內(nèi);不要將金屬線折斷在插孔內(nèi)。
    1. 不要將太粗的導線、探針、管腳插入孔內(nèi)。

(面包板介紹這部分內(nèi)容參考了鏈接地址,在此對原作者表示感謝!)

3.2 LED燈

百度百科:
發(fā)光二極管簡稱為LED。由含鎵(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。當電子與空穴復合時能輻射出可見光,因而可以用來制成發(fā)光二極管。在電路及儀器中作為指示燈,或者組成文字或數(shù)字顯示。砷化鎵二極管發(fā)紅光,磷化鎵二極管發(fā)綠光,碳化硅二極管發(fā)黃光,氮化鎵二極管發(fā)藍光。因化學性質(zhì)又分有機發(fā)光二極管OLED和無機發(fā)光二極管LED。

3.2.1 原理

它是半導體二極管的一種,可以把電能轉(zhuǎn)化成光能。


led1.png

3.2.2 極性

發(fā)光二極管的兩根引線中較長的一根為正極,應接電源正極。


led 2.png

3.2.3 LED單向?qū)ㄐ?/h3>

LED只能往一個方向?qū)ǎㄍ姡泳€時一定要注意,否則有可能擊穿LED,永久損壞LED。

3.2.4 應用

LED燈的應用非常廣泛,如:汽車信號燈、交通信號燈、室外全色大型顯示屏以及特殊的照明光源,下圖是北京奧運會開幕式上LED的應用效果。


led 3.png

3.3 電阻

電阻器(Resistor)在日常生活中一般直接稱為電阻。是一個限流元件,將電阻接在電路中后,電阻器的阻值是固定的一般是兩個引腳,它可限制通過它所連支路的電流大小。

阻值不能改變的稱為固定電阻器。阻值可變的稱為電位器或可變電阻器。

電阻在電路圖中用字母R來表示,單位為歐姆Ω。

3.4 杜邦線

杜邦線可用于不同元器件間的連接,可以非常牢靠地和插針連接,無需焊接,可以快速進行搭建電路。
杜邦線根據(jù)兩端的接口類型,分為三種:

  • 公對公


    公對公.jpg
  • 公對母


    母對公.jpg
  • 母對母


    母對母.jpg

在選擇杜邦線時請根據(jù)元器件引腳的類型進行選擇,購買時,最好每種都買一些,方便使用。

4 程序代碼

/*
 *名稱:有趣的交通燈實驗
 *
 *功能:紅燈常亮30秒,紅燈熄滅,綠燈常亮27秒,然后按照1秒1次的頻率閃動3次,綠燈熄滅,黃燈按照1秒一次的頻率閃動3次,黃燈熄滅,如此重復。
 *
 *作者:YXK
 *
 *時間:2018.5.24
 * 
 */


//setup函數(shù)在重新上電或按了復位后只運行一次
void setup() {
  // 初始化2、7、12引腳,并將其定義為輸出引腳。
  pinMode(2, OUTPUT);   //綠燈
  pinMode(7, OUTPUT);   //黃燈
  pinMode(12, OUTPUT);  //紅燈
}

// loop函數(shù)永遠地循環(huán)重復執(zhí)行
void loop() {
  digitalWrite(12, HIGH);   //將紅燈點亮(HIGH代表高電壓)
  delay(30000);             //保持30秒
  digitalWrite(12, LOW);    //將紅燈熄滅(LOW代表低壓)
  digitalWrite(2, HIGH);    //將綠燈點亮
  delay(27000);             //保持27秒鐘
  digitalWrite(2, LOW);     //將綠燈熄滅并開始閃爍,頻率為1秒
  delay(500); 
  digitalWrite(2, HIGH); 
  delay(500);
  digitalWrite(2, LOW);
  delay(500);
  digitalWrite(2, HIGH); 
  delay(500);
  digitalWrite(2, LOW);     
  delay(500); 
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(2, LOW);     //綠燈熄滅,閃爍結(jié)束
  digitalWrite(7, HIGH);    //黃燈點亮,并開始閃爍,頻率為1秒
  delay(500); 
  digitalWrite(7, LOW);
  delay(500);
  digitalWrite(7, HIGH); 
  delay(500);
  digitalWrite(7, LOW);
  delay(500);
  digitalWrite(7, HIGH); 
  delay(500);
  digitalWrite(7, LOW);     //黃燈熄滅,閃爍結(jié)束,開始下一個循環(huán)
  delay(500);
}

4.1 代碼講解

交通燈項目的程序看起來比上一個項目的程序長了很多,但實際上并沒有新的函數(shù),都是我們上一個項目運用過的三個函數(shù),分別是:

  • 配置引腳輸入輸出狀態(tài)函數(shù):
 pinMode(2, OUTPUT);  //括號里面為函數(shù)參數(shù)
  • 引腳輸出函數(shù):
digitalWrite(2, LOW); //向數(shù)字2引腳寫入LOW值,其電壓將設(shè)定為低電平0V
digitalWrite(7, HIGH); //向數(shù)字7引腳寫入HIGH值,其電壓將設(shè)定為高電平5V
  • 時間延遲函數(shù):
delay(500);  //參數(shù)為毫秒,500毫秒為0.5秒

結(jié)合程序中的注釋,您是不是很容易的理解這段代碼。
下面我們看看程序的執(zhí)行效果吧!

5 執(zhí)行效果

我們按照第三節(jié)的電路圖搭建好實際電路,然后我們將Arduino Uno電路板連接好電腦,將程序上傳到Uno上。
觀察三個LED燈是不是按照我們的設(shè)計閃動的。


交通燈01.png

6 擴展任務(wù)

我們今天做的交通燈只有一組(紅黃綠),但實際上馬路上的交通燈都是兩組,控制兩個方向,當一組的紅燈亮時,另一組的綠燈亮,您是不是可以根據(jù)實際情況,設(shè)計兩組交通燈,然后用Uno控制它們呢!

如果您喜歡本文,您可以點擊一下下面的喜歡按鈕,您也可以關(guān)注我,謝謝您的支持!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容