INHOUDSOPGAWE:

Eenvoudige DIY kleursensor van Magicbit: 5 stappe
Eenvoudige DIY kleursensor van Magicbit: 5 stappe

Video: Eenvoudige DIY kleursensor van Magicbit: 5 stappe

Video: Eenvoudige DIY kleursensor van Magicbit: 5 stappe
Video: КЛАССНАЯ и ПРОСТАЯ ИДЕЯ из профильной трубы! 2024, November
Anonim
Image
Image

In hierdie handleiding leer ons hoe u 'n eenvoudige kleursensor kan maak met Magicbit met Arduino.

Voorrade

  • Magicbit
  • USB-A na mikro-USB-kabel

Stap 1: Verhaal

Hardeware -opstelling
Hardeware -opstelling

Hallo ouens, soms moet jy vir sommige doeleindes kleursensors gebruik. Maar miskien weet u nie hoe dit werk nie. In hierdie tutoriaal leer u hoe u 'n eenvoudige DIY kleursensor kan maak met Magicbit met Arduino. Laat ons begin.

Stap 2: Teorie en metodiek

In hierdie projek verwag ons om u te leer om 'n kleursensor te bou wat rooi, groen en blou kleure kan opspoor. Dit is 'n baie basiese voorbeeld. So hoe om dit te doen. Vir hierdie doel gebruik ons die RGB -module van die Magicbit en ingeboude LDR. Eerstens moet u leer oor 'n paar teorieë. Dit gaan oor die hoeveelheid ligweerkaatsing. Nou vra ek vir jou 'n vraag. Watter gekleurde oppervlak weerspieël die meeste rooi lig, en watter oppervlaktes weerspieël meestal groen en blou ligte? Dink bietjie. Maar die antwoord is eenvoudig. Die rooi gekleurde oppervlak weerspieël meestal rooi kleurlig. Groen en blou oppervlaktes weerspieël ook groen en blou ligte. In hierdie projek gebruik ons dus die teorie. Om kleur te herken, gee ons een vir een rooi, groen en blou ligte uit. Elke keer meet ons die weerkaatsingshoeveelheid met behulp van LDR -waarde. As sommige lig die meeste weerkaatsing gee as die ander twee ligte, moet die oppervlak meestal gekleurde oppervlak weerspieël word.

Stap 3: hardeware -opstelling

Dit is baie eenvoudig. Koppel u RGB -module aan die boonste regterpoort van Magicbit. Hierdie module het WS2812B Neopixel LED. Hierdie LED het 4 penne. Twee vir krag en twee vir data in en uit. Omdat ons een led gebruik, benodig ons slegs kragpenne en data in die pen. As u nie die module het nie, kan u 'n Neopixel -module koop. As u die soort module gekoop het, moet u kragpenne en data in pin aan Magicbit koppel. Dit is baie maklik. Koppel VCC en GND van die Magicbit aan die kragpenne van die RGB -module en die D33 -pen aan die datapen.

Stap 4: sagteware -opstelling

Die grootste deel word gedoen deur die programmering. Ons gebruik Arduino IDE om ons Magicbit te programmeer. In die kode gebruik ons 'n paar biblioteke. Dit is die Adafruit Neopixel -biblioteek vir die beheer van Neopixel LED en die Adafruit OLED -biblioteek vir die hanteer van OLED. In die opstelling stel ons ons insette en uitsette op. Stel ook die ingeboude OLED -skerm op Magicbit op. In die lus kyk ons of die drukknop aan die linkerkant ingedruk is of nie van die Magicbit nie. As dit ingedruk word, is die insetsein 0. Omdat dit reeds deur die bord getrek word. As dit ingedruk word, doen ons kleurkontrole. Indien nie, sal die skerm 'geen kleur' gee nie. As u op die knoppie druk, skakel dan outomaties rooi, groen en blou ligte een vir een aan en stoor die weerkaatsingshoeveelheid van die kleure in drie veranderlikes. Vervolgens vergelyk ons die waardes en kies die maksimum kleur wat as die uitvoerkleur vertoon moet word.

Koppel dus 'n mikro -USB -kabel aan Magicbit en kies die tipe bord en com -poorte korrek. Laai nou die kode op. Dan is dit tyd om ons sensor te toets. Om dit te toets, hou papier of velblad met rooi, groen of blou oppervlak op die LDR- en RGB -module en druk die linker drukknop. Dan sal die OLED -skerm die kleur van die oppervlak wys. As dit verkeerd is, is die kleur 'n hoë ligintensiteit. As 'n voorbeeld op elke groen oppervlak is die uitset rooi, dan moet u die helderheid van rooi ligte verminder. Omdat die rooi lig in hierdie geval baie hoë helderheid het. Dit het dus 'n hoë weerkaatsing. As u nie weet hoe om die helderheid te beheer nie, raadpleeg dan die onderrig in die onderstaande skakel.

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

In hierdie skakel kan u sien hoe u die RGB -module van Magicbit kan beheer. En u kan ook uitvind hoe u met LDR werk en op die drukknop met Magicbit. Lees die dokument en bestudeer verder hoe u kleursensor kan verbeter. Omdat dit 'n baie basiese voorbeeld is van hoe kleursensors werk. Die meeste kleursensors werk op hierdie manier. Probeer dit dus verbeter deur die geraas van omringende lig en ander geluide te verwyder.

Stap 5: Arduino -kleursensorkode

#insluit

#definieer 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 -skerm (128, 64); #define LDR 36 #define Button 35 int R_waarde, G_waarde, B_waarde; ongeldige opstelling () {LED.begin (); LED.show (); pinMode (LDR, INVOER); pinMode (knoppie, INVOER); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); vertoon.display (); vertraging (1000); display.clearDisplay (); Serial.begin (9600); } void lus () {if (digitalRead (Button) == 0) {// as knoppie ingedruk word LED.setPixelColor (0, LED. Color (0, 50, 0)); // op rooi kleur LED.show (); vertraging (100); R_waarde = analogRead (LDR); // kry rooi monteer LED.setPixelColor (0, LED. Color (150, 0, 0)); // op groenkleur LED.show (); vertraging (100); G_value = analogRead (LDR); // kry green mount LED.setPixelColor (0, LED. Color (0, 0, 255)); // op bloukleurige LED.show (); vertraging (100); B_waarde = analogRead (LDR); // kry blou berg as (R_waarde> G_waarde && R_waarde> B_waarde) {// rooi die meeste weerspieël word ("ROOI", 3); } anders as (G_waarde> R_waarde && G_waarde> B_waarde) {// groen die meeste weerspieël word Display ("GROEN", 3); } anders as (B_waarde> R_waarde && B_waarde> G_waarde) {// blou die meeste weerspieël is Display ("BLUE", 3); } Serial.print ("ROOI ="); Serial.print (R_waarde); Serial.print ("GROEN ="); Serial.print (G_waarde); Serial.print ("BLOU ="); Serial.println (B_waarde); } anders {LED.setPixelColor (0, LED. Color (0, 0, 0)); // af RGB LED.show (); Vertoon ("GEEN KLEUR", 2); }} leegte vertoon (String commond, int grootte) {// vertoon data display.clearDisplay (); display.setTextSize (grootte); // Normale 1: 1 pixel skaal display.setTextColor (WIT); // Teken wit teks display.setCursor (0, 20); // Begin in die linker boonste hoek display.println (commond); vertoon.display (); }

Aanbeveel: