Arduino Uno: pinlar va birinchi dasturingiz
Arduino Uno pinlari va quvvati, HIGH va LOW, svetodiodga nega rezistor kerakligi va birinchi sketchingiz: navbatma-navbat yonadigan ikki svetodiod, setup() va loop() dan «Yuklash»gacha.
Asosiysi
- D0-D13 raqamli pinlari chiqish yoki kirish boʻlib ishlaydi; HIGH — taxminan 5 V, LOW — 0 V.
- PWM pinlarida ~ belgisi bor (D3, D5, D6, D9, D10, D11); A0-A5 — analog kirishlar.
- Pin xavfsiz holatda 20 mA, koʻpi bilan 40 mA beradi, shuning uchun svetodiodga doim rezistor kerak.
- setup() bir marta ishlaydi, keyin loop() qayta-qayta ishlayveradi.
- «Tekshirish» sketchni kompilyatsiya qilib tekshiradi; «Yuklash» esa uni plataga ham yozadi.
Arduino Uno — bitta chip, yaʼni ATmega328P mikrokontrolleri atrofida qurilgan kichik plata. Plataning qolgan qismi shu chipga xizmat qiladi. U chipga quvvat yetkazadi, chipni kompyuteringiz bilan bogʻlaydi va chip pinlarini plata chetlaridagi uyalar qatoriga olib chiqadi. Simlar aynan shu uyalarga ulanadi.
Plataga umumiy nazar
| Plataning qismi | Nima uchun kerak |
|---|---|
| USB uyasi | Platani kompyuterga ulaydi. Plataga taxminan 5 V (500 mA gacha) beradi. Sketchlar shu orqali yuklanadi, Serial xabarlari ham shu orqali oʻtadi. |
| Dumaloq quvvat uyasi | Batareya yoki adapterdan 7–12 V qabul qiladi. Plataning stabilizatori uni 5 V ga aylantiradi. |
| ATmega328P | Mikrokontroller: 16 MHz, sketch uchun 32 KB flesh xotira, 2 KB RAM, 1 KB EEPROM. |
| D0-D13 raqamli pinlari | Yoqish-oʻchirish signallari uchun chiqish yoki kirish boʻlib ishlaydi. D0 va D1 USB orqali ketma-ket aloqani ham taʼminlaydi. |
| ~ belgili PWM (impuls kengligi modulyatsiyasi) pinlari | D3, D5, D6, D9, D10 va D11 tezlik yoki yorqinlikni sozlash uchun juda tez yoqilib-oʻchib ham tura oladi. |
| A0-A5 analog kirishlari | 0 dan 5 V gacha boʻlgan kuchlanishni oʻlchab, uni 0 dan 1023 gacha son sifatida beradi. |
| Quvvat pinlari | 5V, 3.3V, GND va VIN (quyida qarang). |
| L svetodiodi | D13 ga ulangan kichik svetodiod. Birinchi sketchingiz undan foydalanadi. |
| ON svetodiodi | Plataga quvvat berilganda yonadi. |
| TX va RX svetodiodlari | Kompyuterga maʼlumot ketayotganda yoki undan kelayotganda lipillaydi. |
| Reset (qayta ishga tushirish) tugmasi | Sketchingizni yana boshidan ishga tushiradi. |
Quvvat pinlari
- 5V datchik va modullarga 5 V beradi. Robot-mashinada esa quvvat aksincha, shu pin orqali kiradi: L298N motor drayveri Unoni shu yerdan taʼminlaydi. 5V pinida himoya yoʻq, shuning uchun unga hech qachon 5 V dan yuqori kuchlanish bermang.
- 3.3V shunday kuchlanish kerak boʻlgan kichik detallarga 3,3 V beradi, taxminan 50 mA gacha. Robot-mashinada u ishlatilmaydi.
- GND — yer, yaʼni 0 V. Platadagi har qanday kuchlanish GND ga nisbatan oʻlchanadi. Unoda uchta GND pini bor, ular plataning oʻzida oʻzaro ulangan.
- VIN dumaloq quvvat uyasi kabi 7–12 V qabul qiladi. Plataning oʻz stabilizatori undan 5 V hosil qiladi.
HIGH va LOW
Chiqish sifatida ishlatilayotgan raqamli pinning ikkita holati bor. HIGH pinni plata taʼminotiga ulaydi: Uno USB orqali ishlayotganda bu taxminan 5 V. LOW pinni GND ga ulaydi: 0 V. Oraliq holat yoʻq. digitalWrite(2, HIGH) D2 ga taxminan 5 V beradi, digitalWrite(2, LOW) esa 0 V beradi.
Kirish sifatida ishlatilayotgan pin teskari ishni bajaradi. digitalRead(pin) pindagi kuchlanish yuqori yoki past ekanini sketchingizga aytadi. Plata qayta ishga tushgandan (reset) keyin barcha pinlar kirish boʻladi. Pin biror narsani boshqara olishi uchun sketch avval uni pinMode(pin, OUTPUT) bilan chiqishga aylantirishi kerak.
PWM va analog pinlar haqida qisqacha
~ belgili pinlar HIGH va LOW orasida juda tez almashib tura oladi: D5 va D6 da soniyasiga taxminan 980 marta, qolganlarida esa soniyasiga taxminan 490 marta. analogWrite(pin, value) pin HIGH holatida turadigan vaqt ulushini belgilaydi. Qiymat 0 dan 255 gacha boʻladi: 0 — doim LOW, 255 — doim HIGH, 128 esa vaqtning taxminan yarmida HIGH degani. Motorlar va L298N drayveri darsida bu usul motor tezligini sozlash uchun ishlatiladi.
A0-A5 analog kirishlari kuchlanishni oʻlchaydi. analogRead(A0) 0 V da 0 ni, 5 V da 1023 ni, oraliqdagi kuchlanishlarda esa ular orasidagi qiymatlarni qaytaradi.
Pin qancha tok bera oladi
Pin xavfsiz holatda taxminan 20 mA tok beradi. Mutlaq chegara — 40 mA. Undan oshsa, pin butunlay ishdan chiqishi mumkin. 20 mA svetodiod uchun yetarli. Motor uchun esa bu juda kam, chunki motorga 1 A gacha tok kerak. Shuning uchun motorlarga drayver kerak.
Svetodiodga nega rezistor kerak
Svetodiod oʻzidan oʻtadigan tokni oʻzi cheklamaydi. Qizil svetodiod yonishi uchun taxminan 2 V kerak. Bundan yuqorida kuchlanish ozgina oshsa ham, tok juda keskin oshib ketadi va oxir-oqibat svetodiod yoki pin kuyadi. Svetodiodga ketma-ket ulangan rezistor bunga yoʻl qoʻymaydi.
Bu saytda ishlatiladigan svetodiod modulida oʻzining 220 Om (Ω) li rezistori bor. U oʻtkazadigan tok quyidagicha hisoblanadi:
- Pin 5 V beradi, qizil svetodiodda esa taxminan 2 V tushadi.
- Rezistorga taxminan 3 V qoladi.
- Tok = 3 V / 220 Om ≈ 0,014 A = 14 mA.
14 mA da svetodiod yorqin yonadi, bu esa pin uchun belgilangan 20 mA dan xavfsiz darajada kam.
Svetodiod modulini ulash

Svetodiod modulining ikkita pini bor: S (signal) va - (minus, yer). S pinini D2 ga, - pinini esa Unoning GND pinlaridan biriga ulang. D13 dagi L svetodiodi plataning bir qismi, shuning uchun unga sim kerak emas.
| Qayerdan | Qayerga | Nima uchun |
|---|---|---|
| Uno GND | Svetodiod moduli GND | Yer (GND) |
| Uno D2 | Svetodiod moduli S | HIGH svetodiodni yoqadi |
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
Sketch
// 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; D2 piniga nom beradi. byte — 0 dan 255 gacha boʻlgan butun son, const esa qiymat hech qachon oʻzgarmasligini bildiradi. Nomlar sketchni oʻqishni osonlashtiradi. Simni boshqa pinga oʻtkazsangiz, sketch boshidagi bitta raqamni oʻzgartirasiz, sketchning qolgan qismi esa oʻzgarmay qoladi.
setup() bir marta ishlaydi
Plata ishga tushganda, yaʼni quvvat berilganda, qayta ishga tushirilganda (reset) yoki sketch yuklanganda, u setup() funksiyasini bir marta bajaradi. Bu sketchda setup() D2 va D13 ni chiqishga aylantiradi.
loop() toʻxtovsiz ishlaydi
setup() dan keyin plata loop() funksiyasini bajaradi. loop() oxiriga yetgach, yana boshidan boshlanadi va plataga quvvat berilib turgan ekan, shunday davom etaveradi. Bu loop() ning bir aylanishi ikki yarimdan iborat:
- D2 HIGH, D13 LOW: modulning svetodiodi yonadi, L svetodiodi esa oʻchadi. Keyin sketch 500 ms kutadi.
- D2 LOW, D13 HIGH: modul oʻchadi, L svetodiodi esa yonadi. Keyin sketch yana 500 ms kutadi.
Bir aylanish bir soniya davom etadi. Demak, har bir svetodiod soniyasiga bir marta yonadi va ikkalasi doim navbatma-navbat yonadi.
Uchta funksiya
| Funksiya | Nima qiladi | Sketchdan misol |
|---|---|---|
pinMode(pin, mode) |
Pinni chiqish (OUTPUT) yoki kirish (INPUT) qiladi | pinMode(LED_MODULE, OUTPUT); |
digitalWrite(pin, value) |
Chiqish piniga HIGH (taxminan 5 V) yoki LOW (0 V) beradi | digitalWrite(LED_MODULE, HIGH); |
delay(ms) |
Koʻrsatilgan millisekundlar davomida kutadi | delay(500); |
delay() davomida Uno sketchingizning boshqa hech bir qatorini bajarmaydi. Blink uchun bu muammo emas. Datchigini doim kuzatib turishi kerak boʻlgan robotga esa vaqtni hisoblashning boshqa usuli kerak: Hech qachon kutmaydigan dasturlar darsiga qarang.
«Tekshirish» va «Yuklash»
Arduino IDE da ikkita asosiy tugma bor:
- «Tekshirish» (Verify, galochka belgisi, Ctrl+R) sketchni kompilyatsiya qiladi. U C++ kodingizni mashina kodiga aylantiradi va tekshiradi. Xato boʻlsa, masalan, nuqtali vergul tushib qolgan boʻlsa, qator raqami bilan birga xato xabarini koʻrsatadi.
- «Yuklash» (Upload, oʻq belgisi, Ctrl+U) sketchni kompilyatsiya qiladi va plataning flesh xotirasiga yozadi. Shundan soʻng plata qayta ishga tushadi va yangi sketchni bajaradi.
Simulyatorning ichidagi Arduino IDE da ham tugmalar, ham tezkor tugmalar xuddi shunday.
Yangi Uno odatda ichida Blink sketchi bilan sotiladi, shuning uchun uni birinchi marta ulaganingizda L svetodiodi miltillaydi. Simulyatorda ham sketch yuklanmagan plata xuddi shu, zavodda yozilgan Blink sketchini bajaradi.
Simulyatorda sinab koʻring
Bu yerda butun robot Garajdagi stol ustida turgan Uno va svetodiod modulidan iborat. Uno noutbukning USB portidan quvvat oladi, shuning uchun unga batareya kerak emas. Sketchni yuklaganingizdan keyin qizil svetodiod moduli va L svetodiodi navbatma-navbat yonadi: biri yonib turganda ikkinchisi oʻchiq boʻladi, har yarim soniyada esa ular oʻrin almashadi. Endi ikkala delay(500) qatorini delay(100) ga oʻzgartiring va sketchni qayta yuklang. Svetodiodlar besh marta tezroq oʻrin almashadi.
Serial orqali xabarlar
Uno USB kabel orqali kompyuterga matn ham yubora oladi. Bu sketchingiz nima qilayotganini koʻrishning oddiy usuli. Mana Blink sketchining ikki qator qoʻshilgan setup() funksiyasi:
void setup() {
pinMode(LED_MODULE, OUTPUT);
pinMode(LED_BOARD, OUTPUT);
Serial.begin(9600); // open the link at 9600 baud
Serial.println("Blink started"); // send one line of text
}Serial.begin(9600) ketma-ket aloqani 9600 bod tezlikda ishga tushiradi (bod — soniyasiga uzatiladigan bitlar soni). Serial.println() matnni yuboradi va qatorni tugatadi. Serial.print() esa matnni qatorni tugatmasdan yuboradi. Haqiqiy platada xabarlarni oʻqish uchun Arduino IDE da Tools > Serial Monitor menyusini oching va 9600 bod tezlikni tanlang. Serial yoqilgan paytda xabarlar D0 va D1 orqali oʻtadi, shuning uchun bu ikki pinga boshqa simlarni ulamang.
Simulyatorda Serial Monitor (port monitori) arenaning bir qismi: u yerda robot oʻz batareyasidan ishlaydi. HC-SR04 bilan masofani oʻlchash darsida undan masofalarni chiqarish uchun foydalaniladi.
Keyingi qadamlar
- Xuddi shu zanjirni Blink loyihasida haqiqiy detallardan yigʻing.
- Hech qachon kutmaydigan dasturlar darsida ikkita svetodiodni
delay()ishlatmasdan, ikki xil tezlikda miltillating. - Motorlar va L298N drayveri darsida gʻildiraklarni aylantiring.
Oʻzingizni tekshiring
1setup() bilan loop() ning farqi nimada?
setup() plata ishga tushganda bir marta ishlaydi. Keyin loop() plataga quvvat berilib turgan ekan, qayta-qayta ishlayveradi.
2Nega svetodiod modulida oʻzining 220 Om li rezistori bor?
Svetodiod oʻzidan oʻtadigan tokni oʻzi cheklamaydi. Rezistor tokni taxminan 14 mA da ushlab turadi: bu svetodiod uchun xavfsiz va pinning 20 mA lik chegarasidan past.
3Unoning qaysi pinlari analogWrite() yordamida PWM hosil qila oladi?
~ belgisi bor pinlar: D3, D5, D6, D9, D10 va D11.
Topshiriq
Simulyatorda svetodiod modulining S simini D2 dan D8 ga oʻtkazing. Keyin modul yana miltillaydigan qilib sketchni oʻzgartiring, uni yuklang va natijani stolda tekshiring.
Maslahat
Modulning pin raqami sketchda faqat bitta joyda yozilgan.