Sadržaj:

Jednostavan "uradi sam" senzor u boji od Magicbita: 5 koraka
Jednostavan "uradi sam" senzor u boji od Magicbita: 5 koraka

Video: Jednostavan "uradi sam" senzor u boji od Magicbita: 5 koraka

Video: Jednostavan
Video: Ремонт батареи ноутбука (замена аккумуляторов) 2024, Juli
Anonim
Image
Image

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

Supplies

  • Magicbit
  • USB-A na mikro-USB kabel

Korak 1: Priča

Postavljanje hardvera
Postavljanje hardvera

Zdravo momci, ponekad morate koristiti senzore za boje u neke svrhe. Ali možda ne znate kako oni funkcioniraju. Dakle, u ovom ćete vodiču naučiti o tome kako napraviti jednostavan DIY senzor boje koristeći Magicbit 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 reflektuje svjetlost crvene boje. Takođe, zelene i plave površine odražavat će zelena i plava svjetla. Dakle, u ovom projektu koristimo tu teoriju. Za prepoznavanje boje emitujemo 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 je 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 lako. 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 obavlja programiranje. Za programiranje našeg Magicbita koristimo Arduino IDE. U kodu koristimo nekoliko biblioteka. Oni su Adafruit Neopixel biblioteka za kontrolu Neopixel LED i Adafruit OLED biblioteka za OLED ručicu. U postavkama konfiguriramo naše ulaze i izlaze. Također konfigurirajte ugrađeni OLED ekran na Magicbitu. U petlji proveravamo da li je pritisnuto levo dugme na Magicbitu. Ako se pritisne, ulazni signal je 0. Budući da ga je ploča već podigla. Ako je pritisnuto, radimo provjeru boje. U suprotnom će se na ekranu prikazati izraz "bez boje". Kada se pritisne dugme, 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 com portove. 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 LDR i RGB modulu i pritisnite lijevo dugme. Zatim će OLED ekran pokazati koje je boje površina. Ako je to pogrešno, razlog je što neke boje imaju visok intenzitet svjetla. Na primjer, na svakoj zelenoj površini izlaz je crven, tada morate smanjiti jačinu svjetla crvenog svjetla s neke količine. Zato što crveno svjetlo u tom slučaju ima jako visoku svjetlinu. Tako da imaju visoku refleksiju. Ako ne znate kako kontrolirati svjetlinu, pogledajte vodič na donjoj vezi.

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

Na ovoj vezi 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 ambijentalnog svjetla i drugih zvukova.

Korak 5: Arduino kôd senzora boje

#include

#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 ekran (128, 64); #define LDR 36 #define dugme 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (dugme, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); kašnjenje (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// ako je dugme pritisnuto LED.setPixelColor (0, LED. Color (0, 50, 0)); // na redcolour LED.show (); kašnjenje (100); R_value = analogRead (LDR); // dobijemo LED.setPixelColor (0, LED. Color (150, 0, 0)) za montiranje u crvenom položaju; // na LED zelenoj boji.show (); kašnjenje (100); G_value = analogRead (LDR); // dobiti zeleni nosač LED.setPixelColor (0, LED. Color (0, 0, 255)); // na bluecolour LED.show (); kašnjenje (100); B_value = analogRead (LDR); // nabavite plavo montiranje ako (R_value> G_value && R_value> B_value) {// crveno se najviše reflektuje Display ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// zeleno se najviše reflektuje Prikaz ("ZELENO", 3); } else if (B_value> R_value && B_value> G_value) {// plava se najviše reflektuje Display ("BLUE", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("ZELENO"); Serial.print (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 veličina) {// prikaz podataka display.clearDisplay (); display.setTextSize (veličina); // Normalni prikaz u mjerilu 1: 1 piksela.setTextColor (BIJELO); // Nacrtaj bijeli tekst display.setCursor (0, 20); // Pokreni u gornjem lijevom kutu display.println (commond); display.display (); }

Preporučuje se: