Kazalo:

Preprost DIY barvni senzor znamke Magicbit: 5 korakov
Preprost DIY barvni senzor znamke Magicbit: 5 korakov

Video: Preprost DIY barvni senzor znamke Magicbit: 5 korakov

Video: Preprost DIY barvni senzor znamke Magicbit: 5 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Image
Image

V tej vadnici se bomo naučili, kako narediti preprost barvni senzor z uporabo Magicbita z Arduinom.

Zaloge

  • Magicbit
  • Kabel USB-A do Micro-USB

1. korak: Zgodba

Namestitev strojne opreme
Namestitev strojne opreme

Pozdravljeni, včasih morate uporabiti barvne senzorje za nekatere namene. Morda pa ne veste, kako delujejo. V tej vadnici se boste naučili, kako narediti preprost barvni senzor DIY z uporabo Magicbita z Arduinom. Začnimo.

2. korak: teorija in metodologija

Pričakujemo, da vas bomo v tem projektu naučili izdelati barvni senzor, ki zazna rdeče, zelene in modre barve. To je zelo osnovni primer. Torej, kako to storiti. V ta namen uporabljamo RGB modul Magicbit in vgrajen LDR. Najprej se morate naučiti nekaj teorije. To je približno količina odboja svetlobe. Zdaj postavljam vprašanje od vas. Kakšne barvne površine najbolj odražajo svetlobo rdeče barve in katere površine večinoma odsevajo zeleno in modro svetlobo. Pomisli malo. Toda odgovor je preprost. Rdeče obarvane površine večinoma odbijajo svetlobo rdeče barve. Tudi zelene in modre površine bodo odražale zelene in modre luči. Zato v tem projektu uporabljamo to teorijo. Za prepoznavanje barve eno za drugo oddajamo rdeče, zelene in modre luči. Vsakič, ko merimo količino odboja z uporabo vrednosti LDR. Če bo nekaj svetlobe dalo največ odboja kot drugi dve luči, potem mora biti ta površina večinoma odsevana barvna površina.

3. korak: Namestitev strojne opreme

To zelo preprosto. Priključite modul RGB v zgornja desna vrata Magicbita. Ta modul ima LED diodo WS2812B Neopixel. Ta LED ima 4 zatiči. Dva za napajanje in dva za vhod in izhod podatkov. Ker uporabljamo en vodnik, potrebujemo le napajalne zatiče in podatke v pin. Če tega modula nimate, lahko kupite modul Neopixel. Če ste kupili takšen modul, morate priključke za napajanje in podatke v pin priključiti na Magicbit. To je zelo enostavno. Priključite VCC in GND Magicbita na napajalne nožice modula RGB in pin D33 na podatkovni pin.

4. korak: Namestitev programske opreme

Večino dela opravi programiranje. Za programiranje našega Magicbita uporabljamo Arduino IDE. V kodi uporabljamo nekaj knjižnic. So knjižnica Adafruit Neopixel za nadzor Neopixel LED in knjižnica Adafruit OLED za ročaj OLED. V nastavitvah konfiguriramo naše vhode in izhode. Konfigurirajte tudi vgrajen zaslon OLED na Magicbitu. V zanki preverimo, ali je levi potisni gumb pritisnjen ali ne na Magicbitu. Če pritisnete, je vhodni signal 0. Ker ga plošča že potegne navzgor. Če pritisnete, naredimo preverjanje barve. V nasprotnem primeru se na zaslonu prikaže izjava "brez barve". Ko pritisnete gumb, samodejno vklopite eno za drugo rdečo, zeleno in modro luč in shranite količino odboja barv v tri spremenljivke. Nato smo te vrednosti primerjali in izbrali barvo največje vrednosti, ki bo prikazana kot izhodna barva.

Zato priključite kabel mikro USB na Magicbit in pravilno izberite vrsto plošče in vrata COM. Zdaj naložite kodo. Potem je čas, da preizkusimo naš senzor. Če želite to preveriti, držite papir ali list listov z rdečo, zeleno ali modro površino na modulih LDR in RGB in pritisnite levi gumb. Potem bo OLED zaslon pokazal, kakšne je barve površine. Če je to narobe, je razlog v tem, da imajo nekatere barve visoko jakost svetlobe. Kot primer na vsaki zeleni površini je izhod rdeč, potem morate zmanjšati svetlost rdeče svetlobe za določeno količino. Ker ima rdeča luč v tem primeru zelo visoko svetlost. Zato imajo velik odsev. Če ne veste, kako nadzorovati svetlost, si oglejte vadnico na spodnji povezavi.

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

Na tej povezavi najdete navodila za upravljanje tega RGB modula iz Magicbita. Prav tako lahko ugotovite, kako delati z LDR in pritisniti gumb z uporabo Magicbita. Preberite ta dokument in preučite, kako izboljšati barvno tipalo. Ker je to zelo osnovni primer delovanja barvnih senzorjev. Večina barvnih senzorjev deluje na ta način. Poskusite to izboljšati z odstranitvijo hrupa svetlobe v okolici in drugih hrupov.

5. korak: Arduino koda barvnega senzorja

#vključ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 zaslon 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 (gumb, VHOD); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); zamuda (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// če je pritisnjen gumb LED.setPixelColor (0, LED. Color (0, 50, 0)); // na rdeči barvi LED.show (); zamuda (100); R_value = analogRead (LDR); // dobim rdeči nosilec LED.setPixelColor (0, LED. Color (150, 0, 0)); // na zelenobarvni LED.show (); zamuda (100); G_value = analogRead (LDR); // dobimo zeleni nosilec LED.setPixelColor (0, LED. Color (0, 0, 255)); // na modri barvi LED.show (); zamuda (100); B_value = analogRead (LDR); // dobimo modri nosilec, če (R_value> G_value && R_value> B_value) {// rdeča se najbolj odraža na zaslonu ("RDEČA", 3); } else if (G_value> R_value && G_value> B_value) {// zelena se najbolj odraža Prikaz ("ZELENO", 3); } drugače, če (B_value> R_value && B_value> G_value) {// modra se najbolj odraža Display ("BLUE", 3); } Serial.print ("RDEČA ="); Serial.print (R_value); Serial.print ("ZELENO"); Serial.print (G_value); Serial.print ("BLUE ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // izklop RGB LED.show (); Zaslon ("NO COLOR", 2); }} void Display (String commond, int size) {// prikaz podatkov display.clearDisplay (); display.setTextSize (velikost); // Običajen prikaz v merilu 1: 1 slikovnih pik.setTextColor (BELO); // Nariši prikaz belega besedila.setCursor (0, 20); // Začni v zgornjem levem kotu display.println (commond); display.display (); }

Priporočena: