Кодты іздеу

Сабақ 98-6: Arduino-мен See saw LED ойыны

Сабақ 98-6: Arduino-мен See saw LED ойыны

Seesaw LED жобасы — бұл Arduino бағдарламалаудағы ең маңызды тұжырымдамалардың бірін үйрететін классикалық бастауыш жаттығу: екі шығысты белгілі бір уақыт ырғағымен кезектестіріп қосу. Тек екі LED, екі резистор және бірнеше қосқыш сымды пайдаланып, сіз жасыл LED мен қызыл LED кезек-кезек жанатын, ойын алаңындағы теңселу қозғалысын имитациялайтын схема құрастырасыз. Бұл қарапайым құрылым, бірақ ол негізгі құрылыс блоктарын таныстырады — пин анықтамалары, уақыт константалары және дәйекті digitalWrite() шақырулары — олар сіз жазатын барлық дерлік Arduino скетчінде кездеседі.

two LEDs with resistor on breadboard connected to Arduino
Arduino-ға қосылған breadboard-тағы резисторы бар екі LED

Seesaw үлгісі шын мәнінде «бір нәрсені қос, өшір, екіншісін қос, өшір, қайтала» дегенді білдіретіндіктен, сол құрылым ондаған практикалық қолданысқа кеңейеді. Міне, қиялыңызды оятатын бірнеше идея:

  • Кезектес индикатор шамдары — басқару панеліндегі кезек-кезек ауысатын «қауіпсіз / дабыл» жұбы.
  • Теміржол өткелін имитациялау — пойыз жақындағанда кезектесіп жыпылықтайтын екі шам.
  • Екі жолақты бағыт белгісі — кіреберіс немесе автотұрақ үшін «осылай жүр / анадай жүр» көрсеткі дисплейі.
  • Мерекелік безендіру — мерекелік жыпылықтау әсері үшін қызыл және жасыл LED-тердің орын ауыстыруы.
  • Оқу негізі — мұндағы уақыт пен реттілік дағдылары кейінірек бағдаршамдар, жаяу жүргінші шамдары және көп LED анимациялары үшін қолданатын дағдылармен бірдей.

Seesaw әсері қалай жұмыс істейді

LED — жарық шығаратын диод, оның таңбасы сызыққа бағытталған үшбұрыш. Тегіс сызық — катод (теріс), ал үшбұрыштың артқы жағы — анод (оң). Нақты LED-те ұзынырақ аяқ — анод, ал қысқарақ, тегіс жақты аяқ — катод. Ток анодтан катодқа қарай ағады, сондықтан анод Arduino пинына қарай қосылады, ал катод резистор арқылы жерге қосылады (бейнеде 02:29-да).

Резистор маңызды. Әдеттегі шағын LED шамамен 2 V кернеу мен шамамен 10 mA ток қажет етеді. Егер Arduino 5 V берсе, қалған 3 V резистормен төмендетілуі керек. Ом заңын қолданып, R = V / I = 3 V / 0.01 A = 300 Ω. Шамамен 300 Ω-дан 1000 Ω-ға дейінгі кез келген мән жарайды — жоғары мәндер LED-ті жай ғана күңгірт етеді (бейнеде 03:49-да).

Seesaw үшін екі LED бірдей қосылады: әр анод өз Arduino пинына барады, ал әр катод өз резисторы арқылы ортақ жер рельсіне барады. Екеуінің арасындағы жалғыз айырмашылық — олардың қай пинге қосылғаны.

Аппараттық қамтамасыз ету және компоненттер

  • 1 × Arduino платасы (Uno, Nano, Mega немесе ұқсас)
  • 2 × LED — біреуі қызыл, біреуі жасыл (кез келген екі түс жарайды)
  • 2 × резистор, 300 Ω-дан 1000 Ω-ға дейін (220 Ω немесе 330 Ω жиі таңдалады)
  • 1 × breadboard
  • Қосқыш сымдар (DuPont сымдары)
  • Бағдарламалау және қуат беру үшін USB кабелі

Осымен бітті — батырмалар жоқ, потенциометрлер жоқ, сенсорлар жоқ. Бұл әдейі ең аз мүмкін болатын бөлшектер тізімі, сондықтан сіз толығымен код логикасына назар аудара аласыз.

Сымдарды қосу нұсқаулығы

Arduino schematic for two LEDs see saw
Екі LED seesaw үшін Arduino схемалық суреті
Arduino wiring for two LEDs see saw
Екі LED seesaw үшін Arduino сымдары

Сымдар симметриялы және оңай бақыланады. Екі LED-ті breadboard-қа салыңыз. Жасыл LED-тің анодын (ұзынырақ аяғын) Arduino 2-пиніне және қызыл LED-тің анодын Arduino 3-пиніне қосыңыз. Әр катод (қысқарақ аяқ) өз резисторының бір ұшына қосылады, ал екі резистордың екінші ұшы Arduino-ның GND пинына баратын ортақ рельске қосылады (бейнеде 27:45-те).

Екі LED бірдей жер рельсін бөлісетіндіктен, breadboard-тан Arduino-ға тек бір жер сымы қажет. Екі сигнал сымы — біреуі 2-пинге, біреуі 3-пинге — екі LED арасында өзгеретін жалғыз қосылымдар.

Кодты түсіндіру

Скетч әдейі қысқа, сондықтан әр жол мағыналы. Міне, сіз шынымен реттегіңіз келетін бөліктер:

Пин анықтамалары

const int greenLEDPin = 2;//define a pin for green LED
const int redLEDPin = 3;//define a pin for red LED

Бұл екі константа Arduino-ға LED-тер қай пиндерге қосылғанын айтады. Егер LED-теріңізді басқа пиндерге қоссаңыз — мысалы, 8-пин мен 9-пинге — бұл өзгерту қажет жалғыз орын. const кілт сөзі мән бағдарламаның өмір бойы тіркелгенін және кейінірек кездейсоқ қайта жазылмайтынын білдіреді.

Уақыт константасы

const int ON_TIME = 500;

Бұл жалғыз мән әрбір жарықдиодтың қанша уақыт жанып тұратынын миллисекундпен басқарады. Әдепкі 500 мәні әрбір жарықдиодтың жарты секунд жанып тұратынын білдіреді, сондықтан толық жасылдан-қызылға дейінгі цикл бір секунд алады. Жылдам жыпылықтау үшін оны 200-ге төмендетіңіз немесе бір жарықдиодқа бір секундтық баяу, өлшенген ырғақ үшін 1000-ге көтеріңіз (бейнеде 30:17). Екі жарықдиод та осы тұрақтыны бөлісетіндіктен, олар әрқашан синхронда болады — теңгерім сақталады.

Орнату

setup() ішінде екі істік pinMode() арқылы шығыстар ретінде жарияланады және сериялық монитор 9600 бодпен іске қосылады, осылайша жарықдиод күйінің хабарламаларының ағынын көре аласыз. Бұл тақта қосылған кезде бір рет орындалады.

Цикл

loop() функциясы — теңгерім орын алатын жер. Ол төрт әрекетті ретімен орындайды: жасыл жарықдиодты қосады, ON_TIME миллисекунд күтеді, оны өшіреді, содан кейін қызыл жарықдиод үшін дәл солай жасайды. Цикл соңына жеткенде, ол автоматты түрде басынан басталады — бұл бүкіл "теңгерім" мінез-құлқы. Күй айнымалысы да, тексеру шарты да жоқ, өйткені үлгі таза реттілікпен жүреді.

Тікелей жоба және демонстрация

Код жүктелгеннен кейін жасыл жарықдиодтың жарты секунд жанатынын, содан кейін қызыл жарықдиодтың, содан кейін қайтадан жасылдың шексіз жанатынын көресіз. Сериялық мониторды ашу (Құралдар → Сериялық монитор немесе Ctrl+Shift+M) үлгі жүріп жатқанда "Green LED ON" және "Red LED ON" жазуларын көрсетеді, бұл уақыттың сіз орнатқанға сәйкес келетінін растаудың қолайлы тәсілі.

ON_TIME мәнін 200-ге өзгертіп, қайта жүктеп көріңіз — жарықдиодтар айтарлықтай жылдам ауысады. Оны 1000-ге орнатыңыз, сонда теңгерім баяу, өлшенген кезектесуге айналады. Сондай-ақ Arduino-ны USB-ден ажыратып, оны батареядан немесе 5 V адаптерден қуаттандыра аласыз; скетч дәл солай жұмыс істейді, өйткені ол тақтаның жадында сақталған.

Осы бейнедегі ілеспе жобалар

Тараулар

  • [00:00] 10 Arduino жарықдиод жобасына шолу
  • [01:22] Arduino қадамдық курсына кіріспе
  • [02:29] Жарықдиодтарды түсіну: таңба, анод және катод
  • [03:49] Ом заңымен жарықдиодтың тізбектей резисторын есептеу
  • [27:32] Теңгерім жарықдиод жобасымен таныстыру
  • [27:45] Теңгерім жобасының сымдау диаграммасы
  • [28:28] Теңгерім кодын түсіндіру
  • [30:06] Теңгерімді әртүрлі уақыттармен көрсету
  • [30:47] Жүгіретін жарық жобасына шолу
  • [36:41] Басу түймесімен басқарылатын жүгіретін жарық
  • [42:25] Потенциометрмен жарықдиодты кернеу жолағы өлшегіші
  • [49:25] Arduino бағдаршам жобасы

Суреттер

Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
330_ohm_resistor
330_ohm_resistor
Arduino-ға қосылған breadboard-тағы резисторы бар екі LED
Arduino-ға қосылған breadboard-тағы резисторы бар екі LED
938-Lessson 98-LED-6: Arduino code two LED, See-saw
Тіл: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Файлдар📁

Arduino кітапханалары (zip)

Пайдаланушының нұсқаулығы