Sadržaj:

Jednostavan DIY senzor boja od Magicbita: 5 koraka
Jednostavan DIY senzor boja od Magicbita: 5 koraka

Video: Jednostavan DIY senzor boja od Magicbita: 5 koraka

Video: Jednostavan DIY senzor boja od Magicbita: 5 koraka
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Prosinac
Anonim
Image
Image

U ovom ćemo vodiču naučiti kako napraviti jednostavan senzor u boji pomoću Magicbita s Arduinom.

Pribor

  • Magicbit
  • USB-A do mikro-USB kabel

Korak 1: Priča

Postavljanje hardvera
Postavljanje hardvera

Bok dečki, ponekad morate koristiti senzore za boje u neke svrhe. No, možda ne znate kako oni funkcioniraju. Dakle, u ovom ćete vodiču naučiti o tome kako napraviti jednostavan DIY senzor boje pomoću Magicbita s Arduinom. Počnimo.

Korak 2: Teorija i metodologija

U ovom projektu očekujemo da ćete vas naučiti izgraditi senzor boja koji može detektirati crvenu, zelenu i plavu boju. Ovo je vrlo osnovni primjer. Pa kako to učiniti. U tu svrhu koristimo RGB modul Magicbita i ugrađeni LDR. Prije svega morate naučiti nešto o teoriji. To je otprilike količina refleksije svjetlosti. Sada postavljam pitanje od vas. Koje obojene površine najviše reflektiraju svjetlo crvene boje? Također koje površine uglavnom reflektiraju zeleno i plavo svjetlo. Razmisli malo. Ali odgovor je jednostavan. Površina crvene boje uglavnom reflektira svjetlost crvene boje. Zelene i plave površine također će odražavati zelena i plava svjetla. Dakle, u ovom projektu koristimo tu teoriju. Za prepoznavanje boje emitiramo jedno po jedno crveno, zeleno i plavo svjetlo. Svaki put mjerimo količinu refleksije pomoću LDR vrijednosti. Ako neko svjetlo daje najviše refleksije od druga dva svjetla, tada bi ta površina trebala biti uglavnom reflektirana obojena površina.

Korak 3: Postavljanje hardvera

Ovo vrlo jednostavno. Uključite svoj RGB modul u gornji desni port Magicbita. Ovaj modul ima LED diodu WS2812B Neopixel. Ova LED dioda ima 4 pina. Dva za napajanje i dva za ulaz i izlaz podataka. Budući da koristimo jedan led, potrebni su nam samo pinovi za napajanje i podaci u pin -u. Ako nemate taj modul, možete kupiti i Neopixel modul. Ako ste kupili takvu vrstu modula, morate povezati pinove za napajanje i podatke u pinu na Magicbit. To je vrlo jednostavno. Spojite VCC i GND Magicbita na pinove za napajanje RGB modula i pin D33 na pin za podatke.

Korak 4: Postavljanje softvera

Najveći dio radi programiranje. Za programiranje našeg Magicbita koristimo Arduino IDE. U kodu koristimo nekoliko knjižnica. Oni su Adafruit Neopixel knjižnica za upravljanje Neopixel LED i Adafruit OLED biblioteka za OLED ručku. U postavkama konfiguriramo naše ulaze i izlaze. Također konfigurirajte ugrađeni OLED zaslon na Magicbitu. U petlji provjeravamo je li lijevi pritisni gumb pritisnut ili nije na Magicbitu. Ako se pritisne, ulazni signal je 0. Budući da je ploča već povučena prema gore. Ako je pritisnuto, radimo provjeru boje. Ako nije, zaslon će prikazati izraz "bez boje". Kada se pritisne gumb, automatski uključuje jedno po jedno crveno, zeleno i plavo svjetlo i pohranjuje količinu refleksije boja u tri varijable. Zatim smo usporedili te vrijednosti i odabrali boju maksimalne vrijednosti za prikaz kao izlaznu boju.

Zato spojite mikro USB kabel na Magicbit i ispravno odaberite vrstu ploče i priključke za com. Sada učitajte kôd. Tada je vrijeme da testiramo naš senzor. Da biste to provjerili, držite crveni, zeleni ili plavi papir ili gornji dio lista na modulu LDR i RGB i pritisnite lijevu tipku. Tada će OLED zaslon pokazati koje je boje površina. Ako je to pogrešno, razlog je što neke boje imaju visok intenzitet svjetla. Kao primjer na svakoj zelenoj površini izlaz je crven, tada morate smanjiti jačinu svjetla crvenog svjetla s neke količine. Budući da crveno svjetlo u tom slučaju ima jako veliku svjetlinu. Tako da imaju visoku refleksiju. Ako ne znate kako kontrolirati svjetlinu, pogledajte vodič u donjoj vezi.

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

Na ovoj poveznici možete pronaći kako kontrolirati taj RGB modul iz Magicbita. Također ćete pronaći način rada s LDR -om i pritiskom na gumb pomoću Magicbita. Pročitajte taj dokument i proučite dalje kako poboljšati senzor boje. Zato što je ovo vrlo osnovni primjer kako senzori u boji rade. Većina vrsta senzora u boji radi na ovaj način. Pokušajte to poboljšati uklanjanjem buke iz okoline i drugih zvukova.

Korak 5: Arduino kôd senzora boje

#uključi

#define LED_PIN 33

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 zaslon (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 (gumb, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); kašnjenje (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// ako je gumb pritisnut LED.setPixelColor (0, LED. Color (0, 50, 0)); // na LED crvenoj boji.show (); kašnjenje (100); R_value = analogRead (LDR); // nabavite LED montažu LED.setPixelColor (0, LED. Color (150, 0, 0)); // na LED zelenoj boji.show (); kašnjenje (100); G_value = analogRead (LDR); // dobiti zeleni nosač LED.setPixelColor (0, LED. Color (0, 0, 255)); // na plavoj boji LED.show (); kašnjenje (100); B_value = analogRead (LDR); // nabavite plavi nosač ako (R_value> G_value && R_value> B_value) {// crvena se najviše reflektira Display ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// zeleno se najviše reflektira Prikaz ("ZELENO", 3); } else if (B_value> R_value && B_value> G_value) {// plava se najviše reflektira Prikaz ("PLAVA", 3); } Serial.print ("CRVENO ="); Serijski.ispis (R_value); Serial.print ("ZELENO ="); Serijski.ispis (G_value); Serial.print ("PLAVO ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // isključeno RGB LED.show (); Zaslon ("NO COLOR", 2); }} void Display (String commond, int size) {// prikaz podataka display.clearDisplay (); display.setTextSize (veličina); // Normalni prikaz u mjerilu 1: 1 piksela.setTextColor (BIJELO); // Crtanje prikaza bijelog teksta.setCursor (0, 20); // Pokreni u gornjem lijevom kutu display.println (commond); display.display (); }

Preporučeni: