Мазмуну:

Magicbitтен жөнөкөй DIY түстүү сенсор: 5 кадам
Magicbitтен жөнөкөй DIY түстүү сенсор: 5 кадам

Video: Magicbitтен жөнөкөй DIY түстүү сенсор: 5 кадам

Video: Magicbitтен жөнөкөй DIY түстүү сенсор: 5 кадам
Video: Секрет опытных мастеров! Как легко состыковать материал, если в углу стоит круглая труба? #shorts 2024, Ноябрь
Anonim
Image
Image

Бул үйрөткүчтө биз Arduino менен Magicbitти колдонуп жөнөкөй түстүү сенсорду кантип жасоону үйрөнөбүз.

Жабдуулар

  • Magicbit
  • USB-Aдан Micro-USB кабелине

1 -кадам: Окуя

Аппараттык орнотуу
Аппараттык орнотуу

Салам балдар, кээде кээ бир максаттар үчүн түстүү сенсорлорду колдонууга туура келет. Бирок, балким, алар кантип иштээрин билбейсиз. Ошентип, бул үйрөткүчтө сиз Arduino менен Magicbitти колдонуп, жөнөкөй DIY түс сенсорун кантип жасоону үйрөнөсүз. Баштайлы.

2 -кадам: Теория жана методология

Бул долбоордо биз сизге кызыл, жашыл жана көк түстөрдү аныктай турган түс сенсорун курууну үйрөтөбүз деп күтүп жатабыз. Бул абдан негизги мисал. Ошентип, муну кантип кылуу керек. Бул үчүн биз Magicbitтин RGB модулун жана курулган LDRди колдонобуз. Биринчиден, сиз кээ бир теорияны үйрөнүшүңүз керек. Бул жарыктын чагылуу өлчөмү жөнүндө. Эми мен сизден суроо берип жатам. Кандай түстүү бет кызыл түстөгү жарыкты көбүрөөк чагылдырат, ошондой эле көбүнчө жашыл жана көк жарыктарды чагылдырган беттер. Кичине ойлон. Бирок жооп жөнөкөй. Кызыл түстүү бет негизинен кызыл түстөгү жарыкты чагылдырат. Ошондой эле жашыл жана көк беттер жашыл жана көк чырактарды чагылдырат. Ошентип, бул долбоордо биз ошол теорияны колдонобуз. Түстү таануу үчүн биз бирден кызыл, жашыл жана көк жарыктарды чыгарабыз. Ар бир жолу биз LDR value. If жардамы менен чагылуу суммасын өлчөйбүз, эгерде кээ бир жарык башка эки жарыкка караганда көбүрөөк чагылса, анда бул бет негизинен түстүү бетке чагылдырылышы керек.

3 -кадам: Аппараттык орнотуу

Бул абдан жөнөкөй. RGB модулуңузду Magicbitтин жогорку оң портуна сайыңыз. Бул модулда WS2812B Neopixel LED бар. Бул LEDде 4 төөнөгүч бар. Экөө бийлик үчүн жана экөө Маалыматты киргизүү жана чыгаруу үчүн. Биз бир ледди колдонгонубуз үчүн, бизге кубат төөнөгүчтөрү жана пиндеги маалыматтар гана керек. Эгер ал модул жок болсо, сиз Neopixel модулун сатып ала аласыз. Эгер сиз мындай модулду сатып алган болсоңуз, анда Magicbitке туташтыргычтарды жана маалыматтарды туташтырышыңыз керек. Бул абдан оңой. Magicbitтин VCC жана GND'син RGB модулунун казыктарына жана D33 пинге маалымат пинине туташтырыңыз.

4 -кадам: Программаны орнотуу

Көбүнчө программалоо аркылуу жасалат. Биз Magicbitти программалоо үчүн Arduino IDE колдонобуз. Коддо биз эки китепкананы колдонобуз. Алар башкаруу Neopixel LED үчүн Adafruit Neopixel китепканасы жана OLED туткасы үчүн Adafruit OLED китепканасы. Орнотууда биз кириштерибизди жана чыгууларыбызды конфигурациялайбыз. Ошондой эле Magicbitке орнотулган OLED дисплейди конфигурациялаңыз. Укурукта биз Magicbitтин сол кол баскычы басылганын же басылбаганын текшеребиз. Эгер ал басылган болсо, анда кирүү сигналы 0. Анткени ал буга чейин такта тарабынан тартылган. Эгер ал басылган болсо, анда биз түстөрдү текшеребиз. Болбосо, экранда "түс жок" деген билдирүү пайда болот. Баскыч басылганда, автоматтык түрдө кызыл, жашыл жана көк жарыктарды бирден күйгүзүп, түстөрдүн чагылуусун үч өзгөрмөгө сактаңыз. Андан кийин биз ошол баалуулуктарды салыштырып, максималдуу түстүн түсүн чыгаруу түсү катары көрсөтүү үчүн тандап алдык.

Ошентип, Micro USB кабелин Magicbitке туташтырып, тактайдын түрүн жана портторун туура тандаңыз. Эми кодду жүктөңүз. Андан кийин сенсорубузду текшерүүгө убакыт келди. Муну текшерүү үчүн LDR жана RGB модулунда кызыл, жашыл же көк түстүү кагазды же баракты кармап, сол баскычты басыңыз. Андан кийин OLED дисплей бетинин түсүн көрсөтөт. Эгерде бул туура эмес болсо, анда кээ бир түстөрдүн жогорку жарык интенсивдүүлүгү бар. Мисал катары, ар бир жашыл беттин чыгышы кызыл түстө болсо, анда кызыл жарыктын жарыгын кандайдыр бир өлчөмдөн азайтуу керек. Анткени бул учурда кызыл жарыктын жарыгы өтө жогору. Ошентип, ал жогорку рефлексияга ээ. Эгерде сиз жарыкты кантип башкарууну билбесеңиз, анда төмөнкү шилтемеден окуу куралын караңыз.

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

Бул шилтемеден сиз Magicbitтен RGB модулун кантип башкарууну таба аласыз. Ошондой эле сиз LDR менен кантип иштөөнү жана Magicbit аркылуу баскычты басууну таба аласыз. Бул документти окуп, түстүү сенсорду кантип жакшыртуу керектигин үйрөнүңүз. Анткени бул түстүү сенсорлордун иштешинин эң негизги мисалы. Көпчүлүк түстүү сенсорлор ушундай иштейт. Андыктан айланадагы жарык ызы -чууну жана башка үндөрдү жок кылуу менен муну жакшыртууга аракет кылыңыз.

5 -кадам: түс сенсорунун Arduino коду

#кошуу

33

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #кошуу #кошуу #кошуу #аныктоо OLED_RESET 4 Adafruit_SSD1306 дисплейи (128, 64); #define LDR 36 #define Button 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (Баскыч, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); кечигүү (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// if button is pressed when LED.setPixelColor (0, LED. Color (0, 50, 0)); // redcolour 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) {// кызыл эң көп чагылдырылган Дисплей ("КЫЗЫЛ", 3); } else if (G_value> R_value && G_value> B_value) {// green эң чагылдырылган Дисплей ("ЖАШЫЛ", 3); } else if (B_value> R_value && B_value> G_value) {// blue эң көп чагылдырылган Дисплей ("КӨК", 3); } Serial.print ("КЫЗЫЛ ="); Serial.print (R_value); Serial.print ("GREEN ="); Serial.print (G_value); Serial.print ("КӨК ="); Serial.println (B_value); } башка {LED.setPixelColor (0, LED. Color (0, 0, 0))); // өчүрүү RGB LED.show (); Дисплей ("NO COLOR", 2); }} void Display (String commond, int size) {// дисплей маалыматтарды чагылдыруу.clearDisplay (); display.setTextSize (өлчөмү); // Жөнөкөй 1: 1 пиксел масштабдуу display.setTextColor (АК); // Ак текстти тартуу Display.setCursor (0, 20); // Дисплейдин жогорку сол бурчунан баштаңыз.println (commond); display.display (); }

Сунушталууда: