Blink klassik birinchi sketch hisoblanadi. Unda ikki svetodiod navbatma-navbat yonadi: D2 pinidagi qizil svetodiod moduli va Unoga oʻrnatilgan, D13 pinidagi kichik L svetodiodi. Biri yonib turganda ikkinchisi oʻchiq boʻladi, har yarim soniyada esa ular oʻrin almashadi. Sketch qanday tuzilishini, Uno oʻz pinlarini qanday yoqib-oʻchirishini, modulni qanday ulash va kodni qanday yuklashni oʻrganasiz. Bu boshlangʻich loyiha, u taxminan 15 daqiqa vaqt oladi.
Nima kerak
Arduino Uno R3Simulyatorda bor× 1Narxni doʻkonda koʻring
Svetodiod moduli 5 mm, qizilSimulyatorda bor× 1Narxni doʻkonda koʻring
Arduino Uno uchun USB A–B kabeli× 1Narxni doʻkonda koʻring
Simulyator uchun shuning oʻzi yetarli. Simulyator stolida Uno quvvatni noutbukning USB portidan oladi, xuddi kompyuterga ulangan haqiqiy Uno kabi. Haqiqiy yigʻish uchun sizga Arduino IDE oʻrnatilgan kompyuter ham kerak boʻladi, bu dasturni arduino.cc saytidan bepul olish mumkin. Marketdagi boshlangʻich toʻplamni ham koʻring.
Qanday ishlaydi
Unoning har bir raqamli pini sketchingiz boshqaradigan kalit kabi ishlaydi. Sketch pinni HIGH holatiga qoʻysa, pin 5 V beradi. Pinni LOW holatiga qoʻysa, pin 0 V beradi, xuddi GND kabi.
Svetodiod moduli qizil svetodiod va 220 Om li rezistor oʻrnatilgan kichik plata. D2 HIGH boʻlganda tok D2 dan rezistor va svetodiod orqali oʻtadi, modulning - pinidan chiqadi va Unoning GND piniga qaytadi. Mana shu yopiq yoʻl elektr zanjiri deyiladi. GND simi boʻlmasa, tok uchun yoʻl ham boʻlmaydi va svetodiod yonmaydi.
Rezistor tokni cheklaydi. Qizil svetodiodda taxminan 2 V tushadi, shuning uchun rezistorga taxminan 3 V qoladi. 3 V ni 220 Om ga boʻlsak, taxminan 14 mA chiqadi. Bu Uno pini xavfsiz bera oladigan 20 mA dan ancha kam.
L svetodiodi Uno platasida allaqachon bor va D13 ga ulangan, shuning uchun unga hech qanday sim kerak emas.
Bir soniya ichida ikki pin nima qilishini koʻring:
| Vaqt | D2: svetodiod moduli | D13: L svetodiodi |
|---|---|---|
| 0 dan 500 ms gacha | HIGH: yonadi | LOW: oʻchiq |
| 500 dan 1000 ms gacha | LOW: oʻchiq | HIGH: yonadi |
| 1000 ms dan keyin | yana xuddi shunday | yana xuddi shunday |
Unoga quvvat berilib turgan ekan, bu tartib takrorlanaveradi.
Yigʻish
1. Loyihani simulyatorda yigʻing
Bu loyihaga korpus kerak emas: Uno va svetodiod moduli stol ustida yonma-yon turadi, Uno esa noutbukning USB portidan quvvat oladi.
Haqiqiy yigʻishda: Unoni ostida hech qanday metall boʻlmagan stolga qoʻying. Metall plataning pastki tomonidagi pinlarni bir-biriga ulab qoʻyishi mumkin.
2. Svetodiod modulini ulang
| Qayerdan | Qayerga | Nima uchun |
|---|---|---|
| Uno GND | Svetodiod moduli GND | Yer (GND) |
| Uno D2 | Svetodiod moduli S | HIGH svetodiodni yoqadi |
Ikkita sim yetarli: S pini D2 ga, - pini esa GND ga ulanadi. Unoda bir nechta GND pini bor. Ularning hammasi plata ichida oʻzaro ulangan, shuning uchun istalgan biridan foydalanish mumkin.
Haqiqiy yigʻishda: koʻpchilik svetodiod modullarida pinlar, Unoda esa uyalar boʻladi. Shuning uchun bir uchida pin, ikkinchi uchida uya boʻlgan ulash simlaridan (jumper sim, male-to-female) foydalaning. Simlarni USB kabelni ulashdan oldin ulang. Quvvat berilgan platada simlarni almashtirish qisqa tutashuvga olib kelishi mumkin.
3. Sketchni tekshiring
«Kod» boʻlimini oching. U Arduino IDE kabi ishlaydi. Shu sahifadagi Blink sketchini unga qoʻying (kod ustidagi «Nusxalash» tugmasi uni nusxalab beradi) va «Tekshirish» tugmasini bosing. Sketch kompilyatsiya qilinadi, yaʼni C++ matni Unodagi ATmega328P chipi uchun mashina kodiga aylantiriladi. Simulyator haqiqiy Arduino IDE bilan bir xil kompilyatsiya vositalaridan foydalanadi. Agar xato boʻlsa, xato xabari u qaysi qatorda ekanini koʻrsatadi.
Haqiqiy yigʻishda: Arduino IDE dasturini ishga tushiring, yangi sketch yarating va unga shu sahifadagi kodni qoʻying. Kod ustidagi «Nusxalash» tugmasi uni siz uchun nusxalab beradi. «Arduino Uno» platasini tanlang va «Tekshirish» (Verify) tugmasini bosing.
4. Yuklang va kuzating
«Yuklash» tugmasini bosing. Sketch Unoga yoziladi va darhol ishga tushadi. Endi svetodiod moduli va L svetodiodi har yarim soniyada navbatma-navbat yonadi.
Haqiqiy yigʻishda: Unoni kompyuterga USB kabel bilan ulang. Uno R3 da kvadrat shaklidagi USB-B uyasi bor, printerlarda ham xuddi shunday uya boʻladi. Arduino IDE oynasida Uno paydo boʻlgan portni tanlang va «Yuklash» (Upload) tugmasini bosing. Sketch yuborilayotganda platadagi kichik TX va RX svetodiodlari lipillaydi, keyin miltillash boshlanadi. Sketch quvvat boʻlmasa ham Unoning xotirasida saqlanib qoladi. Unoga keyingi safar quvvat berilganda sketch oʻz-oʻzidan yana ishga tushadi.
5. Oʻzgartirib koʻring
Ikkala delay(500) qatorini delay(100) qilib oʻzgartiring va sketchni qayta yuklang. Endi svetodiodlar besh marta tezroq oʻrin almashadi. Soʻng S simini D2 dan D3 ga oʻtkazing va LED_MODULE qiymatini 2 dan 3 ga oʻzgartiring. Sim va sketchdagi raqam doim bir-biriga mos boʻlishi kerak. Mos kelmasa, svetodiod yonmaydi.
Kod
// Blink: the LED module on D2 and the Uno's own "L" LED on D13 take turns.
// Wiring: LED module S -> D2, LED module - (GND) -> GND.
const byte LED_MODULE = 2; // the module's S pin
const byte LED_BOARD = 13; // the L LED soldered on the Uno
void setup() {
pinMode(LED_MODULE, OUTPUT); // pins start as inputs: make these two outputs
pinMode(LED_BOARD, OUTPUT);
}
void loop() {
digitalWrite(LED_MODULE, HIGH); // 5 V on D2: the module's LED lights
digitalWrite(LED_BOARD, LOW); // 0 V on D13: the L LED goes dark
delay(500); // wait half a second
digitalWrite(LED_MODULE, LOW);
digitalWrite(LED_BOARD, HIGH);
delay(500);
}Pinlar uchun nomlar
const byte LED_MODULE = 2; // the module's S pin
const byte LED_BOARD = 13; // the L LED soldered on the UnoBu ikki qator pin raqamlariga nom beradi. const sketch ishlayotganda qiymat hech qachon oʻzgarmasligini bildiradi. byte 0 dan 255 gacha boʻlgan butun son, pin raqami uchun bu yetarli. Sketchning qolgan qismi shu nomlardan foydalanadi. Shuning uchun simni boshqa pinga oʻtkazsangiz, faqat shu yerdagi bitta raqamni oʻzgartirasiz, boshqa hech narsani emas.
setup(): bir marta ishlaydi
setup() funksiyasi Uno ishga tushganda bir marta bajariladi. Boshida barcha pinlar kirish boʻladi, ular faqat «tinglay» oladi. pinMode(LED_MODULE, OUTPUT) D2 ni 5 V yoki 0 V bera oladigan chiqishga aylantiradi. Keyingi qator D13 uchun ham xuddi shuni qiladi.
loop(): toʻxtovsiz ishlaydi
setup() tugagach, Uno quvvat bor ekan, loop() funksiyasini qayta-qayta bajaradi. Mana uning birinchi yarmi:
digitalWrite(LED_MODULE, HIGH); // 5 V on D2: the module's LED lights
digitalWrite(LED_BOARD, LOW); // 0 V on D13: the L LED goes dark
delay(500); // wait half a seconddigitalWrite() pinni HIGH (5 V) yoki LOW (0 V) holatiga qoʻyadi. delay(500) Unoni 500 millisekund kutishga majbur qiladi. Millisekund soniyaning mingdan bir qismi. loop() funksiyasining ikkinchi yarmi buning teskarisini qiladi: D2 LOW, D13 HIGH va yana 500 ms. Keyin loop() yana boshidan boshlanadi.
delay() ning kamchiligi
delay() kutayotganda Uno boshqa hech narsa qilmaydi. Blink uchun bu muammo emas. Robot esa bir vaqtning oʻzida harakatlanishi, oʻlchashi va qaror qabul qilishi kerak, u kutib turish uchun toʻxtay olmaydi. delay() ishlatmasdan qanday miltillatish mumkinligini millis() va holatlar haqidagi dars koʻrsatadi.
Agar ishlamasa
- Simulyatorda hech narsa miltillamayapti. Faqat «Tekshirish» emas, «Yuklash» tugmasini ham bosing. «Tekshirish» sketchni faqat kompilyatsiya qiladi. «Yuklash» esa uni plataga yuboradi.
- Tekshirishda xato chiqyapti. Xabardagi qator raqamiga qarang. Koʻpincha sabab tushib qolgan
;yoki notoʻgʻri bosh harf boʻladi:digitalwritebilandigitalWritebir xil emas. Qaytadan boshlash uchun asl sketchni «Nusxalash» tugmasi bilan nusxalab oling. - L svetodiodi miltillayapti, lekin modul yonmayapti. S pini D2 ga, - pini GND ga ulanganini tekshiring. Ikki sim almashib qolgan boʻlsa, tok svetodiod orqali bu yoʻnalishda oqa olmaydi, shuning uchun u yonmaydi.
LED_MODULEqiymati siz ishlatgan pinga mos kelishini ham tekshiring. - Moduldagi svetodiod juda xira yonyapti. Pin hali ham kirish boʻlib qolgan.
setup()ichidapinMode(LED_MODULE, OUTPUT)borligini tekshiring. - Arduino IDE Unoning portini koʻrsatmayapti (haqiqiy yigʻish). Kabelni uzib, qayta ulang va qaysi port paydo boʻlishiga qarang. Boshqa USB kabelni sinab koʻring, chunki baʼzi kabellar faqat quvvat oʻtkazadi. Baʼzi Uno nusxalarida CH340 USB chipi boʻladi, baʼzi kompyuterlarda u uchun drayver oʻrnatish kerak.
- Yuklashda dasturlovchi javob bermayotgani (programmer is not responding) haqida xabar chiqyapti (haqiqiy yigʻish). Plata sifatida Arduino Uno tanlanganini va toʻgʻri port tanlanganini tekshiring. D0 va D1 dagi barcha simlarni olib tashlang: bu pinlar orqali USB maʼlumotlari uzatiladi.
Keyingi qadamlar
Endi siz sketch orqali pinni yoqib-oʻchira olasiz. Robot ham chiroqlari va motor drayverini xuddi shunday boshqaradi.
- Platani Arduino Uno va birinchi dastur haqidagi darsda yaqinroq tanib oling.
- millis() va holatlar haqidagi darsda ikkita svetodiodni
delay()ishlatmasdan, ikki xil tezlikda miltillating. - Biror narsani harakatga keltiring: Birinchi yurish loyihasida robot-mashina yigʻiladi va u kvadrat boʻylab yuradi.
Yanada yaxshilang
- Qisqa chaqnash qiling: svetodiod moduli 100 ms yonsin, keyin 900 ms oʻchiq tursin.
- Ikkala svetodiod navbatma-navbat emas, birga miltillasin.
- Morze alifbosida SOS signalini bering: uchta qisqa chaqnash, uchta uzun chaqnash, yana uchta qisqa chaqnash.
