Obsah:
- Krok 1: Požiadavky
- Krok 2: Pochopenie hardvéru a softvéru
- Krok 3: Inštalácia komponentov
- Krok 4: Kódovanie
Video: Zmena farby nočného svetla pomocou Ardruino 101: 4 kroky (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
V tomto projekte budete vyrábať nočnú lampu pomocou ardruina, Adafruit neo rgb Strips a 3D tlačiarne.
Všimnite si toho, že táto nezničiteľná je čisto pre môj školský projekt. Kód pre tento projekt je založený na inom projekte. Tým som povedal, že nie som odborník na Ardruino.
Krok 1: Požiadavky
Na tento projekt budete potrebovať nasledujúci hardvér a nástroje
Hardvér:
1 - Ardruino101 (v USA) alebo Genuino101 (mimo USA).
2 - LED pásy NeoPixel RGB z adafruitu (5 voltov).
3 - USB konektor ardruino (konektor typu B až A).
4 - Software od Ardruino, Ardruino IDE V tomto návode budeme používať verziu 1.8.5. Požiadavky na softvérovú knižnicu sú: 101, Adafruit NeoPixel a Madgwick.
5 -A objekt na uloženie vášho hardvéru. V tomto prípade budem používať 3D tlačiareň. Súbor pre túto 3D tlač sa nachádza v popisoch s názvom „Lamp Head“. Tento formát súboru nie je pripravený na 3D tlač. V závislosti od vašich 3D tlačiarní musíte na 3D objekte najskôr spustiť určený softvér pre 3D tlač. Niekedy sa mierka 3D tlače resetuje. uistite sa teda, že priemer je nastavený na 11 cm x 11 cm.
6 - Základná spájkovacia súprava.
Krok 2: Pochopenie hardvéru a softvéru
Ardruin/Genuino101
Len na objasnenie, Ardruino101 a genuino101 sú vedľa názvov úplne rovnaké. Oba majú rovnaké špecifikácie a používajú rovnaký softvér.
Ardruino101 má základné špecifikácie ako ardruino UNO a ďalšie. Hlavnou črtou ardruino101 je akcelerometer a gyroskop, ktoré v našom projekte použijeme. Aj tento typ ardruina má jedinečnú knižnicu kódov s názvom CurrieIMU (interné merné jednotky), ktorá je súčasťou rozšírenia knižnice 101.
Potom sa porozprávajte o softvéri.
Softvér a knižnice
Ardruino IDE používa ako hlavný zdrojový kód python. je to tiež hlavný kód platvorm, kde beží väčšina ardruino. Na internete je veľa návodov, ako používať tento softvér, a preto vám odporúčam najskôr si ich najskôr preštudovať, ak ste v tomto programe nový.
To znamená, že knižnice, ktoré používame, sú nasledujúce:
V ponuke Náčrt> Zahrnúť knižnicu> Spravovať knižnice … Do textového poľa zadajte
- 101 Štandardne ardruino 101 nie je automaticky zahrnuté do ardruino IDE. Toto rozšírenie knižnice potrebujeme na kódovanie nášho typu ardruino.
-Adafruit NeoPixel za účelom kódovania našich pixelových prúžkov Neo.
-Madgwick Aby bolo možné načítať nespracované údaje a vypočítať tieto údaje na surové, rozstupové a valcovacie.
Žiadne pásy RGB
Budem používať typ 5 alebo 5 V. S týmto 5v nepotrebujem rozšírený zdroj energie na ovládanie svojich pásikov. Namiesto toho budem používať ardruino ako zdroj energie na ovládanie a osvetlenie pásov.
Tu je niekoľko tipov, ktoré potrebujete vedieť, než s týmito pásikmi začnete.
Najprv budete potrebovať Neodigital RGB LED pásy z adafruit. Tento druh prúžkov je možné kotrolovať pomocou kódov. Ďalej musíte vedieť, že na týchto pásoch je zadná strana a predná strana. Táto zadná a predná strana je dôležitá pre spájkovanie. Uistite sa, že prednú stranu, na ktorú smeruje kláves so šípkou, spájkujete smerom od hrotu.
Tu je návod, ako ich používať.
Existujú 3 spájkovacie body, ktoré musíte mať na pamäti uzemnenie (GND), napätie (V) a kolíkové pripojenie (DIN).
Krok 3: Inštalácia komponentov
Najprv budete musieť 3D tlačiť komponent, ktorý nájdete v požiadavkách. V tomto prípade budem používať PLA. Uistite sa, že priemer spoločného predmetu je 11 cm x 11 cm. Tým sa zaistí, že ardruino a pásy zapadnú do shpere. Každá 3D tlačiareň používa na výpočet svojho tlačového postupu iný softvér. V dôsledku toho môže byť použitý súbor inak zmenšený, takže na to pamätajte.
Sekundu po tlači sa uistite, že sa súčiastky môžu zavrieť. 3D výtlačky spolu tvoria guľu. Mali by pekne sedieť. Ak má komponent stratiť, prilepte na vnútornú stranu pásku, aby bol uzáver naplnený. A ak je hrubý, použite brúsny papier.
Po tretie, skematichy pre ardruino a pásy sú pomerne jednoduché. Na pripojenie prúžkov k ardruinu budete používať 3 vodiče. Všimnite si, že jediné miesta, kde spájkujem, sú na pásoch. nie na samotnom Ardruine.
GND ide na GND
DIN ide na pin (v našom prípade pin6 na ardruino)
5V ide na 5V
Uistite sa, že množstvo LED pásikov, ktoré používate, je maximálne 30. Ďalej a už sa vám nepodarí správne vykonať kód. Nožnicovým znamienkom môžete jednoducho nastrihať akékoľvek nerovnomerné pásy.
Štvrté Evrything by malo pekne zapadnúť do sféry. Mohlo by sa vám páčiť, keby som urobil križovatku medzi 1 z 3D výtlačkov, aby som videl žľab a na vrch umiestnil plastový žľab.
Krok 4: Kódovanie
Teraz by ste teda už vo svojej knižnici mali mať všetky potrebné komponenty.
Tu je kód, ktorý budete potrebovať na spustenie projektu. Výsledok by mal vyzerať ako odkaz na video, ktorý posielam na túto stránku.
Zdroj tohto kódu nájdete tu. Tento projekt tiež obsahuje nekrokové kroky s cieľom lepšie porozumieť kódu a algaritmu za použitiami.
#include #include #include #include
#define PIN 6 // 11 pixelov NeoPixel Strip
#define PIN1 7 // 1 pixel NeoPixel Strip #define NUMPIXELS 30 // Počet píxelov #define SAMPLE_RATE 25 // Vzorkovacia frekvencia pre akcelerometer a gyroskop
// Konfigurácia Madgwick
Madgwickov filter; unsigned long microsPerReading, microsPrevious; float accelScale, gyroScale;
// Konfigurácia NeoPixel
Pixely Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixelsStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);
// Farebné priestory
RGBConverter rgbConverter; dvojité h = 1; dvojité s = 1; dvojnásobok v = 1; bajt rgb [3];
// Stavová pohybová lampa
// Stav 0 -> Vyberte odtieň -Rozstup // Stav 1 -> Vyberte sýtosť -Roll // Stav 2 -> Vyberte hodnotu -Stáčanie // Stav 3 -> Opravte prchavú farbu int statusLamp = 0;
neplatné nastavenie () {
Serial.begin (9600);
// spustenie IMU a filtrovanie
CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);
// Nastavte rozsah akcelerometra na 2G
CurieIMU.setAccelerometerRange (2); // Nastavte rozsah gyroskopu na 250 stupňov/s CurieIMU.setGyroRange (250);
CurieIMU.autoCalibrateAccelerometerOffset (X_AXIS, 0);
CurieIMU.autoCalibrateAccelerometerOffset (Y_AXIS, 0); CurieIMU.autoCalibrateAccelerometerOffset (Z_AXIS, 1); CurieIMU.autoCalibrateGyroOffset ();
CurieIMU.attachInterrupt (eventCallback);
CurieIMU.setDetectionThreshold (CURIE_IMU_TAP, 950); CurieIMU.interrupts (CURIE_IMU_TAP);
// inicializácia premenných na zrýchlenie aktualizácií na správnu rýchlosť
microsPerReading = 1000000 / SAMPLE_RATE; microsPrevious = micros ();
// Init NeoPixel 11
pixely.begin (); pixely.show ();
// Init NeoPixel 1
pixelyStatus.begin (); pixely.show ();
// Zobraziť stav v px
setStatusPixel (statusLamp); }
prázdna slučka () {
int aix, aiy, aiz; // akcelerometer int gix, giy, giz; float ax, ay, az; float gx, gy, gz; plavák, smola, vybočenie; statické bez znamienka dlhé mikroNow;
// skontrolujte, či je čas na čítanie údajov a aktualizáciu filtra
microsNow = micros (); if (microsNow - microsPrevious> = microsPerReading) {
// prečítajte surové údaje z CurieIMU
CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);
// prevod z nespracovaných údajov na gravitáciu a jednotky stupňov/sekundu
ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (giy); gz = convertRawGyro (giz);
// aktualizácia filtra, ktorý počíta orientáciu
filter.updateIMU (gx, gy, gz, ax, ay, az);
// vytlačte nadpis, výšku a rolku
roll = filter.getRoll (); rozteč = filter.getPitch (); zatáčanie = filter.getYaw ();
// zvýšenie predchádzajúceho času, takže držíme správne tempo
microsPrevious = microsPrevious + microsPerReading;
// Iba ak zmeníte odtieň, sýtosť alebo hodnotu
if (statusLamp zvoľte Hue if (pitch> = -90 && pitch <= 90 && statusLamp == 0) {// Uhol transformácie uhol rozstupu = rozteč + 90; // Získava farebné kordináty z uhlov h = rozstup / 180,0;}
// Obmedzenia uhlov
// iba hod -90 ° až 90 ° = 180 ° // Stav 1 -> zvoľte Saturation if (roll> = -90 && roll <= 90 && statusLamp == 1) {// Uhol transformácie roll = roll + 90; // Získava farebné kordináty z uhlov s = roll / 180,0; }
// Stav 2 -> vyberte hodnotu
if (statusLamp == 2) {// vybočenie 0º až 360º v = vybočenie / 360,0; }
// Previesť na rgb
rgbConverter.hsvToRgb (h, s, v, rgb); /* Serial.print ("Farba:"); Serial.print (h); Serial.print (" -"); Serial.print (s); Serial.print (" -"); Serial.print (v); Serial.println ("");
Serial.print ("Orientácia:");
Serial.print (vybočenie); Serial.print (""); Serial.print (rozstup); Serial.print (""); Serial.println (kotúč); */
// Zmena farby pixelov
pre (int px = 0; px <NUMPIXELS; px ++) {pixely.setPixelColor (px, pixely. Color (rgb [0], rgb [1], rgb [2])); pixely.show (); }}
// Zobraziť stav v px
setStatusPixel (statusLamp); }}
float convertRawAcceleration (int aRaw) {
// keďže používame rozsah 2G // -2g mapy na nespracovanú hodnotu -32768 // +2g mapy na nespracovanú hodnotu 32767
float a = (aRaw * 2,0) / 32768,0;
vrátiť a; }
float convertRawGyro (int gRaw) {
// pretože používame rozsah 250 stupňov/sekundu // -250 máp na nespracovanú hodnotu -32768 // +250 máp na nespracovanú hodnotu 32767
float g = (gRaw * 250,0) / 32768,0;
návrat g; }
static void eventCallback ()
{// Zistenie klepania vo všetkých osiach, ak (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ("Klepnutie zistilo statusLamp:"); Serial.println (statusLamp);
// Zmeniť stav
statusLamp ++;
// Počiatočný stav
if (statusLamp> 3) {statusLamp = 0; }}}
neplatné setStatusPixel (int statusPx)
{switch (statusPx) {case 0: pixelsStatus.setPixelColor (0, pixelsStatus. Color (150, 0, 0)); pixelyStatus.show (); prestávka; prípad 1: pixelyStatus.setPixelColor (0, pixelyStatus. Color (0, 150, 0)); pixelyStatus.show (); prestávka; prípad 2: pixelyStatus.setPixelColor (0, pixelyStatus. Color (0, 0, 150)); pixelyStatus.show (); prestávka; prípad 3: pixelyStatus.setPixelColor (0, pixelyStatus. Color (0, 0, 0)); pixelyStatus.show (); prestávka;
}
}
Odporúča:
Jednoduchá zmena farby LED „sviečky“: 5 krokov (s obrázkami)
Ľahká „sviečka“na zmenu farby LED: Jedná sa o jednoduché svetlo meniace farbu, ktoré je skvelé pre deti i dospelých. Vyzerá krásne v slabo osvetlenej miestnosti, ideálnej na prázdniny a vytvára celkom chladné nočné svetlo
Oprava a vylepšenie nočného svetla: 5 krokov (s obrázkami)
Oprava a vylepšenie nočného svetla: Ahoj všetci, dnes na liečebnej lavici máme túto malú nočnú lampu, ktorá patrí mojej dcére. Už to nefunguje, takže sa to pokúsime opraviť a tiež vylepšiť, pretože má strašné blikanie. Táto oprava sa zaoberá sieťovým napätím. Pri zlom zaobchádzaní
Ako vytvoriť jednoduchý automatický obvod nočného svetla pomocou LDR: 4 kroky
Ako vytvoriť jednoduchý automatický obvod nočného svetla pomocou LDR: Ahojte priatelia, dnes vám ukážem, ako vytvoriť jednoduchý automatický obvod nočného svetla pomocou LDR (odporu závislého na svetle) a mosfetu, takže postupujte podľa nasledujúcich krokov a v ďalších krokoch budete nájsť automatický diagram nočného osvetlenia a tiež
Vytvorte automatický obvod spínača nočného svetla pomocou Mosfetu: 6 krokov (s obrázkami)
Vytvorte automatický obvod spínača nočného svetla pomocou Mosfetu: AKO VYROBIŤ AUTOMATICKÝ NOCNÝ SPÍNAČ S MOSFETOM Dobrý deň, priatelia v tomto projekte ukážem jednoduchý schéma zapojenia, ako vytvoriť automatický naktívny spínač pomocou jedného mosfetu a niektorých malých komponentov, ktoré sa mi podarilo. záchrana zo
Prepnutie fotoaparátu do režimu „vojenského nočného videnia“, pridanie efektu nočného videnia alebo vytvorenie režimu „NightVision“na akejkoľvek kamere !!!: 3 kroky
Prepnutie fotoaparátu do režimu „vojenskej nočnej televízie“, pridanie efektu nočného videnia alebo vytvorenie režimu „NightVision“na akejkoľvek kamere !!!: *** Toto bolo zábavné v DIGITÁLNOM DNI FOTO SÚŤAŽI, Hlasujte za mňa ** *Ak potrebujete pomoc, pošlite e -mail na adresu: [email protected] Hovorím anglicky, francúzsky, japonsky, španielsky a ovládam niektoré ďalšie jazyky, ak