Բովանդակություն:

Պարզ DIY գույնի տվիչ Magicbit- ից ՝ 5 քայլ
Պարզ DIY գույնի տվիչ Magicbit- ից ՝ 5 քայլ

Video: Պարզ DIY գույնի տվիչ Magicbit- ից ՝ 5 քայլ

Video: Պարզ DIY գույնի տվիչ Magicbit- ից ՝ 5 քայլ
Video: Ինչ պետք է իմանա երեխան (3-4 տարեկան) 2024, Հուլիսի
Anonim
Image
Image

Այս ձեռնարկում մենք կսովորենք, թե ինչպես կարելի է պարզ գույնի ցուցիչ պատրաստել ՝ օգտագործելով Magicbit- ը Arduino- ի հետ:

Պարագաներ

  • Magicbit
  • USB-A- ից մինչև Micro-USB մալուխ

Քայլ 1: Պատմություն

Սարքաշարի տեղադրում
Սարքաշարի տեղադրում

Ողջույն, տղերք, որոշ ժամանակներում դուք պետք է որոշ չափով օգտագործեք գունային տվիչներ: Բայց գուցե դուք չգիտեք, թե ինչպես են դրանք գործում: Այսպիսով, այս ձեռնարկում դուք կսովորեք, թե ինչպես կատարել պարզ DIY գույնի սենսոր ՝ օգտագործելով Magicbit- ը Arduino- ի հետ: Եկեք սկսենք:

Քայլ 2. Տեսություն և մեթոդաբանություն

Այս նախագծում մենք ակնկալում ենք ձեզ սովորեցնել կառուցել գույնի տվիչ, որը կարող է հայտնաբերել կարմիր, կանաչ և կապույտ գույները: Սա շատ հիմնական օրինակ է: Այսպիսով, ինչպես դա անել: Այդ նպատակով մենք օգտագործում ենք Magicbit- ի RGB մոդուլը և ներկառուցված LDR- ը: Նախևառաջ պետք է սովորել ինչ -որ տեսության մասին: Դա լույսի արտացոլման գումարի մասին է: Հիմա ես ձեզ եմ հարց տալիս: Ո՞ր գույնի մակերեսն է ամենից շատ արտացոլում կարմիր գույնի լույսը, ինչպես նաև այն մակերեսները, որոնք հիմնականում արտացոլում են կանաչ և կապույտ լույսերը: Մի քիչ մտածիր: Բայց պատասխանը պարզ է. Կարմիր գույնի մակերեսը հիմնականում արտացոլում է կարմիր գույնի լույսը: Նաև կանաչ և կապույտ մակերեսները կարտացոլեն կանաչ և կապույտ լույսերը: Այսպիսով, այս նախագծում մենք օգտագործում ենք այդ տեսությունը: Գույնը ճանաչելու համար մենք կարմիր, կանաչ և կապույտ լույսեր ենք արձակում մեկ առ մեկ: Ամեն անգամ մենք չափում ենք արտացոլման չափը `օգտագործելով LDR արժեքը: Եթե որոշ լույսեր ավելի շատ անդրադարձնում են, քան մյուս երկու լույսերը, ապա այդ մակերեսը պետք է հիմնականում արտացոլված լինի գունավոր մակերեսով:

Քայլ 3: Սարքավորման կարգավորում

Սա շատ պարզ է: Միացրեք ձեր RGB մոդուլը Magicbit- ի վերին աջ նավահանգստում: Այս մոդուլն ունի WS2812B Neopixel LED: Այս LED- ն ունի 4 կապում: Երկուսը ՝ իշխանության և երկուսը ՝ տվյալների մուտքի և ելքի համար: Քանի որ մենք օգտագործում ենք մեկ led, մեզ անհրաժեշտ են միայն հոսանքի կապեր և տվյալներ կապում: Եթե դուք չունեք այդ մոդուլը, կարող եք գնել և Neopixel մոդուլը: Եթե դուք գնել եք նման մոդուլ, ապա պետք է հոսանքի կապերն ու տվյալները կապեք կապի մեջ Magicbit- ին: Դա շատ հեշտ է: Միացրեք Magicbit- ի VCC- ն և GND- ը RGB մոդուլի հոսանքի կապերին, իսկ D33 կապը ՝ տվյալների կապին:

Քայլ 4: Softwareրագրաշարի տեղադրում

Partրագրավորման մեծ մասը կատարվում է: Մենք օգտագործում ենք Arduino IDE- ն `մեր Magicbit- ը ծրագրավորելու համար: Կոդում մենք օգտագործում ենք մի քանի գրադարան: Դրանք Adafruit Neopixel գրադարանն են Neopixel LED- ի վերահսկման համար և Adafruit OLED գրադարանը բռնակի OLED- ի համար: Կարգավորման մեջ մենք կարգավորում ենք մեր մուտքերն ու ելքերը: Կարգավորեք նաև ներկառուցված OLED էկրանը Magicbit- ում: Օղակի մեջ մենք ստուգում ենք, որ ձախ ձեռքի կոճակը սեղմված է Magicbit- ի կողմից, թե ոչ: Եթե այն սեղմված է, մուտքային ազդանշանը 0. Քանի որ այն արդեն քաշված է տախտակի կողմից: Եթե այն սեղմված է, ապա մենք կատարում ենք գույնի ստուգում: Եթե ոչ, ապա էկրանին կցուցադրվի «առանց գույնի» հայտարարությունը: Երբ կոճակը սեղմվում է, ինքնաբերաբար միացրեք կարմիր, կանաչ և կապույտ լույսերը մեկ առ մեկ և պահեք գույների արտացոլման քանակը երեք փոփոխականի: Հաջորդը մենք համեմատեցինք այդ արժեքները և ընտրեցինք առավելագույն արժեքի գույնը `որպես ելքային գույն ցուցադրելու համար:

Այսպիսով, միացրեք միկրո USB մալուխը Magicbit- ին և ճիշտ ընտրեք տախտակի տեսակը և com պորտերը: Այժմ վերբեռնեք ծածկագիրը: Հետո ժամանակն է փորձարկել մեր սենսորը: Դա ստուգելու համար LDR և RGB մոդուլների վրա պահեք կարմիր, կանաչ կամ կապույտ երեսպատված թուղթ կամ թերթ, և սեղմեք ձախ կոճակը: Այնուհետեւ OLED էկրանը ցույց կտա, թե որն է մակերեսի գույնը: Եթե դա սխալ է, պատճառն այն է, որ որոշ գույներ ունեն բարձր լույսի ինտենսիվություն: Որպես օրինակ յուրաքանչյուր կանաչ մակերևույթի վրա ելքը կարմիր է, ապա պետք է որոշ չափով նվազեցնել կարմիր լույսի պայծառությունը: Քանի որ կարմիր լույսն այդ դեպքում շատ բարձր պայծառություն ունի: Այսպիսով, այն ունի բարձր արտացոլում: Եթե չգիտեք, թե ինչպես կարելի է վերահսկել պայծառությունը, ապա ստորև բերված հղմանը դիմեք ձեռնարկին:

magicbit-arduino.readthedocs.io/hy/latest/

Այս հղումով կարող եք գտնել, թե ինչպես կառավարել այդ RGB մոդուլը Magicbit- ից: Եվ դուք կարող եք գտնել, թե ինչպես աշխատել LDR- ով և սեղմել կոճակը ՝ օգտագործելով Magicbit- ը: Կարդացեք այդ փաստաթուղթը և ուսումնասիրեք, թե ինչպես բարելավել գույնի ցուցիչը: Քանի որ սա շատ հիմնական օրինակ է այն մասին, թե ինչպես են աշխատում գույնի տվիչները: Գույնի տվիչների մեծ մասը գործում է այս կերպ: Այսպիսով, փորձեք բարելավել դա ՝ հեռացնելով շրջապատի լույսի աղմուկը և այլ աղմուկներ:

Քայլ 5. Գունային տվիչի Arduino կոդ

#ներառում

#սահմանել LED_PIN 33

#սահմանել LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #ներառել #ներառել #ներառել #սահմանել OLED_RESET 4 Adafruit_SSD1306 էկրան (128, 64); #սահմանել LDR 36 #սահմանել կոճակը 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (Կոճակ, Մուտք); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); ուշացում (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// if կոճակը սեղմված է LED.setPixelColor (0, LED. Color (0, 50, 0)); // կարմիր գույնի LED.show (); ուշացում (100); R_value = analogRead (LDR); // ստանալ կարմիր լեռ LED.setPixelColor (0, LED. Color (150, 0, 0)); // greencolour LED.show (); ուշացում (100); G_value = analogRead (LDR); // ստանալ կանաչ լեռ LED.setPixelColor (0, LED. Color (0, 0, 255)); // bluecolour LED.show (); ուշացում (100); B_value = analogRead (LDR); // ստանալ կապույտ լեռ, եթե (R_value> G_value && R_value> B_value) {// կարմիրը ամենից արտացոլված է Displayուցադրումը ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// կանաչը առավել արտացոլված է Displayուցադրումը («GREEN», 3); } else if (B_value> R_value && B_value> G_value) {// կապույտն առավել արտացոլված է Displayուցադրումը («BLUE», 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("Կանաչ ="); Serial.print (G_value); Serial.print ("BLUE ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // անջատված RGB LED.show (); Displayուցադրել («NO COLOR», 2); }} void Display (String commond, int size) {// display data display.clearDisplay (); display.setTextSize (չափ); // Սովորական 1: 1 պիքսելային մասշտաբի display.setTextColor (ՍՊԻՏԱԿ); // Նկարել սպիտակ տեքստի ցուցադրում: setCursor (0, 20); // Սկսեք վերևի ձախ անկյունում ցուցադրումից: println (ընդհանուր); display.display (); }

Խորհուրդ ենք տալիս: