Tafuta Msimbo

Somo la 98-10: Taa ya Trafiki ya Arduino

Somo la 98-10: Taa ya Trafiki ya Arduino

Taa za barabara ni mojawapo ya mifumo ya kila siku ambayo mara chache tunaifikiria — hadi tunapojenga moja. Katika mradi huu, utatumia Arduino kuiga mfululizo halisi wa taa za barabara: kijani kimewashwa, kisha njano, kisha nyekundu, kila kimoja kwa muda wake unaoweza kubadilishwa, kikijirudia bila mwisho. Ni mradi bora kwa wanaoanza kwa sababu unafundisha mantiki ya mpangilio wa muda, udhibiti wa matokeo mengi, na uhusiano kati ya kile unachoandika katika msimbo na kile unachokiona katika ulimwengu halisi.

Taa ya barabara katika maisha halisi yenye rangi tatu

Zaidi ya onyesho la darasani, mantiki ya muda unayojifunza hapa inaonekana kila mahali:

  • Kujenga mfano halisi wa taa za barabara kwa reli ya mfano au diorama
  • Kuunda mfumo wa kiashiria cha muda kwa karakana au gereji (k.m., ishara za "salama kuingia" / "subiri")
  • Kujifunza msingi wa ishara za vivuko vya waenda kwa miguu zenye awamu zinazoanzishwa na kitufe
  • Kufanya mfano wa mfululizo wa relay wa muda kwa kazi za viwanda au automatisering ya nyumbani
  • Kufundisha watoto kuhusu mfululizo, muda, na elektroniki kwa kutumia kitu kinachojulikana na kutambulika

Jambo bora zaidi: kitu kizima hufanya kazi kikijitegemea mara tu kinapopakiwa. Unaprogram Arduino mara moja kutoka kompyuta yako, kisha unaiwezesha kwa betri au adapta na inafanya kazi milele — hakuna PC inayohitajika (kwenye video saa 12:27).

red, green and yellow leds on bread board for traffic light project
LED nyekundu, kijani na njano kwenye ubao wa bread kwa mradi wa taa za barabara

Jinsi Taa ya Barabara Inavyofanya Kazi

Taa ya barabara kwa kweli ni mfululizo wa muda wa matokeo matatu. Arduino huwasha LED moja kwa wakati mmoja, husubiri idadi fulani ya sekunde, huizima, kisha huhamia inayofuata. Mzunguko kisha hujirudia. Katika mfano wa muda wa video, kijani hubaki kikiwa kimewashwa kwa sekunde 3, njano kwa sekunde 1, na nyekundu kwa sekunde 3 — lakini yote haya yanaweza kubadilishwa katika msimbo (kwenye video saa 49:44).

traffic light timing: red light
muda wa taa ya barabara: taa nyekundu
traffic light timing: yellow light
muda wa taa ya barabara: taa njano
traffic light timing: green light
muda wa taa ya barabara: taa ya kijani

Sababu mfululizo unahisi kuwa halisi ni kwamba muda huo unaakisi mtiririko halisi wa trafiki: kijani na nyekundu ni ndefu kwa sababu magari yanahitaji muda kupita kwenye makutano, wakati njano ni fupi kwa sababu ni onyo la mpito tu. Unaweza kurekebisha haya ili yalingane na hali yoyote unayopenda.

Vifaa na Vipengele

Orodha ya sehemu za mradi huu ni ndogo:

  • 1 × bodi ya Arduino (Uno, Nano, au Mega — chochote chenye angalau pini 3 za kidijitali)
  • 3 × LED (nyekundu, njano/machungwa, na kijani — rangi tofauti hufanya athari ionekane wazi)
  • 3 × kipingamizi (300 Ω hadi 1 kΩ hufanya kazi vizuri; video inatumia 1 kΩ)
  • 1 × ubao wa bread
  • Wayaya za jumper
  • Hiari: betri ya lithiamu-ioni au adapta ya nguvu ya 5 V kuiendesha kikijitegemea

Video inapendekeza kutumia LED tatu zenye rangi tofauti wazi ili athari ya taa ya barabara ionekane mara moja — vinginevyo utalazimika kuziweka lebo (kwenye video saa 02:04).

Kuelewa Upunguzaji wa Mkondo wa LED

Kila LED inahitaji kipingamizi cha kupunguza mkondo katika mfululizo. Hii ni kwa nini: LED ina voltage ya mbele karibu isiyobadilika (kwa kawaida karibu 2 V kwa LED za kawaida za 5 mm), na ikiwa utaiunganisha moja kwa moja na 5 V, mkondo utapanda na kuiangamiza. Kipingamizi hufyonza voltage ya ziada.

Kwa kutumia sheria ya Ohm, ikiwa LED inapunguza 2 V na usambazaji ni 5 V, basi 3 V lazima zipungue kwenye kipingamizi. Kwa mkondo unaolengwa wa karibu 10 mA, thamani ya kipingamizi inakuwa takriban 300 Ω (kwenye video saa 04:41). Kwa vitendo, chochote kutoka 300 Ω hadi 1 kΩ kitafanya kazi — thamani kubwa hufanya LED kuwa hafifu zaidi.

Mwongozo wa Kuunganisha

Schematic of Arduino traffic light
Mchoro wa taa ya barabara ya Arduino
Arduino LED traffic lights wiring
Kuunganisha taa za barabara za LED za Arduino

Kila LED imeunganishwa kwa namna inayofanana: anodi (mguu mrefu) huunganishwa na pini ya kidijitali ya Arduino, na katodi (mguu mfupi, upande tambarare wa mwili wa LED) huunganishwa kupitia kipingamizi na ardhi.

Katika kuunganisha kwa video, LED nyekundu huunganishwa na pini 2, LED njano/machungwa na pini 3, na LED ya kijani na pini 4 (kwenye video saa 50:50). Vipingamizi vyote vitatu hushiriki reli ya ardhi ya kawaida kwenye ubao wa bread. Mpangilio wa rangi kwenye ubao wa bread haujalishi — kinachojalisha ni kwamba namba za pini katika msimbo wako zilingane na pini ulizotumia kwa kweli.

Kidokezo kimoja muhimu kutoka kwenye video: kipinga umeme (resistor) kinaweza kuwekwa upande wowote wa LED. Unaweza kukiweka kati ya pini ya Arduino na anodi ya LED, au kati ya katodi ya LED na ardhi — kielektroniki ni sawa (kwenye video saa 51:52).

Maelezo ya Msimbo

Programu kamili inapatikana chini ya makala. Hapa tutazingatia sehemu ambazo utataka kubadilisha.

Juu ya sketch, ufafanuzi wa pini tatu unachora kila LED kwenye pini ya kidijitali. Ikiwa uliunganisha LED zako kwenye pini tofauti, badilisha thamani hizi:

const int greenLED = 4;
const int yellowLED = 3;
const int redLED = 2;

Kisha zinakuja thabiti za muda. Hizi zinadhibiti muda ambao kila taa inabaki imewaka, kwa millisekunde. Video inatumia 5000 ms kwa kijani, 1000 ms kwa njano, na 5000 ms kwa nyekundu kwa chaguo-msingi — lakini wakati wa onyesho hizi zilibadilishwa kuwa 3 s / 1 s / 3 s, na baadaye kuwa 10 s / 3 s / 10 s (kwenye video saa 56:27):

const int greenOnTime = 5000;
const int yellowOnTime = 1000;
const int redOnTime = 5000;

Ili kubadilisha mdundo wa taa yako ya trafiki, hariri tu thamani hizi tatu. Unataka makutano ya polepole na ya kweli? Jaribu 10000, 3000, 10000. Unataka onyesho la haraka? Jaribu 1000, 300, 1000.

Ndani ya loop(), mfululizo ni rahisi: washa kijani, subiri, zima kijani; washa njano, subiri, zima njano; washa nyekundu, subiri, zima nyekundu; kisha rudi kwa kijani. Kifuatiliaji cha serial kinachapisha kila mabadiliko ya hali ili uweze kuthibitisha kwamba muda unalingana na kile unachotarajia.

Onyesho la Moja kwa Moja

Mara msimbo unapopakiwa, Arduino inaendesha mzunguko yenyewe. Kwenye video, LED ya kijani inawaka kwanza, kisha baada ya muda wake njano inawaka kwa muda mfupi, kisha nyekundu, na mzunguko unaanza tena mara moja (kwenye video saa 55:20).

Kifuatiliaji cha serial kinaakisi hii kwa maandishi — "green LED on", "green off", "yellow on", na kadhalika — ambayo ni njia nzuri ya kuthibitisha kwamba thamani zako za muda zinafanya kazi kama inavyokusudiwa. Unapokuwa tayari kuiendesha bila waya, ondoa USB na unganisha betri ya lithiamu-ioni au adapta ya 5 V; Arduino itaendelea kuzunguka bila kompyuta (kwenye video saa 56:11).

Miradi inayohusiana kutoka kwenye video hii

Vipengele

  • [00:00] Muhtasari wa miradi 10 ya LED ya Arduino
  • [01:22] Utangulizi wa kozi ya hatua kwa hatua ya Arduino
  • [02:29] LED ni nini: alama, anodi, na katodi
  • [03:49] Kuhesabu kipinga umeme kinachodhibiti mkondo wa LED
  • [49:25] Utangulizi wa mradi wa taa ya trafiki
  • [49:44] Muda wa taa ya trafiki umeelezwa
  • [50:34] Mchoro wa uunganishaji wa taa ya trafiki
  • [52:13] Maelezo ya msimbo wa taa ya trafiki
  • [54:32] Onyesho la moja kwa moja na kifuatiliaji cha serial
  • [55:30] Kubadilisha thamani za muda
  • [56:11] Kuendesha taa ya trafiki kwa nguvu ya betri

Bilder

traffic light timing: green light
traffic light timing: green light
muda wa taa za trafiki: taa njano
muda wa taa za trafiki: taa njano
muda wa taa za trafiki: taa nyekundu
muda wa taa za trafiki: taa nyekundu
Mchoro wa taa za trafiki za Arduino
Mchoro wa taa za trafiki za Arduino
traffic_lights
traffic_lights
Mawaya ya taa za trafiki za LED za Arduino
Mawaya ya taa za trafiki za LED za Arduino
LED nyekundu, kijani na njano kwenye ubao wa mzunguko kwa mradi wa taa za trafiki
LED nyekundu, kijani na njano kwenye ubao wa mzunguko kwa mradi wa taa za trafiki
942-Lessson 98-LED-10: Arduino code traffic light
Språk: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Filer📁

Arduino-bibliotek (zip)

Användarhandbok