Mundarija:

Arduino bilan rangli mikser: 9 qadam (rasmlar bilan)
Arduino bilan rangli mikser: 9 qadam (rasmlar bilan)

Video: Arduino bilan rangli mikser: 9 qadam (rasmlar bilan)

Video: Arduino bilan rangli mikser: 9 qadam (rasmlar bilan)
Video: Как сделать настольный вентилятор из картона 2024, Noyabr
Anonim
Image
Image

Muallif tomonidan batafsil:

Arduino bilan rang doirasi
Arduino bilan rang doirasi
Dizayn jarayoni bilan Doodle bot
Dizayn jarayoni bilan Doodle bot
Dizayn jarayoni bilan Doodle bot
Dizayn jarayoni bilan Doodle bot
Arduino sensorli pianino
Arduino sensorli pianino
Arduino sensorli pianino
Arduino sensorli pianino

Haqida: Har doim o'rganish ….. tliguori330 haqida batafsil »

Rang aralashtirgichi Arduino bilan ishlaydigan va o'sayotgan har bir kishi uchun ajoyib loyihadir. Bu ko'rsatma oxiriga kelib, siz 3 tugmachani aylantirish orqali tasavvur qilishingiz mumkin bo'lgan deyarli har bir rangni birlashtira olasiz. Mahorat darajasi shunchalik pastki, uni hatto yangi boshlovchi ham muvaffaqiyatli tugatishi mumkin, lekin tajribali veterinarga yoqadigan darajada qiziqarli. Loyihaning narxi deyarli yo'q va ko'pchilik Arduino to'plamlari kerakli materiallar bilan ta'minlangan. Ushbu kodning markazida arduino -dan foydalanadigan har bir kishi tushunmoqchi bo'lgan ba'zi fundamental arduino funktsiyalari mavjud. Biz analogRead () va analogWrite () funktsiyalari haqida batafsil ma'lumotga ega bo'lamiz, chunki biz xarita () deb nomlangan boshqa odatiy funktsiyamiz. Ushbu havolalar sizni ushbu funktsiyalar uchun arduino ma'lumotnoma sahifalariga olib keladi.

1 -qadam: qismlar va komponetlar

Komponentlar va qismlar
Komponentlar va qismlar
Komponentlar va qismlar
Komponentlar va qismlar
Komponentlar va qismlar
Komponentlar va qismlar
Komponentlar va qismlar
Komponentlar va qismlar

Arduino Uno

Potansiyometr (x3)

RGB LED

220 ohmli qarshilik (x3)

Jumper simlari (x12)

Non paneli

2 -qadam: Taraqqiyotingizni rejalashtiring

Taraqqiyotingizni rejalashtiring
Taraqqiyotingizni rejalashtiring

Loyihangizni qanday yakunlashni rejalashtirish juda foydali bo'lishi mumkin. Kodlash - bu bir qadamdan ikkinchisiga mantiqiy o'tish. Men eskizim qanday ishlashini ko'rsatadigan oqim jadvalini tuzdim. Umumiy maqsad - RGB LEDning uchta rangining har birini boshqaradigan 3 ta tugmachani (potansiyometr) bo'lish. Buni amalga oshirish uchun biz sxemaga mos keladigan eskizni yaratishimiz kerak bo'ladi. Biz xohlaymiz ….

1) 3 xil potentsiometrni o'qing va ularning qiymatlarini o'zgaruvchilarda saqlang.

2) Biz bu qiymatlarni RGB LED diapazoniga mos keladigan tarzda o'zgartiramiz.

3) Va nihoyat, biz RGB ranglarining har biriga aylantirilgan qiymatlarni yozamiz.

3 -qadam: Potentsiometrlardan qanday foydalanish kerak

Potentsiometrlardan qanday foydalanish kerak
Potentsiometrlardan qanday foydalanish kerak
Potentsiometrlardan qanday foydalanish kerak
Potentsiometrlardan qanday foydalanish kerak

Elektron to'plamlarning eng asosiy komponentlaridan biri bo'lgan potentsiometrni turli loyihalarda ishlatish mumkin. potentsiometrlar foydalanuvchiga kontaktlarning zanglashiga qarshilikni jismonan o'zgartirish imkonini beradi. Potentsiometrning eng oddiy namunasi - yorug'lik dimmeridir. siljish yoki tugmachani aylantirish sxemaning uzunligini o'zgartiradi. uzoq yo'l ko'proq qarshilikka olib keladi. Qarshilik kuchayishi tokni teskari pasaytiradi va yorug'lik pasayadi. Ular har xil shakl va o'lchamlarda bo'lishi mumkin, lekin ko'pchiligi bir xil asosiy tuzilishga ega. Bir talaba gitarasini tuzatishda yordam so'radi va biz uning tugmachalari potentsiometrlar bilan bir xil ekanligini bilib oldik. Umuman olganda, siz tashqi oyoqlaringiz 5 voltli va erga ulangan edingiz va o'rta oyog'ingiz A0 kabi analog pinga o'tadi

4 -qadam: (3x) potentsiometrni ulash sxemasi

(3x) potentsiometr uchun simlar sxemasi
(3x) potentsiometr uchun simlar sxemasi
(3x) potentsiometr uchun simlar sxemasi
(3x) potentsiometr uchun simlar sxemasi
(3x) potentsiometr uchun simlar sxemasi
(3x) potentsiometr uchun simlar sxemasi

Eng chap oyog'i 5v ga, eng o'ng oyog'i GND ga ulanadi. Siz aslida bu ikki qadamni teskari o'zgartirishingiz mumkin va bu loyihaga katta zarar etkazmaydi. Tugmani chapga burish - hamma narsa o'zgarmoqda, aksincha, to'liq yorqinlik bo'ladi. O'rta oyoq Arduino analog pinlaridan biriga ulanadi. Bizda uchta tugma bo'ladi, shuning uchun biz qilgan ishimizni uch baravar oshirmoqchimiz. Har bir tugmachaga 5v va GND kerak, shuning uchun ularni non paneli yordamida bo'lishish mumkin. Non taxtasidagi qizil chiziq 5 voltga, ko'k chiziq esa erga ulangan. Har bir tugmachaga o'ziga xos analog pin kerak, shuning uchun ular A0, A1, A2 ga ulangan.

5 -qadam: AnalogRead () va o'zgaruvchilardan foydalanish

Siz potentsiometrni to'g'ri sozlaganingizda, biz bu qiymatlarni o'qishga tayyormiz. Biz buni xohlaganimizda analogRead () funktsiyasidan foydalanamiz. To'g'ri sintaksis analogRead (pin#); O'rta potentsiometrni o'qish uchun biz analogRead (A1); Tugmachadan Arduino -ga yuboriladigan raqamlar bilan ishlash uchun biz ham bu raqamlarni o'zgaruvchiga saqlashni xohlaymiz. Biz potentsiometrni o'qiganimizda va uning joriy raqamini "val" tamsayı o'zgaruvchisida saqlaganimizda, kod qatori bu vazifani bajaradi.

int val = analogRead (A0);

6 -qadam: Seriyali monitorni 1 tugmachadan foydalanish

Image
Image

Hozirda biz tugmachalardan qiymatlarni olishimiz va ularni o'zgaruvchiga saqlashimiz mumkin, lekin agar biz bu qiymatlarni ko'ra olsak foydali bo'ladi. Buning uchun biz o'rnatilgan ketma -ket monitordan foydalanishimiz kerak. Quyidagi kod Arduino IDE -da ishlaydigan birinchi eskiz bo'lib, uni o'z saytidan yuklab olish mumkin. Void setup () da biz har bir o'rta oyoqqa ulangan analog pinlarni INPUT sifatida faollashtiramiz va Serial.begin (9600) yordamida Serial monitorni faollashtiramiz; keyin biz faqat bitta tugmachani o'qiymiz va uni avvalgidek o'zgaruvchiga saqlaymiz. O'zgarish - bu o'zgaruvchida qaysi raqam saqlanganligini ko'rsatadigan chiziq qo'shdik. Agar siz eskizni tuzsangiz va ishga tushirsangiz, siz Serial monitorni ochishingiz va ekranda aylanayotgan raqamlarni ko'rishingiz mumkin. Har safar kod aylansa, biz boshqa raqamni o'qiymiz va chop etamiz. Agar siz A0 ga ulangan tugmani aylantirsangiz, 0-1023 gacha bo'lgan qiymatlarni ko'rishingiz kerak. Keyinchalik, saqlash va chop etish uchun yana 2 analogReads va 2 xil o'zgaruvchini talab qiladigan barcha 3 potntiometrni o'qish maqsad qilinadi.

bo'sh o'rnatish () {

pinMode (A0, INPUT); pinMode (A1, Kirish); pinMode (A2, Kirish); Serial.begin (9600); } void loop () {int val = analogRead (A0); Serial.println (val); }

7 -qadam: RGB LEDini ishlatish

RGB LED -dan foydalanish
RGB LED -dan foydalanish
RGB LED -dan foydalanish
RGB LED -dan foydalanish
RGB LED -dan foydalanish
RGB LED -dan foydalanish

4 oyoqli RGB LED i Arduino uchun eng sevimli komponentlarimdan biri. Men 3 ta asosiy ranglarning aralashmasidan cheksiz ranglarni yaratishning ajoyib usulini topaman. O'rnatish har qanday oddiy LEDga o'xshaydi, lekin bu erda asosan qizil, ko'k va yashil LEDlar birlashtirilgan. Qisqa oyoqlarning har birini arduino ustidagi PWM pinlaridan biri boshqaradi. Eng uzun oyoq 5 voltli yoki erga ulanadi, bu sizning umumiy anod yoki katodli LED -ga bog'liq. Muammoni hal qilish uchun siz ikkala usulni ham sinab ko'rishingiz kerak. Bizda allaqachon 5v va GND bo'ladi, uni taxtaga ulang, uni o'zgartirish oson. Yuqoridagi diagrammada 3 ta rezistor ishlatilgan. Men bu qadamni tez -tez o'tkazib yuboraman, chunki menda yo'q edi va menga LED tushdi.

Ranglarni yaratish uchun biz analogWrite () funktsiyasidan foydalanib, qancha qizil, ko'k yoki yashil qo'shilishini nazorat qilamiz. Bu funktsiyadan foydalanish uchun biz qaysi pin# bilan gaplashamiz va 0-255 oralig'idagi raqamni aytishimiz kerak. 0 butunlay o'chirilgan va 255 bitta rangning eng yuqori miqdori. Qizil oyoqni 9 -pinga, yashilni 10 -ga, ko'kni 11 -pin bilan bog'laylik. Bu qaysi oyog'ining rangi ekanligini aniqlash uchun biroz sinov va xatolarni talab qilishi mumkin. Agar men binafsha rang yasamoqchi bo'lsam, qizil rangni ko'p qila olardim, yashil emas, balki ko'kning yarmini ham. Men sizni bu raqamlar haqida o'ylashga taklif qilaman, bu haqiqatan ham hayajonli. Ba'zi umumiy misollar yuqoridagi rasmlarda

bo'sh o'rnatish () {

pinMode (9, OUTPUT); pinMod (10, OUTPUT); pinMode (11, OUTPUT); } void loop () {analogWrite (9, 255); analogWrite (10, 0); analogWrite (11, 125)}

8 -qadam: RGB LEDini boshqarish uchun potentsiometrlardan foydalanish (bitta xato bilan)

RGB LEDni boshqarish uchun potentsiometrlardan foydalanish (bitta xato bilan)
RGB LEDni boshqarish uchun potentsiometrlardan foydalanish (bitta xato bilan)
RGB LEDni boshqarish uchun potentsiometrlardan foydalanish (bitta xato bilan)
RGB LEDni boshqarish uchun potentsiometrlardan foydalanish (bitta xato bilan)
RGB LEDni boshqarish uchun potentsiometrlardan foydalanish (bitta xato bilan)
RGB LEDni boshqarish uchun potentsiometrlardan foydalanish (bitta xato bilan)

Ikkala kodni birlashtirishni boshlash vaqti keldi. Oddiy non panelida barcha 3 tugmachaga va RGB LED -ga mos keladigan joy bo'lishi kerak. Qizil ko'k va yashil ranglarni kiritish o'rniga, biz har bir poteniometrda saqlangan qiymatlardan foydalanib ranglarni doimiy ravishda o'zgartiramiz. bu holda bizga 3 ta o'zgaruvchi kerak bo'ladi. qizil davr, yashil asr, ko'k rang - bu har xil o'zgaruvchilar. Shuni yodda tutingki, siz bu o'zgaruvchilarni xohlagan narsangizga nomlashingiz mumkin. agar siz "yashil" tugmani aylantirsangiz va qizil rang o'zgarsa, siz ismlarni to'g'ri moslashtirishga o'tishingiz mumkin. endi siz har bir tugmani burishingiz va ranglarni boshqarishingiz mumkin !!

bo'sh o'rnatish () {

pinMode (A0, INPUT); pinMode (A1, Kirish); pinMode (A2, Kirish); pinMode (9, OUTPUT); pinMod (10, OUTPUT); pinMode (11, OUTPUT); } void setup () {int redVal = analogRead (A0); int greenVal = analogRead (A1); int blueVal = analogRead (A2); analogWrite (9, redVal); analogWrite (10, greenVal); analogWrite (11, blueVal); }

9 -qadam: BONUS: Map () funktsiyasi va tozalovchi kodi

Siz sezishingiz mumkinki, siz tugmachani bitta rangga aylantira boshlasangiz, u o'sadi va keyin birdan pastga tushadi. Bu tugmachani yuqoriga aylantirganda, o'sish va keyin tez o'chish 4 marta takrorlanadi. Agar eslasangiz, biz aytardikki, potentsiometrlar 0 dan 1023 gacha bo'lgan qiymatlarni o'qiy oladi. AnalogWrite () funktsiyasi faqat 0 dan 255 gacha bo'lgan qiymatlarni qabul qiladi. Potentsiometr 255 dan oshsa, u asosan 0 dan boshlanadi. xato deb nomlangan xato (). Siz bir qadamda bitta raqamlar diapazonini boshqa raqamlar diapazoniga o'zgartirishingiz mumkin. biz 0-1023 dan raqamlarni 0-255 gacha bo'lgan raqamlarga aylantiramiz. Misol uchun, agar tugma yarim yo'lga qo'yilgan bo'lsa, u taxminan 512 ni o'qishi kerak. Bu raqam 126 ga o'zgartiriladi, bu LED uchun yarim kuch. Oxirgi eskizda men qulay bo'lishi uchun pinlarni o'zgarmaydigan nomlar bilan nomladim. Sizda tajriba o'tkazish uchun tayyor rangli mikser bor !!!

// potentsiometr pinlari uchun o'zgarmaydigan nomlar

int redPot = A0; int greenPot = A1; int bluePot = A2 // RGB pinlari uchun o'zgarmaydigan nomlar int redLED = 9; int greenLED = 10; int blueLED = 11; void setup () {pinMode (redPot, INPUT); pinMode (greenPOT, INPUT); pinMode (bluePot, INPUT); pinMode (redLED, OUTPUT); pinMod (yashil LED, OUTPUT); pinMode (blueLED, OUTPUT); Seriya, boshlanadi (9600); } void loop () {// potentsiometrlardan qiymatlarni o'qish va saqlash int redVal = analogRead (redPot); int greenVal = analogRead (greenPot); int blueVal - analogRead (bluePot); // RGB LED redVal = map (redVal, 0, 1023, 0, 255) uchun 0-1023 dan 0-255 gacha bo'lgan qiymatlarni aylantirish; greenVal = xarita (greenVal, 0, 1023, 0, 255); blueVal = xarita (blueVal, 0, 1023, 0, 255); // bu o'zgartirilgan qiymatlarni RGB LED analogWrite (redLED, redVal) ning har bir rangiga yozing; anaogWrite (greenLED, greenVal); analogWrite (blueLED, blueVal); // qiymatlarni Serial monitorda ko'rsatish Serial.print ("qizil:"); Serial.print (redVal); Serial.print ("yashil:"); Ketma -ket chop etish (greenVal); Serial.print ("ko'k:"); Serial.println (blueVal); }

Tavsiya: