Yksinkertainen DIY -värianturi Magicbitista: 5 vaihetta
Yksinkertainen DIY -värianturi Magicbitista: 5 vaihetta

Video: Yksinkertainen DIY -värianturi Magicbitista: 5 vaihetta

Video: Yksinkertainen DIY -värianturi Magicbitista: 5 vaihetta
Video: Основные ошибки при возведении перегородок из газобетона #5 2025, Tammikuu
Anonim
Image
Image

Tässä opetusohjelmassa opimme tekemään yksinkertaisen värianturin Magicbitin ja Arduinon avulla.

Tarvikkeet

  • Magicbit
  • USB-A-Micro-USB-kaapeli

Vaihe 1: Tarina

Laitteiston asennus
Laitteiston asennus

Hei kaverit, joskus on käytettävä värianturia joihinkin tarkoituksiin. Mutta et ehkä tiedä, miten ne toimivat. Joten tässä opetusohjelmassa opit tekemään yksinkertaisen DIY -värianturin Magicbitin ja Arduinon avulla. Aloitetaan.

Vaihe 2: Teoria ja metodologia

Tässä projektissa odotamme opettaa sinua rakentamaan värianturin, joka pystyy havaitsemaan punaisen, vihreän ja sinisen värin. Tämä on hyvin yksinkertainen esimerkki. Joten miten tämä tehdään. Tätä tarkoitusta varten käytämme Magicbitin RGB -moduulia ja sisäänrakennettua LDR: ää. Ensin sinun on opittava teoria. Kyse on valon heijastuksen määrästä. Nyt kysyn teiltä kysymyksen. Mikä värillinen pinta heijastaa eniten punaista valoa? Myös mitkä pinnat heijastavat enimmäkseen vihreää ja sinistä valoa. Ajattele vähän. Mutta vastaus on yksinkertainen. Punainen pinta heijastaa enimmäkseen punaista valoa. Myös vihreät ja siniset pinnat heijastavat vihreitä ja sinisiä valoja. Joten tässä projektissa käytämme tätä teoriaa. Värin tunnistamiseksi lähetämme punaisia, vihreitä ja sinisiä valoja yksitellen. Aina kun mittaamme heijastussummaa käyttämällä LDR -arvoa. Jos jokin valo heijastaa eniten kuin kaksi muuta valoa, sen pinnan tulisi olla enimmäkseen heijastunut värillinen pinta.

Vaihe 3: Laitteiston asennus

Tämä hyvin yksinkertainen. Liitä RGB -moduulisi Magicbitin oikeaan yläkulmaan. Tässä moduulissa on WS2812B Neopixel LED. Tässä LED -valossa on 4 nastaa. Kaksi virtaa ja kaksi dataa sisään ja ulos. Koska käytämme yhtä lediä, tarvitsemme vain nastat ja tiedot nastassa. Jos sinulla ei ole kyseistä moduulia, voit ostaa Neopixel -moduulin. Jos ostit tällaisen moduulin, sinun on kytkettävä nastat ja tiedot nastassa Magicbitiin. Se on erittäin helppoa. Liitä Magicbitin VCC ja GND RGB -moduulin ja D33 -nastan datatappiin.

Vaihe 4: Ohjelmiston asennus

Suurin osa ohjelmoinnista. Käytämme Arduino IDE: tä Magicbitin ohjelmointiin. Koodissa käytämme paria kirjastoa. Ne ovat Adafruit Neopixel -kirjasto Neopixel LED -ohjaukseen ja Adafruit OLED -kirjasto OLED -kahvaan. Asetuksissa määritämme tulot ja lähdöt. Määritä myös sisäänrakennettu OLED -näyttö Magicbitissa. Silmukassa tarkistamme, että vasen painike on painettu tai ei Magicbitista. Jos sitä painetaan, tulosignaali on 0. Koska levy jo vetää sen ylös. Jos se painaa, teemme väritarkistuksen. Jos ei, näytöllä näkyy "ei väriä" -ilmoitus. Kun painiketta painetaan, sytytetään automaattisesti punaiset, vihreät ja siniset valot yksitellen ja tallennetaan värien heijastusmäärä kolmeen muuttujaan. Seuraavaksi vertailimme näitä arvoja ja valitsimme enimmäisarvon värin näytettäväksi lähtövärinä.

Liitä siis mikro -USB -kaapeli Magicbitiin ja valitse kortin tyyppi ja com -portit oikein. Lataa nyt koodi. Sitten on aika testata anturimme. Testaa tämä pitämällä punaista, vihreää tai sinistä pintapaperia tai arkkia LDR- ja RGB -moduulin päällä ja painamalla vasenta painiketta. Sitten OLED -näyttö näyttää pinnan värin. Jos tämä on väärin, syy on joidenkin värien voimakas valovoima. Esimerkkinä jokaisella vihreällä pinnalla lähtö on punainen, joten sinun on vähennettävä punaisen valon kirkkautta jostakin määrästä. Koska punaisella valolla on tällöin erittäin suuri kirkkaus. Joten sillä on korkea heijastus. Jos et tiedä kuinka hallita kirkkautta, katso opetusohjelma alla olevasta linkistä.

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

Tästä linkistä löydät kuinka hallita kyseistä RGB -moduulia Magicbitista. Löydät myös kuinka työskennellä LDR: n ja painikkeen kanssa Magicbitin avulla. Lue asiakirja ja opi lisää värianturin parantamisesta. Koska tämä on hyvin yksinkertainen esimerkki värianturien toiminnasta. Useimmat värianturit toimivat tällä tavalla. Yritä siis parantaa tätä poistamalla ympäristön valomelu ja muut äänet.

Vaihe 5: Arduino -värianturin koodi

#sisältää

#define LED_PIN 33

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #Sisällytä #Sisällytä #Sisällytä #Määritä OLED_RESET 4 Adafruit_SSD1306 -näyttö (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 (painike, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); viive (1000); display.clearDisplay (); Sarja.alku (9600); } void loop () {if (digitalRead (Button) == 0) {// jos painiketta painetaan LED.setPixelColor (0, LED. Color (0, 50, 0)); // punainen väri LED.show (); viive (100); R_arvo = analoginenLue (LDR); // hanki punainen kiinnitys LED.setPixelColor (0, LED. Väri (150, 0, 0)); // vihreänvärisellä LED.show (); viive (100); G_value = analoginenLue (LDR); // hanki vihreä kiinnitys LED.setPixelColor (0, LED. Color (0, 0, 255)); // on bluecolour LED.show (); viive (100); B_arvo = analoginenLue (LDR); // hanki sininen kiinnitys, jos (R_arvo> G_arvo && R_value> B_value) {// punainen heijastuu eniten Näyttö ("PUNAINEN", 3); } else if (G_value> R_value && G_value> B_value) {// vihreä heijastuu eniten Näyttö ("VIHREÄ", 3); } else if (B_value> R_value && B_value> G_value) {// sininen heijastuu eniten Näyttö ("SININEN", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("VIHREÄ ="); Serial.print (G_value); Serial.print ("SININEN ="); Sarja.println (B_arvo); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // pois RGB LED.show (); Näyttö ("NO COLOR", 2); }} mitätön näyttö (merkkijono yhteinen, sisäkoko) {// näytön tietojen näyttö.clearDisplay (); display.setTextSize (koko); // Normaali 1: 1 pikseliasteikko display.setTextColor (WHITE); // Piirrä valkoinen tekstinäyttö.setCursor (0, 20); // Aloita näytön vasemmasta yläkulmasta.println (commond); display.display (); }