Arduino dan svetofor uchun dastur. Arduino-da svetofor signalizatsiyasi. Oddiy ikki rangli svetofor

Ushbu darsda biz eng oddiyini qilamiz uchta LED svetofor. Ushbu sxema bo'yicha ishlashi kerak.

1. Faqat qizil chiroq yonadi bizning kelajak svetoforimiz.

2. Qizil svetoforni o'chirmasdan, sariq chiroqni yoqing.

3. O'chiring qizil va sariq yashil rangga aylanadi.

4. Yashil svetoforni o'chiring va sariqni yoqing.

Keyin biz qizil svetofordan tsiklni takrorlaymiz.

Dars uchun bizga kerak bo'ladi:

Keling, uchta LEDni taxtaga ulaymiz Arduino UNO. Biz ushbu diagrammani olamiz.

Sxematik diagramma.


Eskiz shunday ko'rinadi

Int led_red = 2; // ulanish pin 2 int led_yellow = 3; // ulanish pin 3 int led_green = 4; // ulanish pin 4 bekor o'rnatish() ( pinMode(led_red, OUTPUT); pinMode(led_sarg'ish, OUTPUT); pinMode(led_green, OUTPUT); ) void loop() (digitalWrite(led_red, HIGH); kechikish (10000); / / DigitalWrite (led_yellow, HIGH); kechikish (2000); // digitalWrite kutilmoqda (led_green, HIGH); digitalWrite (led_red, LOW); digitalWrite (led_yellow, LOW); delay(10000); // digitalWrite kutilmoqda (led_sariq, YUQORI); digitalWrite(led_green, LOW); kechikish (2000); // DigitalWrite kutilmoqda (led_yellow, LOW); )

LEDlarni boshqarish uchun biz funksiyalardan foydalanamiz .

Keling, almashtiramiz standart funktsiyalar Led() funksiyangizga.

Void Led (uint8_t pin, bayt holati) (digitalWrite(pin, status); )

Funktsiya ikkita o'zgaruvchini qabul qiladi pin - LEDning pinini va holat - LED holati yoki .

Natijada, biz ushbu eskizni olamiz:

Int led_red = 2; // ulanish pin 2 int led_yellow = 3; // ulanish pin 3 int led_green = 4; // ulanish pin 4 bekor o'rnatish() ( pinMode(led_red, OUTPUT); pinMode(led_sarg'ish, OUTPUT); pinMode(led_green, OUTPUT); ) void loop() ( LED (led_red, HIGH); kechikish (10000); / / LEDni kutmoqda (led_sariq, HIGH); kechikish (2000); // LEDni kutmoqda (led_yashil, YUQORI); Led (led_red, LOW); Led (led_sariq, LOW); kechikish (10000); // LEDni kutish (LED_sariq, YUQORI); Led (led_yashil, LOW); kechikish (2000); // Led kutilmoqda (led_sariq, LOW); ) bekor Led (uint8_t pin, bayt holati) (digitalWrite (pin, holat); )

Eskizdan ko'rinib turibdiki, kod kattalashdi va funktsiyalari kod hajmini kamaytirish va mantiqni soddalashtirish uchun ishlatiladi. Ammo bu oddiy misolda biz funktsiya nima ekanligini va o'zgaruvchilarni funksiyalarga qanday o'tkazishni ko'rib chiqdik rivojlanish muhiti.

Bu nima ekanligi haqidagi tushuncha funktsiyalari va ularni qanday e'lon qilish biz uchun keyingi darsda foydali bo'ladi.

Agar sizda biron bir savol bo'lsa, men Arduino-da svetofor dasturini batafsil tasvirlab beradigan videoni tomosha qiling.

Shunday qilib, siz "Dare" seriyasidagi Arduino qurilish to'plamlaridan birining g'ururli egasisiz ("Basic", "Learning Arduino" va " Aqlli uy"), Siz allaqachon platani ulab, Arduino IDE-dagi birinchi misolni ishga tushirdingiz - Arduino uchun "Salom, dunyo" (o'rnatilgan LED miltillaydi). Yaxshi, siz Arduino-ga asoslangan loyihalar uchun dasturchi-rassom sifatida birinchi qadamni qo'ydingiz. Endi biz birgalikda yanada murakkab va ko'proq narsani ko'rib chiqamiz foydali loyihayaratish ustida Arduino asoslangan ikkita svetofor siz yaratgan robotlar harakatlanishi mumkin bo'lgan yo'lning kesishmasi uchun.
Yig'ish uchun Arduino svetofor Sizga Arduino to'plamlarining har biriga kiritilgan quyidagi qismlar kerak bo'ladi:

  1. Arduino Uno;
  2. USB kabeli;
  3. Prototiplash taxtasi;
  4. Erkak-erkak simlar - 7 dona;
  5. Rezistorlar 220 Ohm - 6 dona;
  6. Qizil LEDlar - 2 dona;
  7. Yashil LEDlar - 2 dona;
  8. Sariq LEDlar - 2 dona.

LED konvertatsiya qiluvchi yarimo'tkazgichli qurilma elektr toki to'g'ridan-to'g'ri yorug'lik nurlanishiga. LEDlarning rang xususiyatlari unda ishlatiladigan yarimo'tkazgichning kimyoviy tarkibiga bog'liq. LED spektrning tor qismida chiqaradi. Arduino svetofor loyihamizda biz svetoforning uchta rangiga mos keladigan LEDlarning uchta rangidan (yashil, sariq, qizil) foydalanamiz.
LEDlar polarizatsiyalangan, ularni qaysi yo'nalishda ulash muhim. LEDning musbat qo'rg'oshin (uzunroq) anod deb ataladi, salbiy qo'rg'oshin katod deb ataladi. Barcha diodlar singari, LEDlar oqimning faqat bitta yo'nalishda - anoddan katodgacha oqishiga imkon beradi. Oqim musbatdan salbiyga oqib o'tganligi sababli, LEDning anodiga ulanishi kerak raqamli signal 5V va katod erga ulangan bo'lishi kerak.
Biz birinchi svetoforning LEDlarini D7, D8, D9 raqamli pinlariga, ikkinchi svetoforning LEDlarini Arduino platasining D10, D11, D12 raqamli pinlariga ulaymiz. LEDlar har doim oqim cheklovchisi sifatida ishlaydigan qarshilik bilan ketma-ket ulanishi kerak. Qarshilik qiymati qanchalik baland bo'lsa, u oqimni shunchalik cheklaydi. Ushbu tajribada biz 220 ohm rezistordan foydalanamiz.
1-rasmda ko'rsatilgan sxemani yig'amiz.

Shakl 1. LED ulanish diagrammasi

Endi eskiz yozishni boshlaylik. Darsning birinchi qismida biz bitta svetoforning ishlashining eskizini yozamiz.
Biz bilamizki, svetofor quyidagicha ishlaydi: yashil chiroq (yashil LED) bir muncha vaqt yonadi, keyin yashil yonib turganda sariq yonadi, keyin qizil yonadi, keyin qizil yonib turganda sariq yonadi. va keyin aylanada. Yashil, sariq va qizil LEDlarning "yonishi" vaqti (millisekundlarda) va sariq LEDning miltillash chastotasi doimiylarga kiritiladi.

#TIME_GREEN 10000 ni aniqlang #TIME_RED 10000ni aniqlang #VAQTNI_SARIQ 3000 #aniqlash TIME_BLINK 300

Keling, konstantalar va pinlarga svetofor ulanishlarini qo'shamiz (ushbu misolda biz bitta svetoforni ko'rib chiqamiz)

#PIN-kodni aniqlang_GREEN1 7 #aniqlash PIN-kod _QIZIL 9 #aniqlash PIN_SARIQ 8

Keling, shuningdek, sariq rangli LEDning miltillashini tashkil qilish uchun ishlatiladigan miltillovchi sariq (mantiqiy turdagi) o'zgaruvchisini yarataylik (blinkyellow=to'g'ri - LED "yoqilgan", miltillovchi sariq=yolg'on - LED "o'chirilgan"). Ma'lumki, Arduino raqamli pinlari ham kirish, ham chiqish sifatida ishlashi mumkin. Raqamli chiqishning ishlash rejimi pinMode() buyrug'i bilan o'rnatiladi. Setup() protsedurasida biz LEDlar chiqish sifatida ulangan barcha Arduino pinlarini sozlaymiz va ularga LOW qiymatini o'rnatamiz (ya'ni, LEDlarni o'chiring).

// Arduino pinlarini pinMode (PIN_GREEN1, OUTPUT) chiqishi sifatida sozlash; pinMode(PIN_YELLOW1, OUTPUT); pinMode(PIN_RED1, OUTPUT); // va barcha LEDlarni o'chiring digitalWrite(PIN_GREEN1, LOW); digitalWrite(PIN_YELLOW1, PAST); digitalWrite (PIN_RED1, LOW);

Loop() protsedurasida biz svetoforni ishga tushiramiz. Qizil va yashil LEDlarning davomiyligi va sariq miltillash kechikish () funksiyasi yordamida o'rnatiladi.
Sariq LEDni miltillash uchun biz TIME_YELLOW va TIME_BLINK qadamli for tsiklidan foydalanamiz. blinkyellow= !blinkyellow buyrug'i bilan biz blinkyellow o'zgaruvchining qiymatini teskarisiga o'zgartiramiz va sariq rangli LED holatini o'zgartiramiz.

For(int i=0;i

Keling, Arduino IDE-da yangi eskiz yarataylik, unga 1-listdagi kodni qo'shamiz va eskizni Arduino taxtasiga yuklaymiz. Eslatib o'tamiz, Arduino IDE sozlamalarida siz plata turini (Arduino UNO) va plataga ulanish portini tanlashingiz kerak.
Ro'yxat 1

// LEDlarni ulash uchun Arduino pinlari #define PIN_GREEN1 7 #define PIN_YELLOW1 8 #define PIN_RED1 9 // LED yonish vaqtini milodiyda belgilang // yashil #define TIME_GREEN 5000 // qizil #define TIME_RED 5000 TIME //_ yellow #YOW 5000 TIME //_ ELL0 //3 period. sariq miltillovchi #define TIME_BLINK 300 // o'zgaruvchan sariq miltillovchi mantiqiy miltillash o'zgaruvchisi blinkyellow=true; void setup() ( // Arduino pinlarini chiqish sifatida o'rnating pinMode(PIN_GREEN1, OUTPUT); pinMode(PIN_YELLOW1, OUTPUT); pinMode(PIN_RED1, OUTPUT); // va barcha LEDlarni o'chiring digitalWrite(PIN_GREEN1, LOW); (PIN_YELLOW1, LOW); digitalWrite(PIN_RED1, LOW); ) // sikl funksiyasi qayta-qayta ishlaydi abadiy bekor tsikl() ( // yashil raqamli yozish(PIN_GREEN1, YUQORI); kechikish (TIME_GREEN); miltillovchi sariq=true; / / sariq - miltillovchi (int i=0;i

Yuklashdan so'ng biz svetoforning ishini kuzatamiz (2,3,4-rasmga qarang). TIME_GREEN , TIME_RED , TIME_YELLOW konstantalarining qiymatlarini o'zgartirish orqali biz har bir LEDning "yonish" vaqtini o'zgartiramiz; TIME_BLINK konstantasi bilan biz sariq LEDning miltillash davrini sozlaymiz.


Hammaga xayrli kun)) Ushbu maqolada men qanday qilish mumkinligi haqida iloji boricha aniq gapirishga harakat qilaman haqiqiy svetoforning maketi. Farzandingiz mashinalar bilan shug'ullanishni yaxshi ko'rsa, uning o'yin jarayoniga haqiqat qo'shish, shuningdek, ushbu faoliyatni yanada qiziqarli, qiziqarli va qiziqarli qilish unchalik qiyin emas! Shunday qilib, keling, svetoforni yarataylik! Va shuning uchun ketaylik!

Bizga qanday materiallar kerak:
Tolkushka (biz uni ixtiromiz uchun asos sifatida ishlatamiz!)


Akvarel uchun varaqlar (siz karton yoki boshqa qalin qog'ozdan foydalanishingiz mumkin)


Folga (men oddiy sirlangan cheesecake o'ramlaridan foydalanganman)


LEDlar (uch rang: qizil, sariq, yashil)


Rezistorlar (qarshilik 220 Ohm)


Simlar


Arduino boshqaruvchisi


Biz foydalanadigan vositalar:
Qo'lda matkap (ingichka matkap uchlari bilan)
Tornavida
O'z-o'zidan tejamkor vintlardek
Stapler
Pichoq


Lehimlash temir (lehim, oqim)


Hammasi shu, endi bizning maketimizni yig'ish jarayoniga o'taylik. Keling, hamma narsani 3 ta katta bosqichga ajratamiz ...

№ 1-qadam "Vizorlarni" yig'ish
Boshlash uchun biz qog'ozdan svetofor visorlarini qilamiz. Uni qalam bilan chizib oling va qaychi bilan kesib oling (fotosuratdagi raqamlar uzunligi santimetrda).


Bo'sh joyimizni yig'ish orqali biz visorga ega bo'lamiz.


Ammo LEDlar chiqaradigan yorug'lik iloji boricha yorqinroq aks etishi uchun folga ichki yuzaga biriktirilishi kerak.
Birinchidan, biz uni visor bilan bir xil shaklda kesib tashladik (pichoq yordamida), keyin ikkala materialni oddiy zımba bilan mahkamlaymiz.


Suratda (quyida) men qaerga mahkamlaganimni qora chiziqlar bilan ko'rsatdim ...


Shundan so'ng, biz ish qismini aylantiramiz va qolgan yon qismlarni mahkamlaymiz.



Biz butun jarayonni uch marta takrorlaymiz, chunki bizda uchta visor bo'lishi kerak!

Qadam № 2 "Visorlarni" biriktirish
Matkap yordamida biz maydalagichdagi visorlarimiz uchun teshiklarni burg'ulaymiz.


Visorning orqa tomonida biz ikkita teshik qilamiz: o'z-o'zidan tejamkor vint uchun kichikroq, LED uchun kattaroq.


Biz LEDlarni orqa tomondan o'tkazamiz va visorlarni itargichga buramiz. Hozircha biz faqat LEDlarning oyoqlarini yon tomonlarga egamiz .. Shunga qaramay, har bir visor uchun hamma narsani takrorlaymiz.


3-bosqich "Elektronika"
Biz LEDlarning katodlarini (ularning asoslarini) birgalikda lehimlaymiz. Eslatib o'taman, katod qisqa oyoqdir)



Biz umumiy asosni mikrokontrollerning GND-ga kiritamiz.
Endi qolgan uchta simni olib, ularni rezistorlarga lehimlaymiz.


Biz simlarni Arduino kontaktlariga ulaymiz (men 2, 3, 4-pinlarni oldim) va rezistorlarning uchlarini LED anodlariga lehimlaymiz.




Endi keyingisini yuklab olish qoladi eskiz Arduino-da va yaqinlaringizni hunaringiz bilan xursand qiling!
mantiqiy k = 0; bekor oʻrnatish() ( pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); ) bekor sikl() (digitalWrite(2,1); digitalWrite(3,0); digitalWrite(4, 0); kechikish (3500); for (int i = 0; i<6; i++) { digitalWrite(2, k); k = !k; delay(800); } digitalWrite(2,0); digitalWrite(3,1); digitalWrite(4,0); delay(3500); for(int i = 0; i<6; i++) { digitalWrite(3, k); k = !k; delay(800); } digitalWrite(2,0); digitalWrite(3,0); digitalWrite(4,1); delay(3500); for(int i = 0; i<6; i++) { digitalWrite(4, k); k = !k; delay(800); } }
Eskizni tahrirlang va o'zingizning miltillash vaqti va kechikishingizni o'rnating!

Dachjeldorning barcha tarafdorlari, ishqibozlari, hamdardlari va nurni ko'rish uchun kelganlarga salomatlik!)))

O'tgan yili biz boshlagan yozgi temir yo'l transportini svetofor bilan tartibga solish mavzusi yangi yilga muammosiz kirib boradi, bu muammoga yangi ishtirokchilar va yangi qarashlarni jalb qiladi. Va bugun Moskvadan Anatoliy jamoatchilikka ushbu mavzu bo'yicha butun tadqiqotni taqdim etmoqda. Doimiy o'quvchilar uni biz bilan Accelero taxallusi ostida nashr etadigan sharhlaridan bilishadi.

Rostini aytsam, biz - Sergey (nashpoezd) va sizning kamtarin xizmatkoringiz - muallifga dachjeldorning ehtiyojlari, Sergey va men yo'lni ishlatish bo'yicha tajribamiz va ularni yanada rivojlantirish bo'yicha rejalarimiz haqida bir oz maslahat berdik. .

Assalomu alaykum, aziz dazzeldorliklar!

Men o'zim ham bu harakatga endigina qo'shilayapman va o'zimning temir yo'lim hali ham rejalarimda, lekin shunga qaramay, bahorni kutmasdan amalga oshirishim mumkin bo'lgan narsadan boshlashga qaror qildim. Tanlov avtomatik svetoforlarga tushdi. Men radio havaskoriman va yaqinda taniqli arduino modullaridan foydalangan holda turli xil qurilmalarni loyihalashtirganim uchun ular asos qilib olingan. Tanlov arduino nano-ga tushdi, chunki u bizning maqsadlarimiz uchun eng mos keladi, o'rnatish oson va bortda USB-TTL adapteri mavjud (men asosan arduino pro mini-dan foydalanaman, lekin adapter yo'q, bu unchalik qulay emas, lekin Narx uchinchi baravar past).

Mening tizimim ikkita kontaktni ketma-ket yopish orqali yo'lning to'ldirilishi holatini aniqlaydi, ular chegara kalitlari shaklida va qamish kalitlari shaklida bo'lishi mumkin yoki oddiygina trolleybus tanasi tomonidan yopilgan kontakt pinlari bo'lishi mumkin. Tartibda menda faqat qog'oz qisqichlardan qilingan kontaktlar bor. Ushbu maqola yozilgunga qadar, men allaqachon qamish kalitlari bilan variantni sinab ko'rdim - hamma narsa mukammal ishlaydi. Aynan ikkita kontakt guruhidan foydalanishning mohiyati harakat tarkibining harakat yo'nalishini (keyingi o'rinlarda harakat tarkibi deb yuritiladi), ya'ni harakat tarkibining bir yo'nalishda necha marta o'tishidan qat'i nazar (aytaylik, birlashtiruvchi va har biri) aniqlashdan iborat. avtomobil kontaktlarni yopadi), svetofor kerakli signalni ko'rsatadi. Aynan shunday tizimning asosiy afzalligi shundaki, u deyarli har qanday temir yo'lga o'rnatilishi mumkin - o'yinchoqdan tortib to sanoatgacha, klassik tizimdan farqli o'laroq, relslarni g'ildirak juftlari bilan yopib qo'yish bilan bir qator cheklovlar mavjud.

Davom etishdan oldin, shunga o'xshash narsalarni qurmoqchi bo'lganlarga Arduino haqida o'qishni va/yoki uning nima ekanligi, nima bilan ishlatilishi, uni kompyuterga qanday ulash, qanday miltillash, qanday foydalanish haqida video tomosha qilishni tavsiya qilaman. Arduino IDE va ​​boshqalar.

Materialning matnli versiyasi juda katta bo'lgani uchun men o'z ishimni videolarga ajratdim. Dasturlarga barcha havolalar (eskizlar), kerakli ma'lumotlar va boshqalar video ostidagi tavsiflarda.

Shunday qilib, birinchi videoda biz eng oddiy variant - bitta ikkita rangli svetofor haqida gapiramiz. Bunday ibtidoiy sxemani bitta o'rni ustida amalga oshirish mumkinligi aniq, ammo bu dasturning mantig'ini tushunish uchun kerak, shunda kelajakda siz uni o'ziga xos ehtiyojlaringizga mos ravishda to'ldirishingiz mumkin. Men dasturchi emasman, shuning uchun meni qattiq tepmang - iloji boricha tushuntiraman =))

Oddiy ikki rangli svetofor

Umid qilamanki, men ish mantig'ini etkaza oldim)) Keyingi "murakkabliklar" faqat birinchi dasturga qo'shimchalar, shuning uchun uni tushunganingizdan so'ng, uning ishini o'zingizning qattiq diskingizga moslashingiz mumkin. Endi keyingi variantga o'tamiz. U allaqachon ikkita svetoforni o'z ichiga oladi, ular ham sariq signalga ega, ya'ni sayohat yo'nalishidagi birinchi svetofor ikkinchi svetoforning bandligini ko'rsatadi.

Ikkita uch rangli svetofor

Ko'rib turganingizdek, dastur allaqachon juda murakkab, ammo bu birinchi qarashda ko'rinishi mumkin - uni o'zingiz tahrir qilganingizda, hamma narsa ancha sodda. Xo'sh, "voqealarni rivojlantirish" uchun uchinchi variant - kalitlar va svetoforlar. Bu erda hamma narsa qiziqarliroq, chunki yo'l ikkiga bo'lingan va siz ikkalasi uchun ish mantig'ini bog'lashingiz kerak. Uch kun davomida men bu biznesni qanday qilib hech bo'lmaganda maqbul bo'lishini o'ylab o'yladim va oxirida men bir fikrga keldim! Ba'zi qo'pol qirralarsiz emas, lekin baribir!

Svetoforlar va kalitlar

Ko'rib turganingizdek, biz birinchi svetoforni dasturiy ravishda ikkiga bo'lishimiz kerak edi (garchi bu jismoniy jihatdan amalga oshirilishi kerak bo'lsa ham), lekin shunga qaramay, sxema ishlamoqda.

Birinchi videoda aytib o'tganimdek - kichik LEDdan kuchliroq narsani almashtirish uchun bizga o'rni va tranzistorlar kabi tashqi modullar/qismlar kerak. Ma'lum bir kontroller darajalari bilan ishlashga mo'ljallangan o'rni modullaridan foydalanish yaxshidir. Arduino nano va deyarli butun chiziq bo'lsa, u 5 voltni tashkil qiladi. Mening dasturlarimda boshqaruv uchun yuqori daraja qo'llaniladi (ya'ni, chiqishlarda kuchlanish paydo bo'ladi), shuning uchun modullarni ijobiy boshqarish bilan ishlatish kerak, lekin sizda salbiy darajada ishlaydigan modul bo'lsa ham (mantiqiy nol, chiqish tuproq / minus) , keyin bu ham muammo emas - dasturni biroz tahrirlashingiz kerak. O'rnimizni modullari turli dizaynlarda sotiladi - bitta o'rni, ikki, to'rt, sakkiz, o'n, o'n olti, hatto 32. Ikki rangli svetoforni boshqarish uchun bitta rele kifoya qiladi. Uch rangli svetoforda miltillash sodir bo'lishi uchun uchta o'rni ishlatgan ma'qul, lekin siz ikkitadan o'tishingiz mumkin, chunki o'rni uchta kontaktga ega - markaziy bitta va ikkita chiqish, bittasi Bu odatda markaziy bilan yopiladi, ikkinchisi odatda ochiq va bu dasturni yangilash bilan yana nazoratchi chiqishlarini saqlash uchun ishlatilishi mumkin.

Arduino uchun turli xil datchiklar, modullar, lehim va ulagichlar to'plamiga ega - har qanday lazzat va rang uchun juda ko'p nomli plitalar (kengaytma taxtalari) mavjud. Siz to'g'ridan-to'g'ri lehimlashingiz mumkin (bu afzalroq, chunki pin kontaktlari vaqt o'tishi bilan ishlay boshlaydi) yoki siz modullar va boshqaruvchini kabel orqali ulashingiz mumkin. Avtomatlashtirish faqat tasavvur va dasturlash qobiliyati bilan cheklangan (afsuski, ikkinchisi men uchun qiyin) - siz to'siqlar va to'siqlar yasashingiz mumkin, hatto trolleybuslarni o'zlari haydashlari va svetoforlarga bo'ysunishlari mumkin, ammo ular aytganidek, "bu butunlay boshqacha. hikoya!”

Umid qilamanki, bu material foydali bo'ladi. Yangi narsa paydo bo'lishi bilan men mavzuga qo'shaman. Hammaga o'z, hatto eng aqldan ozgan (qonun doirasida =)) g'oyalarini amalga oshirishda omad tilaymiz!

Arduino. Boshlash

Salom! Biz Arduino dunyosida yosh jangchi uchun kursni boshlaymiz.

Bu birinchi daraja. Bu DIY elektronika olamiga endigina kirib kelgan va darsliklarni soatlab ko'rib chiqmasdan nima ekanligini tushunishni istaganlar uchun mo'ljallangan. Albatta, biz nazariyasiz qilolmaymiz, lekin biz buni darhol amaliyot bilan qo'llab-quvvatlaymiz.

Qanday boshlash kerak

Kursni boshlash uchun sizga kerak:

  1. Arduino ishlab chiqish muhitini yuklab oling.
  2. O'zingizga Arduino platasini yoki uning ekvivalentini oling.
  3. Doskani kompyuterga qanday ulashni bilib oling.
  4. O'zingizga kukun sotib oling. Barcha kerakli ma'lumotlar tavsifda bo'ladi.
  5. Xato qilishdan qo'rqmang. Xatolarsiz rivojlanish bo'lmaydi.
  6. Albatta, DIY Zenni boshdan kechirish istagi bor.

Agar siz energiyaga to'la bo'lsangiz, sizda kerakli komponentlar mavjud va siz elektronika olamini kashf etishga tayyor bo'lsangiz, xush kelibsiz!

Kursimizning aksiomalari

Agar biror narsa noto'g'ri bo'lsa, elektr kabelini ajratib qo'yish yaxshiroqdir va shundan keyingina kontaktlarning zanglashiga olib o'ting.

Kodni o'zingiz yozishingiz kerak, misolni ko'chirmang. Shunday qilib, siz ko'p narsalarni eslaysiz, agar nusxa ko'chirsangiz, ozgina.

Diagrammalarda bo'lgani kabi tel ranglariga rioya qilish shart emas. Rang har qanday bo'lishi mumkin, bu sxemaning funksionalligiga ta'sir qilmaydi.

Barcha tajribalarimizda (1-daraja) biz ArduinoUNO va ishlab chiqish taxtasidan foydalanamiz. Ular darsni o'tkazish uchun zarur bo'lgan komponentlarda tasvirlanmaydi. Men ularni faqat birinchi darsda tasvirlab beraman.

Bizning kursimizda ko'rsatilgan barcha echimlar yagona to'g'ri emas. Muayyan muammo uchun boshqa, yanada oqilona yechim topsangiz, noto'g'ri deb o'ylamang. Esda tutingki, men Arduino bilan ishlash asoslarini va umumiy muammolarni qanday hal qilishni ko'rsataman. Va keyin siz o'zingizning xohishingiz bilan kodni yoki diagrammalarni murakkablashtirishingiz/soddalashtirishingiz mumkin. O'zingiz xohlagan narsani qiling (albatta, aql bilan)

Birinchi qurilma

Bizning birinchi kichik loyihamiz yo'lda juda foydali narsa bo'ladi - svetofor.

Kimdir svetoforning qanday ishlashi haqida o'ylab ko'rganmi? Hech qanday murakkab sxemalar yoki juda ko'p elektronika yo'q, faqat taymer va kichik boshqaruv paneli.

Kichik svetofor yasashga harakat qilamiz. Bu Arduino bilan boshlash uchun mukammal boshlanish bo'ladi.

Svetoforning ishlash algoritmi

Har bir loyiha qog'ozda boshlanadi. Va bizniki bundan mustasno emas. Svetoforning ishlash sxemasini harakatlar ketma-ketligi sifatida tasavvur qilaylik.

Rasmda shuni ko'rsatadiki, bir harakatlar tsiklidan keyin biz uni qayta-qayta boshlaymiz. Harakatlar qat'iy tartib bo'yicha amalga oshiriladi va ularning navbati kelguniga qadar bajarilmaydi. Demak, biz dasturimizni qat'iy algoritmga muvofiq yozishimiz kerak.

Shunday qilib, biz algoritmni aniqladik. Endi biz svetoforimizni yig'ishimiz kerak.

Svetofor qismlari

Qizil LED 1 dona

Sariq LED 1 dona

Yashil LED 1 dona

220 Ohm qarshilik 3 dona

Ulanish simlari "Erkak-Erkak" 7 dona

Assambleya

Biz svetoforimizni sxema bo'yicha yig'amiz. Asosiysi, LEDlarning polaritesini saqlab qolish. LED uchun anod ortiqcha, katod esa minus. Uzun oyoqni (anod) pinlarga ulang (Pin - bu pin yoki kontakt, siz xohlaganingizcha.) Shuningdek, siz LEDlarni 13, 12 va 11-pinlarga ulashingiz kerak. Yashil - 13, sariq - 12, qizil - 11.

Kod

Ajoyib. Bizda mini svetofor bor. Va endi biz buni amalga oshirishimiz kerak.

Buning uchun biz taxtani dasturlashimiz kerak. Qo'rqmang, bu vazifa qiyin emas. Sizga ozgina e'tibor kerak, shunda hammasi o'z nihoyasiga yetadi.Maqolaga ishchi kod ilova qilinadi.Agar siz funksiyalar nimani anglatishini va ularni nima uchun bunday yozishimizni bilishga qiziqsangiz, arduino.ru saytiga kirishingiz mumkin.

Keling, kodni ko'rib chiqaylik:

//Keyinchalik biz kodni qanday qilib ixcham va o'qilishi mumkin bo'lishini o'rganamiz, lekin avval buni aniqlab olishimiz kerak. void setup() ( pinMode(13, OUTPUT); // Bu bizning yashil LED, biz uni chiqish sifatida belgiladik. pinMode(12,OUTPUT); // Bu sariq pinMode(11,OUTPUT); // Bu qizil ) // Endi qog'ozga yozilgan algoritmimizni dasturga o'tkazish kerak. void loop() ( digitalWrite(11, HIGH); //Qizil LED kechikishini yoqing (5000); //Yonguncha kuting. digitalWrite(12, HIGH); //Sariqni qizil bilan birga yoqing. .delay(1000) ; //Bir oz kuting digitalWrite(11, LOW); //Endi qizil va sariq rangni oʻchirishimiz kerak, digitalWrite(12, LOW); digitalWrite(13, HIGH); //Va yashil rangni yoqing. delay(5000); //Yashil yonishini kuting digitalWrite(13, HIGH); // Endi yashil rangda miltillaydi, bu qism kichraytirilishi mumkin. Bu haqda biroz keyinroq gaplashaman. delay(800); digitalWrite(13, LOW); kechikish (800); digitalWrite (13, YUQORI); kechikish (800); digitalWrite (13, LOW); kechikish (800); digitalWrite (13, yuqori); kechikish (800); digitalWrite (13, LOW) ; // Sariqni yoqing va yashil rangni o'chiring digitalWrite(12, HIGH ); delay(1000); digitalWrite(12, LOW); //Sariq kechikishni o'chiring(10); //Tsikl cheksiz ko'p marta takrorlanadi .)

Endi bizda svetofor ishlaydi.

Kamroq kod

Keling, kodimizni o'qish qobiliyatini oshirib, uni yanada ixcham qilishga harakat qilaylik.

Keling, kodimizni ko'rib chiqaylik.

// To'g'riroq kod. // Yaxshiroq o'qilishi uchun siz so'l ta'riflarni berishingiz kerak. // Ibratli ta'rif Word dasturining "Topish va almashtirish" funksiyasi bilan bir xil ishlaydi. #define GREEN 13 // 13-pinni Yashil deb belgilaymiz. #define SARI 12 // 12 - sariq kabi. #define RED 11 // 11 - qizil kabi. // Dastur parametrlarini o'rnatishda ishni soddalashtirish va yaxshi o'qilishi uchun biz o'zgaruvchilar yaratishimiz kerak. int main_delay = 5000; // Qizil va yashil yonish vaqti int mini_delay = 1000; // Sariq yonish vaqti int blink_delay = 800; // Yashil miltillovchi vaqtni bekor o'rnatish() ( pinMode(GREEN, OUTPUT); pinMode(SARI, OUTPUT); pinMode(QIZIL, OUTPUT); ) void loop() ( digitalWrite(QIZIL, HIGH); kechikish(main_delay); digitalWrite (SARIQ, YUQORI); kechikish(mini_kechikish); digitalWrite(QIZIL, PAST); digitalWrite(SARIQ, PAST); DigitalWrite(YaSIL, YUQORI); kechikish(asosiy_kechikish); DigitalWrite(YaSIL, PAST); // Endi biz yashil rangda miltillaymiz Ular hisoblagich tsikli deb ataladigan vosita yordamida miltillashi mumkin: for(int i = 0; i< 3; i = i+1) { delay(blink_delay); digitalWrite(GREEN, HIGH); delay(blink_delay); digitalWrite(GREEN, LOW); } digitalWrite(YELLOW, HIGH); delay(mini_delay); digitalWrite(YELLOW, LOW); delay(mini_delay); } // Теперь наш код стал компактнее и читабельнее. // Но запомни, тебе следует давать осмысленные имена переменным и макроопределениям.Это улучшает читабельность. // Если ты через месяц откроешь свой код, ты поймешь о чем я говорю.

Tushuntirishlar

Uchun- Bu hisoblagich sikl deb ataladi.Ushbu sikl qavs ichiga olingan amallarni ma'lum bir necha marta takrorlaydi. Qavslar ichida takrorlanish soni ko'rsatilgan.

Umuman olganda, uni quyidagicha yozish mumkin:

uchun (O'zgaruvchi; Shart; O'zgartirish)

(Kod takrorlanadi)

O'zgaruvchan- faqat for tsikli uchun yaratilgan o'zgaruvchi. Tsiklni "boshlash" uchun kerak. Ya'ni, o'zgaruvchini sikl sharti bilan solishtiring.

Vaziyat- shart, agar rost bo'lsa, jingalak qavs ichidagi amallar bajariladi.

O'zgartirish- o'zgaruvchining o'zgarishi qoidasi. O'zgartirish vaziyatni tekshirgandan so'ng amalga oshiriladi. Shundan so'ng, o'zgartirilgan o'zgaruvchi tekshiriladi.

Dars xulosasi

Endi kod yanada o'qilishi mumkin va ixcham. Bugun siz svetoforni qanday yasashni o'rgandingiz. Bu hali boshlanishi. Siz dam olishingiz va olingan ma'lumotni hazm qilishingiz kerak. Ammo davom etishni xohlasangiz, keyingi maqolaga o'ting.

Radioelementlar ro'yxati

Belgilanish Turi Denominatsiya Miqdori EslatmaDo'konMening bloknotim
Arduino taxtasi

Arduino Uno

1 Bloknot uchun
Yorug'lik chiqaradigan diod

AL307V

1 Bloknot uchun
Yorug'lik chiqaradigan diod

AL102B

1
Sozlamalar