Mundarija:
Video: Magicbit -dan oddiy DIY rang sensori: 5 qadam
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Ushbu qo'llanmada biz Magicbit yordamida Arduino yordamida oddiy rang sensori yasashni o'rganamiz.
Ta'minotlar
- Magicbit
- USB-A-Micro-USB kabeli
1 -qadam: hikoya
Salom bolalar, ba'zida ba'zi maqsadlar uchun rang sensorlaridan foydalanish kerak bo'ladi. Lekin, ehtimol siz ularning qanday ishlashini bilmayapsiz. Shunday qilib, bu qo'llanmada siz Magicbit yordamida Arduino yordamida oddiy DIY rang sensori yasashni o'rganasiz. Boshlaylik.
2 -qadam: nazariya va metodologiya
Ushbu loyihada biz sizga qizil, yashil va ko'k ranglarni aniqlaydigan rang sensori qurishni o'rgatamiz. Bu juda oddiy misol. Xo'sh, buni qanday qilish kerak. Buning uchun biz Magicbit va o'rnatilgan LDR RGB modulidan foydalanamiz. Avval siz ba'zi nazariyalarni o'rganishingiz kerak. Bu yorug'lik aksi miqdori haqida. Endi sizdan savol so'rayman. Qaysi rangli sirt qizil rangni aks ettiradi va qaysi yuzalar asosan yashil va ko'k chiroqlarni aks ettiradi. Bir oz o'ylab ko'ring. Lekin javob oddiy. Qizil rangli sirt asosan qizil nurni aks ettiradi. Yashil va ko'k yuzalar yashil va ko'k chiroqlarni aks ettiradi. Shunday qilib, ushbu loyihada biz ushbu nazariyadan foydalanamiz. Rangni bilish uchun biz qizil, yashil va ko'k chiroqlarni birma -bir chiqaramiz. Har safar biz LDR qiymatini ishlatib, aks ettirish miqdorini o'lchaymiz, agar ba'zi yorug'lik boshqa ikkita chiroqqa qaraganda ko'proq aks etsa, u holda sirt asosan rangli sirtda aks etishi kerak.
3 -qadam: Uskuna sozlamalari
Bu juda oddiy. RGB modulini Magicbit -ning yuqori o'ng burchagiga ulang. Ushbu modulda WS2812B Neopixel LED mavjud. Bu LEDda 4 ta pin bor. Ikkisi quvvat uchun va ikkitasi ma'lumotlarni kiritish va chiqarish uchun. Biz bitta svetodioddan foydalanganimiz uchun bizga faqat quvvat pinlari va pinli ma'lumotlar kerak bo'ladi. Agar sizda bunday modul bo'lmasa, siz Neopixel modulini sotib olishingiz mumkin. Agar siz bunday modulni sotib olgan bo'lsangiz, Magicbit -ga quvvat pinlari va pinli ma'lumotlarni ulashingiz kerak. Bu juda oson. Magicbit -ning VCC va GND -ni RGB modulining pinlariga va D33 pinini ma'lumot piniga ulang.
4 -qadam: dasturiy ta'minotni sozlash
Ko'p qismi dasturlash orqali amalga oshiriladi. Biz Magicbit -ni dasturlash uchun Arduino IDE -dan foydalanamiz. Kodda biz ikkita kutubxonadan foydalanamiz. Ular Neopixel LEDni boshqarish uchun Adafruit Neopixel kutubxonasi va OLED tutqichi uchun Adafruit OLED kutubxonasi. O'rnatishda biz kirish va chiqishlarni sozlaymiz. Magicbit -dagi o'rnatilgan OLED -displeyni ham sozlang. Loopda biz Magicbit -ning chap qo'li bosilgan yoki bosilmaganligini tekshiramiz. Agar u bosilsa, kirish signali 0 bo'ladi. Chunki u allaqachon taxta tomonidan tortilgan. Agar u bosilsa, biz ranglarni tekshiramiz. Aks holda, ekranda "rang yo'q" yozuvi paydo bo'ladi. Tugma bosilganda avtomatik ravishda qizil, yashil va ko'k chiroqlarni birma -bir yoqing va ranglarning aks ettirish miqdorini uchta o'zgaruvchiga saqlang. Keyin biz bu qiymatlarni solishtirdik va chiqish rangi sifatida ko'rsatiladigan maksimal qiymat rangini tanladik.
Mikro USB kabelini Magicbit -ga ulang va karta turini va portlarini to'g'ri tanlang. Endi kodni yuklang. Keyin sensorimizni sinab ko'rish vaqti keldi. Buni tekshirish uchun LDR va RGB modulida qizil, yashil yoki ko'k rangli qog'oz yoki varaqni ushlab turing va chap tugmani bosing. Keyin OLED displeyi yuzaning rangini ko'rsatadi. Agar bu noto'g'ri bo'lsa, buning sababi shundaki, ba'zi ranglar yuqori yorug'lik intensivligiga ega. Misol sifatida, har bir yashil yuzada chiqish qizil bo'lsa, siz qizil yorug'lik yorqinligini biroz kamaytirishingiz kerak. Chunki bu holda qizil chiroq juda yuqori yorqinlikka ega. Shunday qilib, u yuqori aks ettirishga ega. Agar siz yorqinlikni qanday boshqarishni bilmasangiz, quyidagi havoladagi qo'llanmani ko'ring.
magicbit-arduino.readthedocs.io/en/latest/
Ushbu havolada siz Magicbit -dan RGB modulini qanday boshqarishni topishingiz mumkin. Shuningdek, siz LDR bilan qanday ishlashni va Magicbit yordamida tugmani bosishni bilib olasiz. Hujjatni o'qing va rang sensorini qanday yaxshilashni o'rganing. Chunki bu rang sensorlar qanday ishlashiga asosiy misol. Rangli sensorlarning aksariyati shunday ishlaydi. Shunday qilib, atrofdagi yorug'lik shovqini va boshqa tovushlarni olib tashlash orqali buni yaxshilashga harakat qiling.
5 -qadam: Arduino rang sensori kodi
#qo'shing
#LED_PIN 33 ni aniqlang
#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 displeyi (128, 64); #define LDR 36 #define tugmasi 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (tugma, kirish); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); kechikish (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// agar tugma bosilsa LED.setPixelColor (0, LED. Color (0, 50, 0))); // qizil rangli LED.show (); kechikish (100); R_value = analogRead (LDR); // qizil rangli LED.setPixelColor (0, LED. Color (150, 0, 0)); // yashil rangdagi LED.show (); kechikish (100); G_value = analogRead (LDR); // yashil rangni o'rnatish LED.setPixelColor (0, LED. Color (0, 0, 255)); // ko'k rangli LED.show (); kechikish (100); B_value = analogRead (LDR); // ko'k rangga ega bo'ling, agar (R_value> G_value && R_value> B_value) {// qizil rang eng ko'p aks ettirilgan Displey ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// yashil rang eng ko'p aks ettirilgan Displey ("Yashil", 3); } else if (B_value> R_value && B_value> G_value) {// ko'k eng ko'p aks ettirilgan Displey ("KO'K", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("Yashil ="); Serial.print (G_value); Serial.print ("KO'K ="); Serial.println (B_value); } boshqa {LED.setPixelColor (0, LED. Color (0, 0, 0))); // o'chirilgan RGB LED.show (); Ko'rsatish ("Rang yo'q", 2); }} void Display (String commond, int size) {// ma'lumotlarni ko'rsatish display.clearDisplay (); display.setTextSize (hajmi); // Oddiy 1: 1 pikselli displey.setTextColor (WHITE); // Oq matnni chizish display.setCursor (0, 20); // Displeyning yuqori chap burchagidan boshlang.println (commond); display.display (); }