Dizayningizda Arduino-dan foydalanmaslikning bir qancha sabablari. Yangi boshlanuvchilar uchun Arduino Uno Arduino uno r3 loyihalaridagi noodatiy loyihalar

Ushbu maqolada men to'liq to'plashga qaror qildim bosqichma-bosqich ko'rsatma Arduino yangi boshlanuvchilar uchun. Biz Arduino nima ekanligini, nimani o'rganishni boshlash kerakligini, dasturlash muhitini qayerdan yuklab olish va qanday o'rnatish va sozlashni, u qanday ishlashini va dasturlash tilidan qanday foydalanishni va to'liq huquqli yaratish uchun zarur bo'lgan yana ko'p narsalarni ko'rib chiqamiz. ushbu mikrokontrollerlar oilasiga asoslangan murakkab qurilmalar.

Bu erda men siz Arduino bilan ishlash tamoyillarini tushunishingiz uchun qisqargan minimal miqdorni berishga harakat qilaman. Dasturlashtiriladigan mikrokontrollerlar dunyosiga to'liqroq kirish uchun ushbu saytning boshqa bo'limlari va maqolalariga e'tibor bering. Ba'zi jihatlarni batafsil o'rganish uchun men ushbu saytdagi boshqa materiallarga havolalarni qoldiraman.

Arduino nima va u nima uchun?

Arduino bu elektron dizayner, bu har kimga turli xil elektromexanik qurilmalarni yaratishga imkon beradi. Arduino dasturiy ta'minot va apparatdan iborat. Dasturiy ta'minot qismi ishlab chiqish muhitini (proshivkani yozish va disk raskadrovka qilish uchun dastur), ko'plab tayyor va qulay kutubxonalarni va soddalashtirilgan dasturlash tilini o'z ichiga oladi. Uskuna mikrokontrollerlarning katta qatorini o'z ichiga oladi va tayyor modullar ular uchun. Buning yordamida Arduino bilan ishlash juda oson!

Arduino yordamida dasturlash, elektrotexnika va mexanikani o'rganishingiz mumkin. Ammo bu shunchaki ta'lim konstruktori emas. Unga asoslanib, siz haqiqatan ham foydali qurilmalar qilishingiz mumkin.
Oddiy miltillovchi chiroqlardan boshlab, ob-havo stantsiyalari, avtomatlashtirish tizimlari va bilan yakunlanadi aqlli uy, CNC mashinalari va uchuvchisiz havo vositalari. Imkoniyatlar sizning tasavvuringiz bilan cheklanmaydi, chunki amalga oshirish uchun juda ko'p ko'rsatmalar va g'oyalar mavjud.

Arduino boshlang'ich to'plami

Arduino-ni o'rganishni boshlash uchun siz mikrokontroller platasining o'zi va qo'shimcha qismlarni olishingiz kerak. Arduino boshlang'ich to'plamini sotib olish eng yaxshisidir, lekin siz o'zingizga kerak bo'lgan hamma narsani tanlashingiz mumkin. Men to'plamni tanlashni tavsiya qilaman, chunki u osonroq va ko'pincha arzonroq. Bu erda siz o'rganishingiz kerak bo'lgan eng yaxshi to'plamlar va alohida qismlarga havolalar mavjud:

Yangi boshlanuvchilar uchun asosiy Arduino to'plami:Sotib olish
Trening va birinchi loyihalar uchun katta to'plam:Sotib olish
Qo'shimcha sensorlar va modullar to'plami:Sotib olish
Arduino Uno - bu qatordagi eng oddiy va qulay model:Sotib olish
Oson o'rganish va prototiplash uchun lehimsiz non taxtasi:Sotib olish
Qulay konnektorli simlar to'plami:Sotib olish
LED to'plami:Sotib olish
Rezistorlar to'plami:Sotib olish
Tugmalar:Sotib olish
Potensiometrlar:Sotib olish

Arduino IDE ishlab chiqish muhiti

Mikrodasturni yozish, disk raskadrovka qilish va yuklab olish uchun siz yuklab olishingiz va o'rnatishingiz kerak Arduino IDE. Bu juda oddiy va qulay dastur. O'z veb-saytimda men rivojlanish muhitini yuklab olish, o'rnatish va sozlash jarayonini allaqachon tasvirlab berdim. Shuning uchun men bu erda faqat havolalarni qoldiraman oxirgi versiya dasturlar va

Versiya Windows Mac OS X Linux
1.8.2

Arduino dasturlash tili

Qo'lingizda mikrokontroller platasi va kompyuteringizda ishlab chiqish muhiti o'rnatilgan bo'lsa, siz birinchi eskizlaringizni (proshivka) yozishni boshlashingiz mumkin. Buning uchun siz dasturlash tilini yaxshi bilishingiz kerak.

Arduino dasturlashda C++ tilining oldindan belgilangan funktsiyalari bilan soddalashtirilgan versiyasidan foydalaniladi. Boshqa C-ga o'xshash dasturlash tillarida bo'lgani kabi, kod yozish uchun ham bir qator qoidalar mavjud. Mana eng asosiylari:

  • Har bir ko'rsatmadan keyin nuqta-vergul (;) qo'yilishi kerak.
  • Funktsiyani e'lon qilishdan oldin, funktsiya tomonidan qaytarilgan ma'lumotlar turini ko'rsatishingiz kerak yoki funktsiya qiymat qaytarmasa, void.
  • O'zgaruvchini e'lon qilishdan oldin ma'lumotlar turini ham ko'rsatish kerak.
  • Sharhlar belgilanadi: // Inline va /* blok */

Ma'lumotlar turlari, funktsiyalari, o'zgaruvchilari, operatorlari va til konstruktsiyalari haqida ko'proq ma'lumotni ushbu ma'lumotlarni yodlab olishingiz va eslab qolishingiz shart emas sahifasida topishingiz mumkin. Siz har doim ma'lumotnomaga borishingiz va ma'lum bir funktsiyaning sintaksisini ko'rishingiz mumkin.

Barcha Arduino proshivkalarida kamida 2 funktsiya bo'lishi kerak. Bular setup() va loop().

sozlash funktsiyasi

Hamma narsa ishlashi uchun biz eskiz yozishimiz kerak. Keling, tugmani bosgandan so'ng LEDni yondiramiz va keyingi bosishdan keyin o'chaymiz. Mana bizning birinchi eskizimiz:

// ulangan qurilmalarning pinlari bo'lgan o'zgaruvchilar int switchPin = 8; int ledPin = 11; // tugma holatini saqlash uchun o'zgaruvchilar va LED boolean lastButton = LOW; mantiqiy oqimButton = LOW; mantiqiy ledOn = noto'g'ri; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // mantiqiy chiqishni bekor qilish funksiyasi(mantiqiy oxirgi) ( mantiqiy oqim = digitalRead(switchPin); if(oxirgi != joriy) ( kechikish ( 5); joriy = digitalRead(switchPin); ) qaytariladigan oqim; ) void loop() (CurrentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ; digitalWrite (ledPin, ledOn); )

// ulangan qurilmalarning pinlari bo'lgan o'zgaruvchilar

int switchPin = 8;

int ledPin = 11;

// tugma va LED holatini saqlash uchun o'zgaruvchilar

boolean lastButton = LOW ;

mantiqiy joriyButton = LOW ;

mantiqiy ledOn = noto'g'ri;

bekor o'rnatish() (

pinMode(switchPin, INPUT);

pinMode (ledPin, OUTPUT);

// o'chirish funktsiyasi

mantiqiy debounse (mantiqiy oxirgi) (

mantiqiy oqim = raqamli o'qish (switchPin);

agar (oxirgi != joriy ) (

kechikish (5);

joriy = raqamli o'qish (switchPin);

qaytish oqimi;

void loop() (

currentButton = bekor qilish (oxirgi tugma);

agar (oxirgi tugma == LOW && joriy tugma == YUQORI ) (

ledOn =! ledOn;

lastButton = joriy tugma;

digitalWrite (ledPin, ledOn);

Ushbu eskizda men yaratdim qo'shimcha funktsiya kontaktdan sakrashni bostirish uchun debounse. Mening veb-saytimda aloqa o'rnatish haqida ma'lumot mavjud. Ushbu materialni tekshirishga ishonch hosil qiling.

PWM Arduino

Impuls kengligi modulyatsiyasi (PWM) - bu signalning ish aylanishidan foydalangan holda kuchlanishni boshqarish jarayoni. Ya'ni, PWM yordamida biz yukni muammosiz boshqarishimiz mumkin. Masalan, siz LEDning yorqinligini muammosiz o'zgartirishingiz mumkin, ammo yorqinlikning bu o'zgarishi kuchlanishni pasaytirish orqali emas, balki past signal oralig'ini oshirish orqali erishiladi. PWM ning ishlash printsipi ushbu diagrammada ko'rsatilgan:

PWM ni LEDga qo'llaganimizda, u tezda yonib, o'chadi. Inson ko'zi buni ko'ra olmaydi, chunki chastota juda yuqori. Ammo videoni suratga olishda siz LED yoqilmagan daqiqalarni ko'rishingiz mumkin. Bu kamera kadrlar tezligi PWM chastotasining ko'paytmasi bo'lmasa sodir bo'ladi.

Arduino o'rnatilgan impuls kengligi modulyatoriga ega. Siz PWM-dan faqat mikrokontroller tomonidan qo'llab-quvvatlanadigan pinlarda foydalanishingiz mumkin. Masalan, Arduino Uno va Nano-da 6 ta PWM pinlari mavjud: bular D3, D5, D6, D9, D10 va D11 pinlari. Boshqa taxtalarda pinlar farq qilishi mumkin. Sizni qiziqtirgan kengashning tavsifini topishingiz mumkin

Arduino-da PWM-dan foydalanish uchun funktsiya mavjud, u argument sifatida PWM raqamini va 0 dan 255 gacha bo'lgan PWM qiymatini oladi. 0 - yuqori signal bilan to'ldirish 0% va 255 - 100%. Misol tariqasida oddiy eskiz yozamiz. Keling, LED yorug'ligini muammosiz yondiraylik, bir soniya kutib turaylik va xuddi shunday silliq o'chib ketaylik va hokazo. Bu funksiyadan foydalanishga misol:

// LED pin 11 ga ulangan int ledPin = 11; void setup() ( pinMode(ledPin, OUTPUT); ) void loop() (for (int i = 0; i)< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) ( analogWrite(ledPin, i); kechikish(5); ) )

// LED 11-pinga ulangan

int ledPin = 11;

bekor o'rnatish() (

pinMode (ledPin, OUTPUT);

void loop() (

uchun (int i = 0; i< 255 ; i ++ ) {

analogWrite (ledPin, i);

kechikish (5);

kechikish (1000);

uchun (int i = 255; i > 0; i -- ) (

Arduino-ni qanday tanlash mumkin Bu savol birinchi marta Arduino yordamida loyiha yaratishga qaror qilgan har bir kishi uchun paydo bo'ladi. Biz kerakli detallarga qaror qildik: sensorlar, sensorlar, modullar va boshqalar va Arduino platalarining katta assortimentiga duch keldik, bundan tashqari, har bir taxtada ikkita yoki uchta analog mavjud. Ba'zi odamlar, qanchalik qimmatroq va kuchliroq bo'lsa, ular Arduino Due kabi jiddiy echimlarni sotib olishadi, deb o'ylashadi va keyin ular hamma eskizlar ishlamasligini tushunishadi va buning to'liq quvvatiga dosh berish ularga qiyin. qurilma o'z-o'zidan. Boshqalar esa teskari yo'lni bosib o'tishadi va resurs cheklovlariga duch kelishadi (xotira, pinlar, portlar, soat chastotasi, oziqlanish). Bu oltin o'rtani qanday topish mumkin? Keling, buni tushunishga harakat qilaylik...

To'lash pros Minuslar

Arduino Uno

ProMini va Nano kabi funksionallik
  • Doska Arduino oilasida eng keng tarqalgan bo'lib, u uchun eng ko'p darslar yaratilgan.
  • DIP paneli mavjudligi tufayli siz mikrokontrollerni o'zgartirishingiz mumkin
  • Arduino ProMini, Nano va Micro bilan bir xil funksionallikka ega bo'lgan taxta bir necha baravar kattaroqdir.

Arduino Mega 2560

  • Arduino UNO uchun yaratilgan qalqonlar mos keladi
  • Pinlarning maksimal soni
  • Barcha turdagi xotiraning kengaytirilgan sig'imi
  • Simlarni ishlatmasdan Breadboard-ga o'rnatib bo'lmaydi

Arduino Leonardo

MICRO kabi funksionallik

  • Arduino UNO uchun yaratilgan qalqonlar mos keladi
  • Kengash Arduino UNO ning takomillashtirilgan versiyasidir va uning aksariyat eskizlari bilan ishlaydi
  • Simlarni ishlatmasdan Breadboard-ga o'rnatib bo'lmaydi
  • Arduino Uno uchun yaratilgan ba'zi eskizlar Leonardoda ishlamaydi, chunki... turli mikrokontrollerlardan foydalaniladi

Arduino Muddati


  • Arduino Mega kabi pinlar soni
  • Ikkita analog chiqish amalga oshirildi
  • 84 MGts chastotali kuchli 32 bitli mikrokontrollerdan foydalanadi
  • Simlarni ishlatmasdan Breadboard-ga o'rnatib bo'lmaydi
  • Butun Arduino oilasidagi eng katta taxta o'lchami
  • Barcha eskizlar bunday yuqori soat chastotasini ta'minlamaydi
  • Hamma narsa qalqon emas 3,3V chegaraviy kuchlanishli signallarni uzatishni ta'minlash
  • Ta'minot kuchlanishi 3,3V

Arduino ProMini 3.3V

Nano va UNO kabi funksionallik


  • Mikrokontrollerning eng past soat chastotasi, atigi 8 MGts
  • Ta'minot kuchlanishi 3,3V

Arduino ProMini 5V

Nano va UNO kabi funksionallik

  • Breadboard-da diagrammalarni loyihalash uchun foydalanish mumkin
  • Arduino oilasidagi eng kichik taxtali
  • Sirtga o'rnatishga imkon beruvchi lehimli pinli kontaktsiz ta'minlanadi
  • Arduino UNO uchun yaratilgan qalqonlar mos kelmaydi
  • Tashqi dasturchini talab qiladigan USB kontrolleri yo'q

Arduino NANO V3.0

ProMini va UNO kabi funksionallik


  • Breadboard-da diagrammalarni loyihalash uchun foydalanish mumkin
  • Doska Arduino ProMini-dan biroz kattaroq, lekin USB portiga ega va tashqi dasturchidan foydalanishni talab qilmaydi.
  • Arduino UNO uchun yaratilgan qalqonlar mos kelmaydi
  • Tekshirish moslamasi bilan USB portining joriy etilishi yuklash moslamasi uchun ajratilgan flesh-xotira hajmining oshishiga olib keldi (Arduino ProMini bilan solishtirganda)

Arduino MICRO

Leonardo kabi funksionallik


  • Breadboard-da diagrammalarni loyihalash uchun foydalanish mumkin
  • Kengash Arduino Nano-dan biroz kattaroq, ammo Arduino Leonardo-ning barcha funksiyalariga ega.
  • Turli xil simulyatsiya qilish mumkin USB qurilmalari kompyuterga ulanganda (taxta sichqoncha, klaviatura va boshqalar sifatida aniqlanadi)
  • Arduino UNO uchun yaratilgan qalqonlar mos kelmaydi
  • USB kontroller funktsiyasini mikrokontrollerga o'tkazish yuklash moslamasi uchun ajratilgan flesh-xotira hajmining oshishiga olib keldi.

Arduinoni tanlashga ta'sir qiluvchi birinchi savol- qanday loyihani amalga oshirmoqchisiz?

Agar siz tayyor loyiha yaratmoqchi bo'lsangiz, boshqa ishlab chiquvchilar tomonidan taqdim etilgan bo'lsa, mantiqiy xarid loyiha dastlab yaratilgan Arduino bo'ladi. Shuni ta'kidlash kerakki, endi Rossiya Federatsiyasida Arduino platalari Geduino brendi ostida tarqatilmoqda. . Ya'ni, siz to'g'ri tushunganingizdek, rasmiy veb-saytda yozilganidek, Arduino Micro Geduino Micro-dan nomi va logotipi (bu analog emas) bilan farq qiladi. Va ikkinchisi arzonroq bo'lgani uchun, tanlov aniq.

Agar biror loyiha haqida qaror qilmagan bo'lsangiz, lekin o'zingizning tajribalaringiz uchun Arduino sotib olishni xohlasangiz, unda muhim omil - bu miqdor turli misollar tarmoqda, u yoki bu Arduino ostida. Bu erda shubhasiz etakchi Arduino UNO hisoblanadi , bu ushbu kengash Arduino liniyasidagi eng qadimgi, ammo eskirgan emasligi bilan izohlanadi, chunki u yaratilganidan beri juda ko'p o'zgarishlarga duch keldi.

Agar siz o'z loyihangizni amalga oshirishni rejalashtirmoqchi bo'lsangiz, keyin Arduino-ni tanlashga yo'q qilish usuli bilan yondashish kerak. Agar sizning loyihangizda Arduino Uno uchun pinli modullar bo'lsa, Arduino Nano analogi Arduino ProMini 3.3V, Arduino ProMini 5V ni chiqarib tashlang.), lekin boshqa turdagi USB ulagichga ega bo'lishi mumkin, o'lchami biroz boshqacha bo'lishi mumkin, boshqa USB kontrolleri, boshqa turdagi mikrokontroller qutisi, plata rangi va boshqalar bo'lishi mumkin. Bu erda siz tushunishingiz kerakki, ushbu platalar o'zlarining asl funktsiyalarini takrorlaydi (ular nomiga o'xshash), chunki ular bir xil seriyadagi bir xil ATmega mikrokontrolleridan foydalanadilar. Kengash o'lchamlari, mikrokontroller korpusi va turi USB port, fotosuratdan aniqlash mumkin. Nomida "CH340G" mavjudligi USB kontrolleri Arduino uchun standart FTDI chipi emas, balki uning analogi CH340G ekanligini anglatadi, shuning uchun bunday Arduino-ni kompyuterga ulash uchun siz CH340G chipi uchun drayverni o'rnatishingiz kerak. . Ushbu taxtalar haydovchini bir martalik o'rnatish noqulaylik tug'dirmaydi va arzonlashtirilgan narx asl nomga nisbatan afzallik deb hisoblaydiganlar uchun javob beradi.

Arduino barcha dizayn ixlosmandlari orasida juda mashhur. Bu haqda hech qachon eshitmaganlarni ham tanishtirish kerak.

Arduino nima?

Arduino-ni qanday qilib qisqacha tasvirlab bera olasiz? Optimal so'zlar bilan bo'ladi: Arduino turli xil narsalarni yaratishingiz mumkin bo'lgan vositadir elektron qurilmalar. Aslini olganda, bu haqiqiy umumiy maqsadli apparatli hisoblash platformasi. U qurish uchun ishlatilishi mumkin oddiy sxemalar, va ancha murakkab loyihalarni amalga oshirish uchun.

Dizayner o'zining uskunasiga asoslanadi, ya'ni kirish-chiqish taxtasi. Doskani dasturlash uchun C/C++ ga asoslangan tillardan foydalaniladi. Ular, o'z navbatida, Processing/Wiring deb ataladi. C guruhidan ular o'ta soddalikni meros qilib oldilar, buning natijasida ularni har qanday odam juda tez o'zlashtira oladi va bilimlarni amalda qo'llash unchalik muhim muammo emas. Ishning qulayligini tushunishingiz uchun ko'pincha Arduino boshlang'ich sehrgar-dizaynerlar uchun deb aytiladi. Hatto bolalar ham Arduino platalarini tushunishlari mumkin.

Unda nimani to'plashingiz mumkin?

Arduino-ning qo'llanilishi juda xilma-xildir, uni maqolaning oxirida tavsiya etiladigan eng oddiy misollar uchun ham, juda murakkab mexanizmlar, shu jumladan manipulyatorlar, robotlar yoki ishlab chiqarish mashinalari uchun ham qo'llash mumkin. Ba'zi hunarmandlar bunday tizimlardan planshetlar, telefonlar, uy nazorati va xavfsizlik tizimlari, aqlli uy tizimlari yoki oddiygina kompyuterlar yaratish uchun foydalanishga muvaffaq bo'lishadi. Yangi boshlanuvchilar uchun Arduino loyihalari, hatto tajribasi bo'lmaganlar ham boshlashlari mumkin, maqolaning oxirida. Ular hatto ibtidoiy tizimlarni yaratish uchun ham ishlatilishi mumkin Virtual reallik. Bularning barchasi Arduino dasturlash taqdim etadigan juda ko'p qirrali apparat va imkoniyatlar tufayli.

Komponentlarni qayerdan sotib olsam bo'ladi?

Italiyada ishlab chiqarilgan komponentlar asl hisoblanadi. Ammo bunday to'plamlarning narxi past emas. Shu sababli, bir qator kompaniyalar yoki hatto jismoniy shaxslar Arduino-mos keladigan qurilmalar va komponentlarning hunarmandchilik usullarini ishlab chiqaradilar, ular hazil bilan ishlab chiqarish klonlari deb ataladi. Bunday klonlarni sotib olayotganda, ular ishlashini aniq aytish mumkin emas, lekin pulni tejash istagi o'z joniga qasd qiladi.

Komponentlarni to'plamlarning bir qismi sifatida yoki alohida sotib olish mumkin. Hatto mashinalar, vertolyotlarni yig'ish uchun oldindan tayyorlangan to'plamlar mavjud har xil turlari boshqaruv elementlari yoki kemalar. Yuqoridagi rasmdagi kabi Xitoyda ishlab chiqarilgan to'plam 49 dollar turadi.

Uskunalar haqida ko'proq

Arduino platasi oddiy AVR mikrokontrolleri, u yuklovchi bilan yondirilgan va minimal talab qilinadigan USB-UART portiga ega. Boshqa muhim tarkibiy qismlar ham mavjud, ammo maqola doirasida faqat ushbu ikki komponentga e'tibor qaratish yaxshiroqdir.

Birinchidan, mikrokontroller haqida, ishlab chiqilgan dastur joylashgan bitta sxema bo'yicha qurilgan mexanizm. Dasturga tugmachalarni bosish, yaratish komponentlaridan signallarni qabul qilish (rezistorlar, tranzistorlar, sensorlar va boshqalar) ta'sir qilishi mumkin. Bundan tashqari, sensorlar o'z maqsadlarida juda farq qilishi mumkin: yorug'lik, tezlashtirish, harorat, masofa, bosim, to'siqlar va boshqalar. Oddiy qismlar displey qurilmalari sifatida ishlatilishi mumkin, LED va tvitlardan tortib, grafik displeylar kabi murakkab qurilmalargacha. Ko'rib chiqiladigan sifat motorlar, klapanlar, o'rni, servolar, elektromagnitlar va boshqalar bo'lib, ularni ro'yxatga olish juda va juda uzoq vaqt talab etadi. MK ushbu ro'yxatlarning ba'zilari bilan to'g'ridan-to'g'ri ishlaydi, ulanish simlarini ishlatadi. Ba'zi mexanizmlar adapterlarni talab qiladi. Ammo dizaynni boshlaganingizdan so'ng, o'zingizni yirtib tashlashingiz qiyin bo'ladi. Endi Arduino dasturlash haqida gapiraylik.

Kengash dasturlash jarayoni haqida ko'proq bilib oling

Mikrokontrollerda ishlashga tayyor bo'lgan dastur proshivka deb ataladi. Bitta loyiha yoki Arduino loyihasi bo'lishi mumkin, shuning uchun topish jarayonini tezlashtirish uchun har bir proshivkani alohida papkada saqlash tavsiya etiladi. kerakli fayllar. U maxsus qurilmalar: dasturchilar yordamida MK kristaliga o'rnatiladi. Va bu erda Arduinoning bitta afzalligi bor - unga dasturchi kerak emas. Har bir narsa yangi boshlanuvchilar uchun Arduino-ni dasturlash qiyin bo'lmasligi uchun qilingan. Yozilgan kod USB kabeli orqali MK ga yuklanishi mumkin. Bu afzallik oldindan tuzilgan dasturchi tomonidan emas, balki maxsus proshivka - yuklovchi tomonidan erishiladi. Bootloader - bu ulanishdan so'ng darhol ishga tushadigan maxsus dastur bo'lib, buyruqlar bor-yo'qligini, kristallni miltillashni, Arduino loyihalari mavjudligini yoki yo'qligini tinglaydi. Bootloaderdan foydalanishning bir qancha juda jozibali afzalliklari bor:

  1. Qo'shimcha vaqt xarajatlarini talab qilmaydigan faqat bitta aloqa kanalidan foydalanish. Shunday qilib, Arduino loyihalari turli xil simlarni ulashni talab qilmaydi va ulardan foydalanishda chalkashliklar bo'ladi. Muvaffaqiyatli ishlash uchun bitta USB kabeli kifoya qiladi.
  2. Egri qo'llardan himoya qilish. Mikrokontrollerni to'g'ridan-to'g'ri proshivka yordamida g'isht holatiga keltirish juda oson, siz qattiq ishlashingiz shart emas. Bootloader bilan ishlashda siz potentsial xavfli sozlamalarga kira olmaysiz (ishlab chiqish dasturi yordamida, albatta, aks holda hamma narsa buzilishi mumkin). Shuning uchun, yangi boshlanuvchilar uchun Arduino nafaqat tushunarli va qulay bo'lgan nuqtai nazardan, balki ular bilan ishlaydigan odamning tajribasizligi bilan bog'liq istalmagan moliyaviy xarajatlardan qochishga imkon beradi.

Boshlash uchun loyihalar

To'plam, lehim temir, rozin va lehim sotib olganingizda, darhol juda murakkab tuzilmalarni haykalga solmaslik kerak. Albatta, siz ularni qilishingiz mumkin, ammo yangi boshlanuvchilar uchun Arduino-da muvaffaqiyatga erishish imkoniyati murakkab loyihalar bilan juda past. O'z mahoratingizni o'rgatish va oshirish uchun siz Arduinoning o'zaro ta'siri va ishlashini tushunishga yordam beradigan bir nechta oddiy g'oyalarni amalga oshirishga harakat qilishingiz mumkin. Yangi boshlanuvchilar uchun Arduino bilan ishlashda birinchi qadamlar sifatida biz sizga quyidagilarni ko'rib chiqishingizni maslahat beramiz:

  1. Arduino tufayli ishlaydigan birini yarating.
  2. Arduino-ga alohida tugmani ulash. Bunday holda, siz tugmachani №1 nuqtadan LEDning porlashini sozlashi mumkin.
  3. Potensiometr ulanishi.
  4. Servo haydovchini boshqarish.
  5. Uch rangli LEDni ulash va ishlash.
  6. Piezoelektrik elementni ulash.
  7. Fotorezistorni ulash.
  8. Harakat sensori va uning ishlashi haqidagi signallarni ulash.
  9. Namlik yoki harorat sensorini ulash.

Kelajak uchun loyihalar

Alohida LEDlarni ulash uchun Arduino-ga qiziqishingiz dargumon. Katta ehtimol bilan siz o'zingizning mashinangizni yoki uchuvchi aylanuvchi patnisni yaratish imkoniyatini o'ziga jalb qilasiz. Ushbu loyihalarni amalga oshirish qiyin va ko'p vaqt va sabr-toqatni talab qiladi, ammo tugallangandan so'ng siz xohlagan narsangizga erishasiz: yangi boshlanuvchilar uchun qimmatli Arduino dizayn tajribasi.

Arduino-da kechikishlar juda katta rol o'ynaydi. Ularsiz, ma'lum vaqtdan keyin LEDni miltillovchi eng oddiy Blink misoli ham ishlay olmaydi. Ammo ko'pchilik yangi boshlanuvchi dasturchilar vaqtni kechiktirish haqida kam narsa bilishadi va bu buyruqning nojo'ya ta'sirini bilmasdan faqat Arduino kechikishlaridan foydalanadilar. Ushbu maqolada men vaqt funktsiyalari va ularni Arduino IDE-da qanday ishlatish haqida batafsil gaplashaman.

Arduino-da vaqt va pauzalar bilan ishlash uchun mas'ul bo'lgan bir nechta turli xil buyruqlar mavjud:

  • kechikish()
  • delayMicroseconds()
  • millis()
  • micros()

Ular aniqlikda farqlanadi va kod yozishda e'tiborga olinishi kerak bo'lgan o'ziga xos xususiyatlarga ega.

Arduino kechiktirish funksiyasidan foydalanish

Sintaksis

Arduino kechikishi eng oddiy buyruq bo'lib, ko'pincha yangi boshlanuvchilar tomonidan qo'llaniladi. Aslida, bu qavslar ichida ko'rsatilgan millisekundlar soni uchun dasturni to'xtatib turadigan kechikishdir. (Bir soniyada 1000 millisekund bor.) Maksimal qiymat 4294967295 ms bo'lishi mumkin, bu taxminan 50 kunga teng. Keling, ushbu buyruq qanday ishlashini aniq ko'rsatadigan oddiy misolni ko'rib chiqaylik.

Void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); // pin 13 kechikishiga yuqori signal yuboring (10000); // 10000ms yoki 10 soniya to'xtatib turish digitalWrite13, LOW) ; // pin 13 kechikishiga past signal yuboring (10000); // pauza 10000ms yoki 10 soniya)

Usulda sozlash; o'rnatish Biz pin 13 chiqishi sifatida ishlatilishini aniqlaymiz. Dasturning asosiy qismida birinchi navbatda pinga yuqori signal yuboriladi, keyin biz 10 soniya kechikish qilamiz. Bu vaqt ichida dastur to'xtatilganga o'xshaydi. Keyin past signal beriladi va yana kechikish bo'ladi va hamma narsa qaytadan boshlanadi. Natijada, biz pin navbatma-navbat 5 V yoki 0 bilan ta'minlanganligini olamiz.

Kechiktirishdan foydalangan holda pauza paytida dastur ishi to'xtatilishini, dastur sensorlardan hech qanday ma'lumot olmasligini aniq tushunishingiz kerak. Bu Arduino kechiktirish funksiyasidan foydalanishning eng katta kamchiligidir. Ushbu cheklovni uzilishlar yordamida engishingiz mumkin, ammo biz bu haqda alohida maqolada gaplashamiz.

Miltillovchi LED bilan kechikish misoli

Kechiktirish funktsiyasi qanday ishlashini ko'rsatadigan misol sxemasi.
Siz LED va rezistor bilan sxema qurishingiz mumkin. Keyin biz standart misolga ega bo'lamiz - LEDni miltillash. Buni amalga oshirish uchun biz chiqish sifatida belgilagan pinga ijobiy kontaktli LEDni ulashingiz kerak. Biz LEDning bo'sh oyog'ini taxminan 220 Ohm qarshilik orqali erga ulaymiz (bir oz ko'proq bo'lishi mumkin). Polaritni uning ichki qismiga qarab aniqlashingiz mumkin. Ichkaridagi katta chashka minusga, kichik oyoq esa ortiqcha bilan bog'langan. Agar sizning LEDingiz yangi bo'lsa, unda siz polaritni simlarning uzunligi bo'yicha aniqlashingiz mumkin: uzun oyoq ortiqcha, qisqa oyoq minus.

delayMicroseconds funktsiyasi

Bu funksiya kechikishning to'liq analogidir, bundan tashqari uning o'lchov birliklari millisekundlar emas, balki mikrosekundlardir (1 soniyada 1 000 000 mikrosoniya mavjud). Maksimal qiymat 16383 bo'ladi, bu 16 millisekundga teng. Ruxsat 4 ga teng, ya'ni raqam har doim to'rtga karrali bo'ladi. Misol parchasi quyidagicha ko'rinadi:

DigitalWrite (2, YUQORI); // 2-pinga yuqori signalni yuborish delayMicroseconds(16383); // pauza 16383 µs digitalWrite(2, LOW); // 2-pinga past signalni yuborish delayMicroseconds(16383); // pauza 16383 mks

Kechikish Mikrosaniyalari bilan bog'liq muammo kechikish bilan bir xil - bu funktsiyalar dasturni to'liq "osib qo'yadi" va u bir muncha vaqt muzlaydi. Hozirgi vaqtda portlar bilan ishlash, sensorlardan ma'lumotlarni o'qish va matematik operatsiyalarni bajarish mumkin emas. Ushbu parametr miltillovchi chiroqlar uchun javob beradi, ammo tajribali foydalanuvchilar uni yirik loyihalar uchun ishlatmaydilar, chunki u erda bunday nosozliklar kerak emas. Shuning uchun, quyida tavsiflangan funktsiyalardan foydalanish ancha yaxshi.

Millis kechikish o'rniga ishlaydi

Millis() funksiyasi Arduino-da kechikishlarni kechiktirmasdan bajarishga imkon beradi va shu bilan oldingi usullarning kamchiliklarini chetlab o'tadi. Millis parametrining maksimal qiymati kechikish funksiyasi bilan bir xil (4294967295ms yoki 50 kun).

Millis yordamida biz butun eskizning bajarilishini to'xtatmaymiz, balki shunchaki Arduino biz to'xtatmoqchi bo'lgan aniq kod blokini qancha vaqt "aylanib o'tishi" kerakligini ko'rsatamiz. Kechikish millisidan farqli o'laroq, u o'z-o'zidan hech narsani to'xtatmaydi. Ushbu buyruq oddiygina mikrokontrollerning o'rnatilgan taymeridan bizga boshidan beri o'tgan millisekundlar sonini qaytaradi. Har bir loop qo'ng'irog'i bilan biz o'zimiz kodimizning oxirgi qo'ng'irog'idan keyin o'tgan vaqtni o'lchaymiz va agar vaqt farqi kerakli pauzadan kamroq bo'lsa, biz kodni e'tiborsiz qoldiramiz. Farqi kerakli pauzadan kattaroq bo'lishi bilan biz kodni bajaramiz, xuddi shu millis yordamida joriy vaqtni olamiz va uni eslaymiz - bu vaqt yangi boshlanish nuqtasi bo'ladi. Keyingi tsiklda ortga hisoblash allaqachon yangi nuqtadan boshlanadi va biz millis va avval saqlangan qiymat o'rtasidagi yangi farq yana kerakli pauzaga yetguncha kodni e'tiborsiz qoldiramiz.

Millis yordamida kechiktirmasdan kechikish ko'proq kodni talab qiladi, ammo uning yordami bilan siz tizimni to'xtatmasdan LEDni miltillashingiz va eskizni to'xtatib qo'yishingiz mumkin.

Mana, jamoaning ishini aniq ko'rsatadigan misol:

Imzosiz uzoq vaqt; // Yo'naltiruvchi nuqtani saqlash uchun o'zgaruvchi void setup() ( Serial.begin(9600); ) void loop() ( /* Shu nuqtada delay() analogining bajarilishi boshlanadi. Joriy moment va vaqt o'rtasidagi farqni hisoblang. Oldin saqlangan mos yozuvlar nuqtasi. Agar farq kerakli qiymatdan katta bo'lsa, kodni bajaring. Agar yo'q bo'lsa, hech narsa qilmang */ if (millis() - timing > 10000)( // 10000 o'rniga, vaqtni belgilashingiz kerak bo'lgan pauza qiymatini almashtiring. = millis(); Serial.println ("10 soniya") ; ) )

Avval biz millisekundlar sonini saqlaydigan vaqt o'zgaruvchisini kiritamiz. Odatiy bo'lib, o'zgaruvchining qiymati 0 ga teng. Dasturning asosiy qismida biz shartni tekshiramiz: agar mikrokontrollerning boshlanishidan millisekundlar soni minus vaqt o'zgaruvchisida yozilgan son 10000 dan katta bo'lsa, u holda port monitoriga xabar chiqarish harakati bajariladi va o'zgaruvchiga joriy vaqt qiymati yoziladi. Dasturning ishlashi natijasida har 10 soniyada port monitorida 10 soniya xabari ko'rsatiladi. Bu usul LEDni kechiktirmasdan miltillash imkonini beradi.

Mikros kechikish o'rniga ishlaydi

Bu funksiya, shuningdek, kechiktirish buyrug'idan foydalanmasdan ham kechiktirishni amalga oshirishi mumkin. U millis bilan bir xil ishlaydi, lekin u 4 mks o'lchamlari bilan millisekundlarni emas, balki mikrosoniyalarni hisoblaydi. Uning maksimal qiymati 4294967295 mikrosekund yoki 70 daqiqa. Agar u to'lib ketgan bo'lsa, qiymat shunchaki 0 ​​ga qaytariladi, bu haqda unutmang.

Xulosa

Arduino platformasi bizga loyihamizdagi kechikishni amalga oshirishning bir necha usullarini taqdim etadi. Kechiktirishdan foydalanib, siz eskizning bajarilishini tezda to'xtatib qo'yishingiz mumkin, ammo shu bilan birga siz mikrokontrollerning ishlashini bloklaysiz. Millis buyrug'idan foydalanish Arduino-da kechiktirmasdan bajarishga imkon beradi, ammo bu biroz ko'proq dasturlashni talab qiladi. Tanlang Eng yaxshi yo'l loyihangizning murakkabligiga qarab. Qoida tariqasida, oddiy eskizlarda va 10 soniyadan kam kechikish bilan kechikish qo'llaniladi. Agar operatsion mantiq yanada murakkab bo'lsa va katta kechikish kerak bo'lsa, unda kechikish o'rniga millisdan foydalanish yaxshiroqdir.

Yangi boshlanuvchilar uchun Arduino bo'yicha havaskor radio tajribalari bilan bir qator maqolalar va o'quv diagrammalari. Bu havaskor radio qurilish o'yinchoqlarining bir turi bo'lib, undan lehimsiz, lehimsiz bosilgan elektron platalar va shunga o'xshash, har qanday elektronika hobbi elektronikani o'rganishda professional prototiplash va havaskor tajribalar uchun mos bo'lgan to'liq ishlaydigan qurilmani yig'ishi mumkin.


Arduino platasi birinchi navbatda yangi boshlanuvchi radio havaskorlariga mikrokontrollerlarni dasturlash asoslarini o'rgatish va jiddiy nazariy tayyorgarliksiz o'z qo'llari bilan mikrokontroller qurilmalarini yaratish uchun mo'ljallangan. Arduino ishlab chiqish muhiti tayyor dastur kodini kompilyatsiya qilish va plata xotirasiga yuklash imkonini beradi. Bundan tashqari, kodni yuklash juda oddiy.

Yangi boshlanuvchilar uchun Arduino qaerdan boshlash kerak

Arduino platasi bilan ishlash uchun birinchi navbatda yangi elektronika muhandisi Arduino ishlab chiqish dasturini yuklab olishi kerak, u o'rnatilgan matn muharriridan iborat bo'lib, unda biz dastur kodi, xabar maydoni, matn chiqarish oynasi (konsol) bilan ishlaymiz. ), tez-tez ishlatiladigan buyruqlar va bir nechta menyular uchun tugmalar mavjud asboblar paneli. Dasturlarini yuklab olish va muloqot qilish uchun ushbu dastur standart USB kabeli orqali Arduino platasiga ulangan.


Kod yozilgan Arduino muhiti, chaqirildi eskiz. Unda yozilgan matn muharriri, matn kiritish/kesish, almashtirish/qidirish uchun maxsus asboblarga ega. Saqlash va eksport qilish vaqtida xabarlar maydonida tushuntirishlar paydo bo'ladi (pastki yangi boshlanuvchilar uchun birinchi darsdagi rasmga qarang) va xatolar ham ko'rsatilishi mumkin. Konsol Arduino xabarlarini ko'rsatadi, shu jumladan to'liq xato hisobotlari va boshqalar foydali ma'lumotlar. Asboblar paneli tugmalari eskizni tekshirish va yozib olish, ochish, yaratish va saqlash, ketma-ket avtobus monitoringini ochish va boshqa ko'p narsalarni amalga oshirish imkonini beradi.

Shunday qilib, keling, birinchisiga o'tamiz. Arduino dars boshlang'ich elektronika muhandislari uchun sxemalar.

Yangi boshlanuvchilar uchun qulaylik yaratish uchun Arduino UNO boshqaruvchisi allaqachon qarshilik va ulagichning 13-piniga ulangan LEDga ega, shuning uchun birinchi tajribada bizga hech qanday tashqi radio elementlar kerak emas.


Kodni yuklash orqali Arduino dasturimizga tizimni ishga tushirishda ishtirok etish imkonini beradi. Buni amalga oshirish uchun biz mikrokontroller buyruqlariga u dastlabki yuklash vaqtida bajarilishini va keyin ularni butunlay unutishini bildiramiz (ya'ni, bu buyruqlar Arduino tomonidan ishga tushirilganda faqat bir marta bajariladi). Va aynan shu maqsadda bizning kodimizda ushbu buyruqlar saqlanadigan blokni tanlaymiz. bekor o'rnatish(), yoki aniqrog'i, ushbu funktsiyaning jingalak qavslari ichidagi bo'shliqda dastur eskiziga qarang.

Jingalak qavslarni unutmang! Ulardan kamida bittasining yo'qolishi butun eskizni butunlay yaroqsiz holga keltiradi. Lekin qo'shimcha qavslar ham qo'ymang, chunki bu ham xatolikka olib keladi.

Yuklab olish kodi:
001-1_mig-led.ino faylida sharhlar va tushuntirishlar bilan eskiz

Funktsiya void loop() Bu erda biz Arduino yoqilgan ekan, bajariladigan buyruqlarni joylashtiramiz. Birinchi buyruqni bajarishni boshlagandan so'ng, Arduino oxirigacha etib boradi va xuddi shu ketma-ketlikni takrorlash uchun darhol boshiga boradi. Va shunga o'xshash cheksiz ko'p marta, modomiki, kengash quvvat oladi. Uning mohiyatida bo'sh pastadir asosiy funktsiya, Arduino-ga kirish nuqtasidir.


Funktsiya kechikish(1000) dasturni qayta ishlashni 1000 millisekundga kechiktiradi. Hammasi abadiy tsiklda davom etadi loop().

Arduino-dagi birinchi dasturimizni tushunganimizdan keyin asosiy xulosa: Void loop va void o'rnatish funktsiyalaridan foydalanib, biz ko'rsatmalarimizni mikrokontrollerga o'tkazamiz. O'rnatish blokidagi hamma narsa faqat bir marta bajariladi. Arduino yoqilgan ekan, halqa modulining mazmuni tsiklda takrorlanadi.

Oldingi dasturda LEDni yoqish va o'chirish o'rtasida ikkinchi kechikish bor edi. Yuqorida ishlatilgan yangi Arduino operatorining eng oddiy kodida bitta katta minus bor edi. LEDni yoqish va o'chirish o'rtasidagi pauzani bir soniya ushlab turish uchun biz ushbu funktsiyadan foydalandik kechikish() va shuning uchun hozirda kontroller asosiy funksiyadagi boshqa buyruqlarni bajara olmaydi loop(). Funktsiyada kodni tuzatish halqa(), quyida keltirilgan ushbu muammoni hal qiladi.

Qiymatni YUQORI va keyin LOW ga o'rnatish o'rniga biz ledPin qiymatini olamiz va uni o'zgartiramiz. Aytaylik, agar u YUQORI bo'lsa, u PAST bo'ladi va hokazo.

Ikkinchi LED boshqaruvi uchun Arduino kod opsiyasi Bu yerga:

Keyin funktsiyani almashtirishingiz mumkin kechikish(). Buning o'rniga, funktsiyadan foydalanish yaxshiroqdir millis(). U dastur boshlanganidan beri o'tgan millisekundlar sonini qaytaradi. Funktsiya dastur kodini ishga tushirgandan so'ng taxminan 50 kundan keyin to'lib ketadi.

Shunga o'xshash funktsiya micros(), bu dastur kodi ishga tushirilgandan beri o'tgan mikrosoniyalar sonini qaytaradi. Dastur 70 daqiqa ishlagandan keyin funksiya nolga qaytadi.

Albatta, bu bizning eskizimizga bir necha qator kod qo'shadi, lekin bu sizni albatta ko'proq qiladi tajribali dasturchi va Arduino potentsialingizni oshiradi. Buning uchun siz faqat millis funksiyasidan qanday foydalanishni o'rganishingiz kerak.

Shuni aniq tushunish kerakki, eng oddiy kechikish funktsiyasi butun Arduino dasturining bajarilishini to'xtatib qo'yadi va bu vaqt davomida hech qanday vazifani bajara olmaydi. Butun dasturimizni to'xtatib qo'yish o'rniga, biz harakat tugashidan oldin qancha vaqt o'tganini hisoblashimiz mumkin. Bu, albatta, millis() funktsiyasi yordamida amalga oshiriladi. Hamma narsani tushunish oson bo'lishi uchun biz LEDni vaqtni kechiktirmasdan miltillash uchun quyidagi variantni ko'rib chiqamiz.

Ushbu dasturning boshlanishi boshqa har qanday standart Arduino eskizi bilan bir xil.


IN bu misolda ikkita Arduino raqamli I/U pinlari ishlatiladi. LED OUTPUT sifatida sozlangan 8-pinga ulangan. 9 via ga tugma ulangan, u INPUT sifatida sozlangan. Tugmani bosganimizda, 9-pin YUKOR holatiga o'rnatiladi va dastur 8-pinni HIGH ga o'zgartiradi va shu bilan LEDni yoqadi. Tugmani qo'yib yuborish 9-pinni LOW holatiga qaytaradi. Keyin kod 8-pinni LOW holatiga o'zgartiradi va indikator chirog'ini o'chiradi.

Beshta LEDni boshqarish uchun biz Arduino portlari bilan turli xil manipulyatsiyalardan foydalanamiz. Buning uchun biz to'g'ridan-to'g'ri ma'lumotlarni yozamiz Arduino portlari, bu faqat bitta funktsiyadan foydalangan holda LEDlar uchun qiymatlarni o'rnatishga imkon beradi.

Arduino UNO uchta portga ega: B(8 dan 13 gacha raqamli kirish/chiqish); C(analog kirishlar); D(raqamli kirish/chiqish 0 dan 7 gacha)

Har bir port uchta registrni boshqaradi. Birinchi DDR pin kirish yoki chiqish bo'lishini belgilaydi. Ikkinchi PORT registridan foydalanib, siz pinni YUQORI yoki LOW ga o'rnatishingiz mumkin. Uchinchidan foydalanib, Arduino oyoqlarining holati, agar ular kirish sifatida ishlayotgan bo'lsa, ma'lumotlarni o'qishingiz mumkin.

Sxemani ishlatish uchun biz B portidan foydalanamiz. Buning uchun barcha port pinlarini raqamli chiqish sifatida o'rnating. B portining atigi 6 oyog'i bor. DDRB registr bitlari o'rnatilishi kerak "1" , agar pin chiqish (OUTPUT) sifatida ishlatilsa va ichida "0" , agar biz pinni kirish (INPUT) sifatida ishlatishni rejalashtirsak. Port bitlari 0 dan 7 gacha raqamlangan, lekin har doim ham 8 ta pinga ega emas

Aytaylik: DDRB = B00111110;// chiqish sifatida 1 dan 5 gacha bo'lgan B portini va kirish sifatida 0 ni o'rnating.

Bizning ishlaydigan chiroqlar pallasida biz beshta chiqishdan foydalanamiz: DDRB = B00011111; // B portining 0 dan 4 gacha bo'lgan pinlarini chiqish sifatida o'rnating.

B portiga ma'lumotlarni yozish uchun siz PORTB registridan foydalanishingiz kerak. Boshqarish buyrug'i yordamida birinchi LEDni yoqishingiz mumkin: PORTB = B00000001;, birinchi va to'rtinchi LED: PORTB = B00001001 va h.k

Ikkita ikkilik siljish operatorlari mavjud: chap va o'ng. Chapga siljish operatori barcha ma'lumotlar bitlarini chapga siljitadi, o'ngga siljitish operatori esa ularni o'ngga siljitadi.

Misol:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

Endi dasturimizning manba kodiga qaytaylik. Biz ikkita o'zgaruvchini kiritishimiz kerak: yuqoriga pastga qaerga ko'chirish - yuqoriga yoki pastga va ikkinchi qiymatlarni o'z ichiga oladi cylon qaysi LEDlarni yoqish kerakligini ko'rsatadi.

Strukturaviy ravishda, bunday LED har bir rang uchun bitta umumiy terminalga va uchta terminalga ega. Quyida RGB LEDni umumiy katodli Arduino platasiga ulash diagrammasi keltirilgan. Ulanish pallasida ishlatiladigan barcha rezistorlar 220-270 Ohm oralig'ida bir xil qiymatga ega bo'lishi kerak.


Umumiy katod bilan ulanish uchun uch rangli LED uchun ulanish diagrammasi deyarli bir xil bo'ladi, faqat umumiy pin erga (qurilmadagi gnd) emas, balki +5 voltli pinga ulanadi. Ikkala holatda ham qizil, yashil va ko'k pinlar 9, 10 va 11 raqamli chiqishlar boshqaruvchisiga ulangan.

Biz tashqi LEDni Arduino UNO ning to'qqizinchi piniga 220 Ohm qarshilik orqali ulaymiz. Ikkinchisining yorqinligini muammosiz boshqarish uchun funksiyadan foydalaning analogWrite(). U PWM signalining boshqaruvchi oyog'iga chiqishini ta'minlaydi. Bundan tashqari, jamoa pinMode() qo'ng'iroq qilish kerak emas. Chunki analogWrite (pin, qiymat) ikkita parametrni o'z ichiga oladi: pin - chiqish uchun pin raqami, qiymat - 0 dan 255 gacha bo'lgan qiymat.

Kod:
/*
Yangi boshlanuvchi Arduino dasturchisi uchun analogWrite() buyrug'ining LEDning Fade effektini amalga oshirish imkoniyatlarini ochib beruvchi o'quv namunasi
*/
int yorqinligi = 0; // LED yorqinligi
int fadeAmount = 5; // yorqinlikni o'zgartirish bosqichi
imzosiz uzoq joriyTime;
imzosiz uzoq loopTime;

O'rnatishni bekor qilish() (
pinMode (9, OUTPUT); // 9-pinni chiqish sifatida o'rnating
joriyTime = millis();
loopTime = joriy vaqt;
}

Void loop() (
joriyTime = millis();
if(currentTime >= (loopTime + 20))(
analogWrite(9, yorqinlik); // 9-pinga qiymatni o'rnating

Yorqinlik = yorqinlik + fadeAmount; // keyingi siklda o'rnatiladigan yorqinlikni o'zgartirish uchun qadam qo'shing

// agar min. yoki maks. qiymatlar, keyin biz teskari yo'nalishda boramiz (teskari):
agar (yorqinlik == 0 || yorqinlik == 255) (
fadeAmount = -fadeAmount ;
}
loopTime = joriy vaqt;
}
}

Arduino operatsiyasi enkoder bilan

Kodlovchi burilish burchagini elektr signaliga aylantirish uchun mo'ljallangan. Undan biz ikkita signalni (A va B) olamiz, ular fazada qarama-qarshidir. Ushbu qo'llanmada biz SparkFun COM-09117 kodlovchisidan foydalanamiz, u har bir aylanish uchun o'n ikkita pozitsiyaga ega (har bir pozitsiya aniq 30 °). Quyidagi rasmda enkoder soat yo'nalishi bo'yicha yoki teskari yo'nalishda harakat qilganda, A va B chiqishi bir-biriga qanday bog'liqligini aniq ko'rsatadi.

Agar A signali ijobiy darajadan nolga o'tsa, biz B chiqishining qiymatini o'qiymiz. Agar B chiqishi vaqtning bu nuqtasida ijobiy holatda bo'lsa, u holda kodlovchi soat yo'nalishi bo'yicha harakat qiladi, agar B nol darajasini chiqsa, u holda enkoder teskari yo'nalishda harakat qiladi. Ikkala chiqishni o'qib, biz mikrokontroller yordamida aylanish yo'nalishini va kodlovchining A chiqishidan impulslarni hisoblash orqali aylanish burchagini hisoblashimiz mumkin.

Agar kerak bo'lsa, enkoder qanchalik tez aylanishini aniqlash uchun chastotali hisob-kitoblardan foydalanishingiz mumkin.

Qo'llanma misolimizda kodlovchidan foydalanib, biz PWM chiqishi yordamida LEDning yorqinligini moslashtiramiz. Kodlovchidan ma'lumotlarni o'qish uchun biz allaqachon qamrab olgan dasturiy ta'minot taymerlariga asoslangan usuldan foydalanamiz.

Eng tez holatda, biz enkoder tugmachasini soniyaning 1/10 qismida 180 ° aylantirishimiz mumkinligini hisobga olsak, bu soniyaning 1/10 qismida 6 impuls yoki bir soniyada 60 impuls bo'ladi.

Aslida, tezroq aylanish mumkin emas. Barcha yarim davrlarni kuzatishimiz kerakligi sababli, chastota taxminan 120 Gerts bo'lishi kerak. To'liq ishonch hosil qilish uchun keling, 200 Gts ni olaylik.

Bu holda, biz mexanik enkoderdan foydalanayotganimiz sababli, kontaktning sakrashi mumkin va past chastotali bunday suhbatni mukammal tarzda filtrlaydi.


Dastur taymerining signallari asosida enkoder A chiqishining joriy qiymatini oldingi qiymat bilan doimiy ravishda solishtirish kerak. Agar holat musbatdan nolga o'zgarsa, u holda biz B chiqish holatini so'raymiz. Davlat so'rovi natijasiga qarab, biz qiymat hisoblagichini oshiramiz yoki kamaytiramiz. LED yorqinligi LED. Taxminan 5 ms (200 Gts) vaqt oralig'idagi dastur kodi quyida keltirilgan:

Arduino boshlang'ich kodi:
/*
** Kodlovchi
** LEDning yorqinligini boshqarish uchun Sparkfun kodlovchisi ishlatiladi
*/

Int yorqinligi = 120; // LED yorqinligi, yarmidan boshlang
int fadeAmount = 10; // yorqinlikni o'zgartirish bosqichi
imzosiz uzoq joriyTime;
imzosiz uzoq loopTime;
const int pin_A = 12; // pin 12
const int pin_B = 11; // pin 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
bekor o'rnatish() (
// 9-pinni chiqish deb e'lon qiling:
pinMode (9, OUTPUT); // 9-pinni chiqish sifatida o'rnating
pinMode (pin_A, INPUT);
pinMode (pin_B, INPUT);
joriyTime = millis();
loopTime = joriy vaqt;
}
void loop() (
joriyTime = millis();
if(currentTime >= (loopTime + 5))( // har 5 msda holatlarni tekshiring (chastota 200 Gts)
kodlovchi_A = raqamli o'qish (pin_A); // enkoderning A chiqishi holatini o'qing
kodlovchi_B = raqamli o'qish (pin_B); // kodlovchi chiqishi B
if((!encoder_A) && (encoder_A_prev))( // agar holat musbatdan nolga oʻzgarsa
agar(kodlovchi_B) (
// B chiqishi musbat holatda, ya'ni aylanish soat yo'nalishi bo'yicha
// porlashning yorqinligini oshiring, 255 dan oshmasligi kerak
agar (yorqinlik + fadeAmount)
boshqa(
// B chiqishi nol holatda, ya'ni aylanish soat miliga teskari
// yorqinlikni pasaytiring, lekin noldan past emas
if(yorqinlik - fadeAmount >= 0) yorqinlik -= fadeAmount;
}

}
encoder_A_prev = encoder_A; // keyingi tsikl uchun A qiymatini saqlang

AnalogWrite(9, yorqinlik); // yorqinlikni to'qqizinchi pinga o'rnating

LoopTime = joriy vaqt;
}
}

Ushbu boshlang'ich misolida biz tovushlarni yaratish uchun piezo emitter bilan ishlashni ko'rib chiqamiz. Buning uchun 20 Hz - 20 kHz chastota diapazonida tovush to'lqinlarini yaratishga imkon beruvchi piezoelektrik sensorni olaylik.

Bu butun hajm bo'ylab LEDlar joylashgan havaskor radio dizayni. Ushbu sxemadan foydalanib, siz turli xil yorug'lik va animatsiya effektlarini yaratishingiz mumkin. Murakkab sxemalar hatto turli xil uch o'lchovli so'zlarni ko'rsatishga qodir. Boshqacha qilib aytganda, bu elementar surround monitor

Servo haydovchi turli xil radio boshqariladigan modellarni loyihalashda asosiy element bo'lib, uni boshqaruvchi yordamida boshqarish oddiy va qulaydir.


Boshqarish dasturi oddiy va intuitivdir. Bu servo drayverni boshqarish uchun barcha kerakli buyruqlarni o'z ichiga olgan faylni ulash bilan boshlanadi. Keyinchalik, biz servo ob'ektni yaratamiz, masalan, servoMain. Keyingi funktsiya o'rnatish () bo'lib, unda biz servo boshqaruvchining to'qqizinchi piniga ulanganligini aniqlaymiz.

Kod:
/*
Arduino Servo
*/
#o'z ichiga oladi
Servo servoMain; // Servo ob'ekt

O'rnatishni bekor qilish()
{
servoMain.attach(9); // Servo 9-pinga ulangan
}

void loop()
{
servoMain.write(45); // Servoni chapga 45° aylantiring
kechikish (2000); // 2000 millisekund kuting (2 soniya)
servoMain.write(0); // Servoni chapga 0° ga aylantiring
kechikish (1000); // 1 soniya pauza.

kechikish (1500); // 1,5 soniya kuting.
servoMain.write(135); // Servoni o'ngga 135° aylantiring
kechikish (3000); // 3 soniya pauza.
servoMain.write(180); // Servoni o'ngga 180° aylantiring
kechikish (1000); // 1 soniya kuting.
servoMain.write(90); // Servoni 90° aylantiring. Markaziy pozitsiya
kechikish (5000); // 5 soniya pauza.
}

Asosiy funktsiyada loop(), biz servomotorga buyruqlar beramiz, ular orasidagi pauzalar.

7-segmentli indikatorda Arduino hisoblagich sxemasi

Yangi boshlanuvchilar uchun oddiy Arduino loyihasi oddiy 7-segmentli umumiy katodli displey yordamida hisoblagich sxemasini yaratishni o'z ichiga oladi. Dastur kodi, quyida berilgan, tugmani bosganingizda 0 dan 9 gacha hisoblashni boshlash imkonini beradi.

Etti segmentli ko'rsatkich - bu raqamlarni yaratish uchun kerakli ketma-ketlikda yoqilishi mumkin bo'lgan umumiy katodli 8 ta LEDning (oxirgisi nuqta uchun mas'uldir) kombinatsiyasi. Shuni ta'kidlash kerakki, ushbu sxemada quyidagi rasmga qarang, 3 va 8-pinlar katodga ajratilgan.


O'ng tomonda yozishmalar jadvali ko'rsatilgan Arduino pinlari va LED indikator pinlari.

Ushbu loyiha uchun kod:

bayt raqamlari = (
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
bekor o'rnatish() (
for(int i = 2; i pinMode(i, OUTPUT);
}
pinMode(9, INPUT);
}
int hisoblagichi = 0;
bool go_by_switch = rost;
int last_input_value = LOW;
void loop() (
agar(go_by_switch) (
int switch_input_value = digitalRead(9);
agar(oxirgi_kirish_qiymati == PAST && o'tish_kiritish_qiymati == YUQORI) (

}
last_input_value = switch_input_value;
) boshqa (
kechikish (500);
hisoblagich = (hisoblagich + 1) % 10;
}
yozishNumber(hisoblagich);
}

Woid writeNumber(int number) (
agar (9-raqam) (
qaytish;
}
bayt niqobi = raqamlar;
bayt joriyPinMask = B10000000;
for(int i = 2; i if(mask & currentPinMask) digitalWrite(i,HIGH);
other digitalWrite(i, LOW);
currentPinMask = currentPinMask >> 1;
}
}

Siz Arduino platalarining imkoniyatlarini sezilarli darajada kengaytirishingiz mumkin qo'shimcha modullar, bu deyarli har qanday qurilmaning PIN-kodlariga ulanishi mumkin. Eng mashhur va qiziqarli kengaytirish modullarini yoki ular ham deyilganidek qalqonlarni ko'rib chiqing.