Obsah:
- Krok 1: Požadavky
- Krok 2: Porozumění hardwaru a softwaru
- Krok 3: Nastavení komponent
- Krok 4: Kódování
Video: Změna barvy nočního světla pomocí Ardruino 101: 4 kroky (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
V tomto projektu budete vyrábět noční lampu pomocí ardruina, Adafruit neo rgb Strips a 3D tiskárny.
Všimněte si, že tato nestrukturovatelná je čistě pro můj školní projekt. Kód pro tento projekt vychází z jiného projektu. Tím jsem řekl, že nejsem odborník, pokud jde o Ardruino.
Krok 1: Požadavky
Pro tento projekt budete potřebovat následující hardware a nástroje
Hardware:
1 - Ardruino101 (v USA) nebo Genuino101 (mimo USA).
2 - LED pásky NeoPixel RGB z adafruitu (5 voltů).
3 - USB konektor ardruino (konektor typu B až A).
4 - Software od Ardruina, Ardruino IDE V tomto tutoriálu budeme používat verzi 1.8.5. Požadavky na softwarovou knihovnu jsou: 101, Adafruit NeoPixel a Madgwick.
5 -A předmět, do kterého se vejde váš hardware. V tomto případě budu používat 3D tiskárnu. Soubor pro tento 3D tisk je umístěn v popisech s názvem „Lamp Head“. Tento formát souboru není připraven pro 3D tisk. V závislosti na vašich 3D tiskárnách musíte na 3D objektu nejprve spustit určený software pro 3D tisk. Někdy se měřítko 3D tisku resetuje. ujistěte se tedy, že průměr je nastaven na 11 cm x 11 cm.
6 - Základní pájecí sada.
Krok 2: Porozumění hardwaru a softwaru
Ardruin/Genuino101
Jen pro upřesnění, Ardruino101 a genuino101 jsou vedle jmen naprosto stejné. Oba mají stejné specifikace a používají stejný software.
Ardruino101 má základní specifikace jako ardruino UNO a další. Hlavním rysem ardruino101 je akcelerometr a gyroskop, které budeme v našem projektu používat. Také tento typ ardruina má jedinečnou knihovnu kódů s názvem CurrieIMU (Interní měřicí jednotky), která je součástí rozšíření knihovny 101.
Tím jsme si promluvili o softwaru.
Software a knihovny
Ardruino IDE používá jako hlavní zdrojový kód python. je to také hlavní kód platvorm, kde běží většina ardruino. Existuje spousta online návodů, jak tento software používat, a proto vám doporučuji nejprve si je prostudovat, pokud jste v tomto programu noví.
To znamená, že knihovny, které používáme, jsou následující:
Z nabídky Skica> Zahrnout knihovnu> Spravovat knihovny… Do pole pro zadávání textu zadejte
- 101 Ve standardu není ardruino 101 automaticky zahrnuto do ardruino IDE. Toto rozšíření knihovny potřebujeme, abychom mohli kódovat náš typ ardruino.
-Adafruit NeoPixel za účelem kódování našich pixelových proužků Neo.
-Madgwick Aby bylo možné načíst nezpracovaná data a vypočítat tato data na nezpracovaná, rozteč a rolování.
Ne RGB proužky
Budu používat typ s napětím 5 V nebo 5 V. S tímto 5v nepotřebuji rozšířený zdroj energie pro ovládání mých pásků. Místo toho budu používat ardruino jako zdroj energie pro ovládání a osvětlení pásů.
Zde je několik tipů, které potřebujete vědět, než s těmito proužky začnete.
Nejprve budete potřebovat Neodigital RGB LED pásky z adafruit. Tento druh proužků je kotrolovatelný pomocí kódů. Dále musíte vědět, že na těchto pásech je zadní a přední strana. Tato zadní a přední strana je důležitá pro pájení. Nezapomeňte pájet přední stranu tak, aby šipka směřovala od špičky.
Zde je návod, jak je používat.
Existují 3 pájecí body, které je třeba mít na paměti Zemnící připojení (GND), Napěťové připojení (V) a Pinové připojení (DIN).
Krok 3: Nastavení komponent
Nejprve budete muset 3D komponentu vytisknout, kterou najdete v požadavcích. V tomto případě budu používat PLA. Ujistěte se, že průměr nadměrného předmětu je 11 cm x 11 cm. Tím se zajistí, že ardruino a proužky zapadnou do shpere. Každá 3D tiskárna používá k výpočtu svého tiskového procesu jiný software. S tím bylo řečeno, že soubor, který používáte, může být různě zmenšen, takže to mějte na paměti.
Druhý po tisku se ujistěte, že se součásti mohou zavřít. 3D výtisky dohromady tvoří kouli. Měly by pěkně sedět. Pokud má komponent ztratit, nalepte na vnitřní stranu pásku, aby se víčko naplnilo. A pokud je hustý, použijte brusný papír.
Za třetí jsou skematichy pro ardruino a pásy poměrně snadné. Pro připojení proužků k ardruinu použijete 3 dráty. Všimněte si, že jediná místa, kde pájím, jsou na pásech. ne na samotném Ardruinu.
GND jde do GND
DIN jde na Pin (v našem případě pin6 na ardruino)
5V jde na 5V
Ujistěte se, že množství LED pásků, které používáte, je limit na 30. Už to nebude a kód se nepodaří správně spustit. Jednoduše můžete odstřihnout všechny nerovnoměrné proužky zobrazené nůžkovým znaménkem.
Čtvrté Evrything by mělo do koule pěkně zapadnout. Mohlo by se vám líbit, že jsem udělal průsečík mezi 1 z 3D tisku, abych viděl koryto a umístil plastový žlab na vrchol.
Krok 4: Kódování
Nyní byste tedy měli mít ve své knihovně všechny potřebné komponenty.
Zde je kód, který budete potřebovat ke spuštění projektu. Výsledek by měl vypadat jako odkaz na video, který posílám na tuto stránku.
Zdroj tohoto kódu najdete zde. Tento projekt také zahrnuje necercarly kroky, aby lépe porozuměl kódu a algaritme za použití.
#include #include #include #include
#define PIN 6 // 11 pixelů NeoPixel Strip
#define PIN1 7 // 1 pixel NeoPixel Strip #define NUMPIXELS 30 // Počet píxelů #define SAMPLE_RATE 25 // Vzorkovací frekvence pro akcelerometr a gyroskop
// Konfigurace Madgwick
Madgwickův filtr; unsigned long microsPerReading, microsPrevious; float accelScale, gyroScale;
// Konfigurace NeoPixel
Pixely Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixelsStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);
// Barevné prostory
RGBConverter rgbConverter; dvojité h = 1; dvojité s = 1; dvojnásobek v = 1; byte rgb [3];
// Stavová pohybová lampa
// Stav 0 -> Vybrat odstín -Rozteč // Stav 1 -> Vybrat sytost -Roll // Stát 2 -> Vybrat hodnotu -Stáčet // Stav 3 -> Opravit barevnou volatile int statusLamp = 0;
neplatné nastavení () {
Serial.begin (9600);
// spusťte IMU a filtrujte
CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);
// Nastavte rozsah akcelerometru na 2G
CurieIMU.setAccelerometerRange (2); // Nastaví rozsah gyroskopu na 250 stupňů/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);
// inicializace proměnných ke zrychlení aktualizací na správnou rychlost
microsPerReading = 1000000 / SAMPLE_RATE; microsPrevious = micros ();
// Init NeoPixel 11
pixely.begin (); pixely.show ();
// Init NeoPixel 1
pixelyStatus.begin (); pixely.show ();
// Zobrazit stav v px
setStatusPixel (statusLamp); }
prázdná smyčka () {
int aix, aiy, aiz; // akcelerometr int gix, giy, giz; float ax, ay, az; float gx, gy, gz; float roll, pitch, stáčení; statické nepodepsané dlouhé mikroNow;
// zkontrolujte, zda je čas číst data a aktualizovat filtr
microsNow = micros (); if (microsNow - microsPrevious> = microsPerReading) {
// číst surová data z CurieIMU
CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);
// převod ze surových dat na jednotky gravitace a stupně/sekundu
ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (giy); gz = convertRawGyro (giz);
// aktualizujte filtr, který počítá orientaci
filter.updateIMU (gx, gy, gz, ax, ay, az);
// tisk nadpisu, rozteče a rolování
roll = filter.getRoll (); rozteč = filtr.getPitch (); zatáčení = filtr.getYaw ();
// zvýšení předchozí doby, takže držíme správné tempo
microsPrevious = microsPrevious + microsPerReading;
// Pouze pokud změníte odstín, sytost nebo hodnotu
if (statusLamp vyberte Hue if (pitch> = -90 && pitch <= 90 && statusLamp == 0) {// Transformace úhlu rozteč = rozteč + 90; // Získá barevnou kordinaci z úhlů h = rozteč / 180,0;}
// Omezení úhlů
// pouze kutálení -90º až 90º = 180º // Stav 1 -> vyberte Sytost if (roll> = -90 && roll <= 90 && statusLamp == 1) {// Transformační úhel roll = roll + 90; // Získá barevné kordináty z úhlů s = roll / 180,0; }
// Stav 2 -> vyberte hodnotu
if (statusLamp == 2) {// zatáčení 0º až 360º v = zatáčení / 360,0; }
// Převést na rgb
rgbConverter.hsvToRgb (h, s, v, rgb); /* Serial.print ("Barva:"); Serial.print (h); Serial.print (" -"); Serial.print (s); Serial.print (" -"); Serial.print (v); Serial.println ("");
Serial.print ("Orientace:");
Serial.print (stáčení); Serial.print (""); Serial.print (rozteč); Serial.print (""); Serial.println (role); */
// Změna barvy pixelů
pro (int px = 0; px <NUMPIXELS; px ++) {pixely.setPixelColor (px, pixely. Color (rgb [0], rgb [1], rgb [2])); pixely.show (); }}
// Zobrazit stav v px
setStatusPixel (statusLamp); }}
float convertRawAcceleration (int aRaw) {
// protože používáme rozsah 2G // -2g mapy na surovou hodnotu -32768 // +2g mapy na surovou hodnotu 32767
float a = (aRaw * 2.0) / 32768.0;
vrátit a; }
float convertRawGyro (int gRaw) {
// protože používáme rozsah 250 stupňů/sekundu // -250 map na surovou hodnotu -32768 // +250 map na surovou hodnotu 32767
float g = (gRaw * 250,0) / 32768,0;
návrat g; }
static void eventCallback ()
{// Detekce klepnutí ve všech osách, pokud (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ("Klepněte na detekovaný statusLamp:"); Serial.println (statusLamp);
// Změna stavu
statusLamp ++;
// Počáteční stav
if (statusLamp> 3) {statusLamp = 0; }}}
void setStatusPixel (int statusPx)
{switch (statusPx) {case 0: pixelsStatus.setPixelColor (0, pixelsStatus. Color (150, 0, 0)); pixelyStatus.show (); přestávka; případ 1: pixelyStatus.setPixelColor (0, pixelyStatus. Color (0, 150, 0)); pixelyStatus.show (); přestávka; případ 2: pixelyStatus.setPixelColor (0, pixelyStatus. Color (0, 0, 150)); pixelyStatus.show (); přestávka; případ 3: pixelyStatus.setPixelColor (0, pixelyStatus. Color (0, 0, 0)); pixelyStatus.show (); přestávka;
}
}
Doporučuje:
Snadná změna barvy na základě náklonu Bezdrátová Rubikova kostka: 10 kroků (s obrázky)
Snadná změna barvy na základě náklonu Bezdrátová lampa Rubikova kostka: Dnes budeme stavět tuto úžasnou lampu ve stylu Rubikovy kostky, která mění barvu podle toho, která strana je nahoře. Kostka běží na malé baterii LiPo, nabité standardním mikro USB kabelem, a při mém testování má životnost baterie několik dní. Tento
Snadná změna barvy LED „svíčka“: 5 kroků (s obrázky)
Snadná změna barvy LED „Svíčka“: Jedná se o jednoduché světlo měnící barvu, které je skvělé pro děti i dospělé. Vypadá krásně ve slabě osvětlené místnosti, skvělé na prázdniny a vytváří docela chladné noční světlo
DIY změna barvy LED police ze surového dřeva: 10 kroků (s obrázky)
DIY police pro změnu barvy surového dřeva LED: V tomto instruktážním vám krok za krokem ukážu, jak vytvořit tuto krásnou LED poličku ze surového dřeva měnící barvu. Tento projekt byl zábavný a jsem s hotovým výrobkem velmi spokojený. Celkově tento projekt nebude stát
Vytvořte automatický obvod spínače nočního světla pomocí Mosfetu: 6 kroků (s obrázky)
Vytvořte automatický obvod spínače nočního osvětlení pomocí Mosfetu: JAK VYROBIT AUTOMATICKÝ Noční světelný spínač s MOSFETEM Ahoj, přátelé v tomto projektu ukážu jednoduché schéma zapojení, jak vytvořit automatický bezkontaktní spínač pomocí jednoho mosfetu a některých malých komponent, které se mi podařilo záchrana z
RGB LED levná a snadná změna barvy nočního světla: 3 kroky
RGB LED levná a snadná změna barvy nočního světla: Tento projekt byl docela snadný, když jsem si hrál a přišel na to, což chvíli trvalo. Cílem je umět změnit barvu pomocí přepínače a mít také LED možnosti stmívání Toto jsou položky, které budete potřebovat ke