0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino交通燈控制器項(xiàng)目教程

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-03 16:26 ? 次閱讀

Arduino紅綠燈是一個(gè)有趣的小項(xiàng)目,您可以在一個(gè)小時(shí)內(nèi)完成構(gòu)建。這是使用Arduino構(gòu)建自己的方法,以及如何更改電路以實(shí)現(xiàn)高級(jí)變體。

如果您希望將其作為視頻教程觀看,我們將向您介紹:

構(gòu)建Arduino交通燈控制器所需的條件

除了基本的Arduino,還需要:

1個(gè)10k歐姆電阻器

1個(gè)按鈕開關(guān)

6個(gè)220歐姆電阻

一塊面包板

連接導(dǎo)線

紅色,黃色和綠色LEDs

只要有足夠的引腳,幾乎任何Arduino都可以用于該項(xiàng)目。如果不確定所需的型號(hào),請(qǐng)確保閱讀我們的Arduino購(gòu)買指南。您可能已經(jīng)在Arduino入門套件中包含了這些零件。

Arduino交通燈:基礎(chǔ)知識(shí)

讓我們從小處入手。一個(gè)基本的單一交通信號(hào)燈是一個(gè)不錯(cuò)的起點(diǎn)。這是電路:

Arduino交通燈控制器項(xiàng)目教程

將每個(gè)LED的陽(yáng)極(長(zhǎng)腳)連接到數(shù)字引腳8、9和10(通過(guò)220歐姆電阻器) )。將陰極(短腿)連接到Arduino的地面。

Arduino交通燈的代碼

首先定義變量,以便您可以通過(guò)名稱而不是數(shù)字來(lái)尋址燈。開始一個(gè)新的Arduino項(xiàng)目,并從以下幾行開始:

int red = 10;

int yellow = 9;

int green = 8;

接下來(lái),讓我們添加設(shè)置功能,在其中將紅色,黃色和綠色LED配置為輸出。由于您已經(jīng)創(chuàng)建了表示引腳號(hào)的變量,因此現(xiàn)在可以按名稱引用引腳了:

void setup(){

pinMode(red, OUTPUT);

pinMode(yellow, OUTPUT);

pinMode(green, OUTPUT);

}

pinMode 函數(shù)可配置Arduino使用給定的引腳作為輸出。您必須這樣做才能使LED完全正常工作?,F(xiàn)在了解交通信號(hào)燈的實(shí)際邏輯。這是您需要的代碼。在您的變量定義和設(shè)置函數(shù)下面添加此代碼:

void loop(){

changeLights();

delay(15000);

}

void changeLights(){

// green off, yellow on for 3 seconds

digitalWrite(green, LOW);

digitalWrite(yellow, HIGH);

delay(3000);

// turn off yellow, then turn red on for 5 seconds

digitalWrite(yellow, LOW);

digitalWrite(red, HIGH);

delay(5000);

// red and yellow on for 2 seconds (red is already on though)

digitalWrite(yellow, HIGH);

delay(2000);

// turn off red and yellow, then turn on green

digitalWrite(yellow, LOW);

digitalWrite(red, LOW);

digitalWrite(green, HIGH);

delay(3000);

}

將此代碼上傳到Arduino,然后運(yùn)行(確保從選擇正確的板卡和端口工具》 面板和工具》 端口菜單)。您應(yīng)該有一個(gè)每15秒更改一次的工作紅綠燈,如下所示(加快):

讓我們分解一下此代碼。 changeLights 功能執(zhí)行所有艱苦的工作。這樣會(huì)將交通信號(hào)燈旋轉(zhuǎn)通過(guò)黃色和紅色,然后又變回綠色。當(dāng)在 loop 函數(shù)內(nèi)部調(diào)用該代碼時(shí),Arduino將永久運(yùn)行該代碼,每次暫停15秒。

changeLights 函數(shù)由四個(gè)不同的步驟組成:

綠色點(diǎn)亮,黃色熄滅

黃色熄滅,紅色點(diǎn)亮

黃色點(diǎn)亮,紅色點(diǎn)亮

綠色點(diǎn)亮,紅色熄滅,黃色熄滅

這四個(gè)步驟復(fù)制了實(shí)際交通信號(hào)燈中使用的過(guò)程。對(duì)于每個(gè)步驟,代碼都非常相似。使用 digitalWrite 可以打開或關(guān)閉相應(yīng)的LED。這是一個(gè)Arduino函數(shù),用于將輸出引腳設(shè)置為HIGH(高)(打開)或LOW(低)(關(guān)閉)。

啟用或禁用所需的LED后,延遲使Arduino等待給定的時(shí)間。在這種情況下,需要三秒鐘。

更深入:Arduino人行橫道

現(xiàn)在您已經(jīng)了解了基礎(chǔ)知識(shí),請(qǐng)對(duì)其進(jìn)行改進(jìn)。添加一個(gè)按鈕,方便行人在需要時(shí)改變燈光:

注意交通信號(hào)燈與上一個(gè)示例完全相同。將按鈕連接到數(shù)字引腳12。您會(huì)注意到該開關(guān)上連接了一個(gè)高阻10k歐姆電阻,您可能想知道為什么。這是一個(gè)下拉電阻。

一個(gè)開關(guān)允許電流流過(guò)或不讓電流流過(guò)。這似乎很簡(jiǎn)單,但是在邏輯電路中,電流應(yīng)始終以高或低狀態(tài)(請(qǐng)記住,1或0,HIGH或LOW)流動(dòng)。您可能會(huì)假設(shè)沒(méi)有被真正按下的按鈕開關(guān)處于LOW狀態(tài),但實(shí)際上,它被稱為“浮動(dòng)”狀態(tài),因?yàn)楦緵](méi)有消耗電流。

在這種浮動(dòng)狀態(tài)狀態(tài)下,由于電干擾而波動(dòng)時(shí),可能會(huì)出現(xiàn)錯(cuò)誤的讀數(shù)。換句話說(shuō),浮動(dòng)開關(guān)既不能提供可靠的HIGH讀數(shù),也不能提供LOW讀數(shù)。下拉電阻器在開關(guān)閉合時(shí)保持少量電流流動(dòng),從而確保了準(zhǔn)確的低態(tài)讀數(shù)。

在其他邏輯電路中,您可能會(huì)找到一個(gè)上拉電阻器,而這

現(xiàn)在,在代碼的循環(huán)部分中,而不是每隔15秒更改一次燈,您將按照相同的原理工作,但要相反,請(qǐng)確保特定的邏輯門默認(rèn)為高。而是改為讀取按鈕開關(guān)的狀態(tài),并且僅在激活時(shí)更改燈光。

Arduino人行橫道代碼

首先添加一個(gè)新變量來(lái)存儲(chǔ)按鈕銷:

int button = 12; // switch is on pin 12

現(xiàn)在,在設(shè)置功能中,添加新行以將開關(guān)聲明為輸入。添加一行以將交通燈設(shè)置為綠色舞臺(tái)。如果沒(méi)有此初始設(shè)置,它們將關(guān)閉,直到第一次 changeLights 運(yùn)行。

pinMode(button, INPUT);

digitalWrite(green, HIGH);

將整個(gè)循環(huán)功能改為以下內(nèi)容:

void loop() {

if (digitalRead(button) == HIGH){

delay(15); // software debounce

if (digitalRead(button) == HIGH) {

// if the switch is HIGH, ie. pushed down - change the lights!

changeLights();

delay(15000); // wait for 15 seconds

}

}

}

應(yīng)該這樣做。您可能想知道為什么按鈕檢查會(huì)發(fā)生兩次( digitalRead(button)),并間隔一小段時(shí)間。這在反跳。就像按鈕的下拉電阻一樣,這種簡(jiǎn)單的檢查可以停止代碼以檢測(cè)按下按鈕時(shí)是否受到干擾。

在 if 語(yǔ)句中等待15秒鐘,紅綠燈至少在這段時(shí)間內(nèi)不能改變。 15秒后,循環(huán)將重新啟動(dòng)。每次循環(huán)重新啟動(dòng)時(shí),它都會(huì)再次讀取按鈕的狀態(tài),但是如果不按下按鈕, if 語(yǔ)句將永遠(yuǎn)不會(huì)激活,指示燈也不會(huì)改變,并且程序會(huì)再次重新啟動(dòng)。

這是它的外觀(加速):

帶結(jié)的Arduino交通燈

讓我們嘗試更高級(jí)的模型。代替人行橫道,將電路更改為具有兩個(gè)交通信號(hào)燈:

將第二個(gè)交通信號(hào)燈連接到數(shù)字引腳11、12和13。

帶有連接點(diǎn)的Arduino交通燈的代碼

首先,將新的交通燈引腳分配給變量,并將其配置為輸出,如第一個(gè)示例所示:

// light one

int red1 = 10;

int yellow1 = 9;

int green1 = 8;

// light two

int red2 = 13;

int yellow2 = 12;

int green2 = 11;

void setup(){

// light one

pinMode(red1, OUTPUT);

pinMode(yellow1, OUTPUT);

pinMode(green1, OUTPUT);

// light two

pinMode(red2, OUTPUT);

pinMode(yellow2, OUTPUT);

pinMode(green2, OUTPUT);

}

現(xiàn)在,更新循環(huán)以使用第一個(gè)示例中的代碼(而不是人行橫道):

void loop(){

changeLights();

delay(15000);

}

再次,所有工作都在 changeLights 功能中進(jìn)行。該代碼不會(huì)代替紅色》 紅色和黃色》 綠色,而是替換交通信號(hào)燈。當(dāng)一個(gè)為綠色時(shí),另一個(gè)為紅色。這是代碼:

void changeLights(){

// turn both yellows on

digitalWrite(green1, LOW);

digitalWrite(yellow1, HIGH);

digitalWrite(yellow2, HIGH);

delay(5000);

// turn both yellows off, and opposite green and red

digitalWrite(yellow1, LOW);

digitalWrite(red1, HIGH);

digitalWrite(yellow2, LOW);

digitalWrite(red2, LOW);

digitalWrite(green2, HIGH);

delay(5000);

// both yellows on again

digitalWrite(yellow1, HIGH);

digitalWrite(yellow2, HIGH);

digitalWrite(green2, LOW);

delay(3000);

// turn both yellows off, and opposite green and red

digitalWrite(green1, HIGH);

digitalWrite(yellow1, LOW);

digitalWrite(red1, LOW);

digitalWrite(yellow2, LOW);

digitalWrite(red2, HIGH);

delay(5000);

}

這是(加速)外觀:

Arduino紅綠燈的后續(xù)步驟

今天就這些。您對(duì)Arduino LED和按鈕的新了解適用于各種不同的項(xiàng)目。如果您想擴(kuò)展這些交通信號(hào)燈,為什么不建一個(gè)四通(或更多)路口,并配備許多行人過(guò)路處和行人交通信號(hào)燈呢?

還是為什么不通過(guò)更大的擴(kuò)展您的新技能DIY MIDI控制器或帶有Xod的Arduino機(jī)器人之類的項(xiàng)目?您也可以看看使用VS Code和PlatformIO的Arduino編碼。

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 交通燈
    +關(guān)注

    關(guān)注

    13

    文章

    324

    瀏覽量

    39804
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187657
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    物聯(lián)網(wǎng)單控制器:路燈單控制更智能,更好用

    物聯(lián)網(wǎng)單控制器:路燈單控制更智能,更好用
    的頭像 發(fā)表于 01-15 16:17 ?113次閱讀
    物聯(lián)網(wǎng)單<b class='flag-5'>燈</b><b class='flag-5'>控制器</b>:路燈單<b class='flag-5'>燈</b><b class='flag-5'>控制</b>更智能,更好用

    控制:物聯(lián)網(wǎng)單控制器將成為行業(yè)主流

    控制:物聯(lián)網(wǎng)單控制器將成為行業(yè)主流
    的頭像 發(fā)表于 01-15 16:15 ?97次閱讀
    單<b class='flag-5'>燈</b><b class='flag-5'>控制</b>:物聯(lián)網(wǎng)單<b class='flag-5'>燈</b><b class='flag-5'>控制器</b>將成為行業(yè)主流

    51單片機(jī)交通燈仿真

    交通燈直行控制,倒計(jì)時(shí)時(shí)間可調(diào)。資料包含程序源碼和proteus8.6仿真
    發(fā)表于 11-28 14:15 ?14次下載

    創(chuàng)新型智慧桿綜合應(yīng)用解決方案 路燈單控制器

    創(chuàng)新型智慧桿綜合應(yīng)用解決方案 路燈單控制器
    的頭像 發(fā)表于 11-13 08:31 ?284次閱讀
    創(chuàng)新型智慧<b class='flag-5'>燈</b>桿綜合應(yīng)用解決方案 路燈單<b class='flag-5'>燈</b><b class='flag-5'>控制器</b>

    一文讀懂單控制器工作原理

    一文讀懂單控制器工作原理
    的頭像 發(fā)表于 11-11 13:13 ?361次閱讀
    一文讀懂單<b class='flag-5'>燈</b><b class='flag-5'>控制器</b>工作原理

    智慧城市路燈——聯(lián)網(wǎng)單控制系統(tǒng),單控制器

    智慧城市路燈——聯(lián)網(wǎng)單控制系統(tǒng),單控制器
    的頭像 發(fā)表于 11-11 12:52 ?438次閱讀
    智慧城市路燈——<b class='flag-5'>燈</b>聯(lián)網(wǎng)單<b class='flag-5'>燈</b><b class='flag-5'>控制</b>系統(tǒng),單<b class='flag-5'>燈</b><b class='flag-5'>控制器</b>

    智慧照明 智慧控之核心硬件——單控制器

    智慧照明 | 智慧控之核心硬件——單控制器
    的頭像 發(fā)表于 11-11 12:44 ?308次閱讀
    智慧照明   智慧<b class='flag-5'>燈</b>控之核心硬件——單<b class='flag-5'>燈</b><b class='flag-5'>控制器</b>

    【星閃派物聯(lián)網(wǎng)開發(fā)套件體驗(yàn)連載】智能交通燈--云端查看,遠(yuǎn)程控制視頻

    完整項(xiàng)目在這個(gè)帖子中: https://bbs.elecfans.com/jishu_2457322_1_1.html 本文是智能交通燈--云端查看,遠(yuǎn)程控制視頻
    發(fā)表于 10-21 13:44

    【星閃派物聯(lián)網(wǎng)開發(fā)套件體驗(yàn)連載】智能交通燈

    感謝電子發(fā)燒友,感謝潤(rùn)和軟件,提供星閃派物聯(lián)網(wǎng)開發(fā)套件試用。 本次試用計(jì)劃: 用星閃派物聯(lián)網(wǎng)開發(fā)套件,先實(shí)現(xiàn)本地交通燈項(xiàng)目,接入WiFi連上云端,本地紅綠燈狀態(tài)上傳云端,云端顯示,云端遠(yuǎn)程控制紅綠燈
    發(fā)表于 10-05 13:00

    基于555定時(shí)的四路交通燈電路圖

    交通燈,也稱為交通信號(hào)燈,是城市交通管理的重要工具,用于指示車輛和行人通行。它由紅燈、黃燈和綠燈(有時(shí)還包括其他類型的信號(hào)燈,如箭頭燈、閃光警告信號(hào)燈等)組成,通過(guò)不同顏色的燈光周期性交替顯示,以
    的頭像 發(fā)表于 07-03 18:16 ?2518次閱讀
    基于555定時(shí)<b class='flag-5'>器</b>的四路<b class='flag-5'>交通燈</b>電路圖

    基于STM32單片機(jī)的交通燈系統(tǒng)設(shè)計(jì)

    本次設(shè)計(jì)的智能交通燈控制系統(tǒng)設(shè)計(jì)有硬件數(shù)據(jù)采集控制和上位機(jī)監(jiān)控兩部分,通過(guò)單片機(jī)作為核心控制器,控制紅外傳感
    的頭像 發(fā)表于 06-24 09:49 ?4418次閱讀
    基于STM32單片機(jī)的<b class='flag-5'>交通燈</b>系統(tǒng)設(shè)計(jì)

    嵌入式操作教程案例分享:2-26 交通燈控制實(shí)驗(yàn) #交通燈

    嵌入式交通燈
    創(chuàng)龍教儀
    發(fā)布于 :2024年04月26日 13:42:28

    智慧桿靈魂人物-單控制器

    熙枚物聯(lián)在采用HPLC單控制器智慧路燈系統(tǒng)中,根據(jù)HPLC通訊的優(yōu)勢(shì),對(duì)功能進(jìn)行了優(yōu)化。
    的頭像 發(fā)表于 04-24 11:34 ?487次閱讀
    智慧<b class='flag-5'>燈</b>桿靈魂人物-單<b class='flag-5'>燈</b><b class='flag-5'>控制器</b>

    干貨!89C51單片機(jī)模擬交通燈控制,原理圖,仿真程序等完整資料

    設(shè)計(jì)要求 (1)利用51單片機(jī)設(shè)計(jì)一個(gè)交通燈控制系統(tǒng),來(lái)實(shí)現(xiàn)行人與車流的分流的目的。該系統(tǒng)主要應(yīng)用在十字路口,縱向?yàn)橹鞲傻溃瑱M向?yàn)橹Ц傻溃?(2)主、支干道交替通行,兩個(gè)干道上的交通燈工作方式同時(shí)
    發(fā)表于 03-14 18:23

    控制器工作原理是什么?單控制器是如何控制燈具的?

    控制器工作原理是什么?單控制器是如何控制燈具的? 單
    的頭像 發(fā)表于 02-03 11:38 ?2424次閱讀