Turinys:
Video: Paprastas „pasidaryk pats“spalvų jutiklis iš „Magicbit“: 5 žingsniai
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šioje pamokoje sužinosime, kaip padaryti paprastą spalvų jutiklį naudojant „Magicbit“su „Arduino“.
Prekės
- „Magicbit“
- Kabelis nuo USB-A iki mikro-USB
1 žingsnis: istorija
Sveiki vaikinai, kartais jūs turite naudoti spalvų jutiklius tam tikriems tikslams. Bet galbūt jūs nežinote, kaip jie veikia. Taigi šioje pamokoje sužinosite, kaip padaryti paprastą „pasidaryk pats“spalvų jutiklį naudojant „Magicbit“su „Arduino“. Pradėkime.
2 žingsnis: teorija ir metodika
Šiame projekte mes tikimės išmokyti jus sukurti spalvų jutiklį, kuris galėtų aptikti raudoną, žalią ir mėlyną spalvas. Tai labai elementarus pavyzdys. Taigi, kaip tai padaryti. Tam mes naudojame „Magicbit“RGB modulį ir įmontuotą LDR. Pirmiausia turite išmokti teorijos. Tai yra apie šviesos atspindžio kiekį. Dabar aš užduodu klausimą iš jūsų. Koks spalvotas paviršius labiausiai atspindi raudoną spalvą, taip pat kokie paviršiai dažniausiai atspindi žalią ir mėlyną šviesas. Truputį pagalvok. Bet atsakymas paprastas. Raudonas paviršius dažniausiai atspindi raudoną šviesą. Taip pat žali ir mėlyni paviršiai atspindės žalią ir mėlyną šviesą. Taigi šiame projekte mes naudojame tą teoriją. Norėdami atpažinti spalvą, mes skleidžiame raudoną, žalią ir mėlyną šviesas po vieną. Kiekvieną kartą, kai matuojame atspindžio kiekį, naudodami LDR vertę. Jei tam tikra šviesa atspindi daugiausiai nei kitos dvi lemputės, tada tas paviršius turėtų būti daugiausia atspindėtas spalvotas paviršius.
3 žingsnis: Aparatūros sąranka
Tai labai paprasta. Prijunkite RGB modulį prie „Magicbit“viršutinio dešiniojo prievado. Šis modulis turi WS2812B Neopixel LED. Šis šviesos diodas turi 4 kaiščius. Du maitinimo šaltiniams ir du duomenims įeiti ir išvesti. Kadangi mes naudojame vieną šviesos diodą, mums reikia tik maitinimo kaiščių ir duomenų kaiščiu. Jei neturite to modulio, galite nusipirkti „Neopixel“modulį. Jei nusipirkote tokio tipo modulį, prie „Magicbit“turite prijungti maitinimo kaiščius ir duomenis smeigtuku. Tai labai lengva. Prijunkite „Magicbit“VCC ir GND prie RGB modulio maitinimo kaiščių ir D33 kaiščio prie duomenų kaiščio.
4 žingsnis: programinės įrangos sąranka
Didžiąją dalį atlieka programavimas. „Magicbit“programavimui naudojame „Arduino IDE“. Kode naudojame kelias bibliotekas. Jie yra „Adafruit Neopixel“biblioteka, skirta valdyti „Neopixel LED“, ir „Adafruit OLED“biblioteka, skirta rankenoms OLED. Sąrankoje mes konfigūruojame savo įėjimus ir išėjimus. Taip pat sukonfigūruokite integruotą OLED ekraną „Magicbit“. Cikle mes patikriname, ar kairysis mygtukas yra paspaustas, ar ne „Magicbit“. Jei jis buvo paspaustas, įvesties signalas yra 0. Kadangi jį jau ištraukė plokštė. Jei jis paspaudžiamas, mes tikriname spalvas. Jei ne, ekrane bus rodomas teiginys „be spalvų“. Kai paspaudžiamas mygtukas, automatiškai įjungiamos raudonos, žalios ir mėlynos lemputės po vieną ir išsaugomas spalvų atspindžio kiekis trijuose kintamuosiuose. Toliau mes palyginome šias vertes ir pasirinkome didžiausios vertės spalvą, kuri bus rodoma kaip išvesties spalva.
Taigi prijunkite mikro USB kabelį prie „Magicbit“ir teisingai pasirinkite plokštės tipą ir „com“prievadus. Dabar įkelkite kodą. Tada atėjo laikas išbandyti mūsų jutiklį. Norėdami tai patikrinti, laikykite raudoną, žalią arba mėlyną paviršių LDR ir RGB modulio popieriaus lapo viršuje ir paspauskite kairįjį mygtuką. Tada OLED ekranas parodys, kokia yra paviršiaus spalva. Jei tai neteisinga, priežastis yra tam tikros spalvos šviesos intensyvumas. Kaip pavyzdys kiekviename žaliame paviršiuje išvestis yra raudona, tada jūs turite sumažinti raudonos šviesos ryškumą nuo tam tikro kiekio. Kadangi raudona šviesa tokiu atveju turi labai didelį ryškumą. Taigi jis turi didelį atspindį. Jei nežinote, kaip valdyti ryškumą, skaitykite pamoką žemiau esančioje nuorodoje.
magicbit-arduino.readthedocs.io/en/latest/
Šioje nuorodoje rasite, kaip valdyti tą RGB modulį iš „Magicbit“. Taip pat galite sužinoti, kaip dirbti su LDR ir paspausti mygtuką naudojant „Magicbit“. Perskaitykite šį dokumentą ir toliau studijuokite, kaip patobulinti spalvų jutiklį. Kadangi tai yra labai paprastas pavyzdys, kaip veikia spalvų jutikliai. Dauguma spalvų jutiklių tipų veikia taip. Taigi pabandykite tai pagerinti pašalindami aplinkos šviesos triukšmą ir kitus triukšmus.
5 žingsnis: „Arduino“spalvų jutiklio kodas
#įtraukti
#define LED_PIN 33
#define LED_COUNT 1 „Adafruit_NeoPixel“šviesos diodas (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 „Adafruit_SSD1306“ekranas (128, 64); #define LDR 36 #define Button 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.šou (); pinMode (LDR, INPUT); pinMode (mygtukas, Įvestis); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); vėlavimas (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// jei paspaudžiamas mygtukas LED.setPixelColor (0, LED. Color (0, 50, 0)); // ant raudonos spalvos LED.show (); vėlavimas (100); R_value = analogRead (LDR); // gauti raudoną montavimą LED.setPixelColor (0, LED. Color (150, 0, 0)); // ant žalios spalvos LED.show (); vėlavimas (100); G_value = analogRead (LDR); // gauti žalią kalną LED.setPixelColor (0, LED. Color (0, 0, 255)); // ant mėlynos spalvos LED.show (); vėlavimas (100); B_value = analogRead (LDR); // gauti mėlyną laikiklį, jei (R_value> G_value && R_value> B_value) {// raudona spalva labiausiai atsispindi Vaizdas ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// žalia spalva labiausiai atsispindi Vaizdas ("GREEN", 3); } else if (B_value> R_value && B_value> G_value) {// mėlyna spalva labiausiai atsispindi Vaizdas ("BLUE", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("GREEN ="); Serial.print (G_value); Serial.print ("BLUE ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // išjungtas RGB LED.show (); Ekranas („NO COLOR“, 2); }} void Display (String commond, int size) {// display data display.clearDisplay (); display.setTextSize (dydis); // Įprastas 1: 1 pikselių skalės ekranas.setTextColor (BALTA); // Piešti balto teksto ekraną.setCursor (0, 20); // Pradėti nuo ekrano viršutiniame kairiajame kampe.println (commond); display.display (); }