Obsah:

Vylepšení kostky nálady Arduino LED (jednoduché) (video v ceně): 4 kroky
Vylepšení kostky nálady Arduino LED (jednoduché) (video v ceně): 4 kroky

Video: Vylepšení kostky nálady Arduino LED (jednoduché) (video v ceně): 4 kroky

Video: Vylepšení kostky nálady Arduino LED (jednoduché) (video v ceně): 4 kroky
Video: Оборудование электронщика, от начинающего до профи. Моя подборка 2024, Listopad
Anonim
Vylepšení kostky nálady Arduino LED (jednoduché) (video v ceně)
Vylepšení kostky nálady Arduino LED (jednoduché) (video v ceně)

Poté, co jsem viděl projekt LED malé kostky nálady vytvořený 'Earlem, rozhodl jsem se udělat vylepšenou verzi LED Mood Cube. Moje verze bude složitější než ta původní, protože bude o něco větší než původní, bude mít oproti původní kostce o dvě barvy více (přidá se žlutá a bílá), bude mít nekonečné množství otáčení barev atd. by měl být dobrým projektem k procvičení dalšího využití LED světel pro ty, kteří rozuměli konceptu spojování LED světel s dráty.

Krok 1: Materiály

Materiály
Materiály
Materiály
Materiály

Zde je několik materiálů, které budete k výrobě této Mood Cube potřebovat:

  • Prkénko
  • Arduino - (tady mám Leonarda)
  • Napájecí zdroj Arduino / USB kabel
  • Prkénko
  • Propojovací vodiče (Spousta z nich, použil jsem 29 vodičů)
  • Červená LED x 2
  • Modrá LED x 2
  • Zelená LED x 2
  • Žlutá LED x 2
  • Bílá LED x 1
  • 9 odporů
  • Box dostatečně velký, aby se vešel na prkénko (použil jsem box na boty)
  • Nástrojový nůž
  • Papír

Krok 2: Kód

Nějaké vysvětlení zde uvedeného kódu:

Kredit kreditů jde na původní zdroj mého projektu, protože editor projektu vytvořil tyto kódy. Pouze jsem některé vylepšil tím, že jsem je udělal komplexnějšími. U některých kódů se nakonec může zobrazit // 改. To znamená, že tento kód upravuji já, takže se liší od mého původního zdroje.

Mám také verzi kódu na Arduino Creator.

/* Kód pro křížové blednutí 3 LED diod, červená, zelená a modrá (RGB) Chcete-li vytvořit zeslabení, musíte udělat dvě věci: 1. Popište barvy, které chcete zobrazit 2. Uveďte pořadí, ve kterém chcete, aby vybledly

POPIS BARVY:

Barva je pouze řada tří procent, 0-100, ovládající červenou, zelenou a modrou LED

Červená je červená LED při plném, modrá a zelená nesvítí

int red = {100, 0, 0} Dim white is all three LEDs at 30% int dimWhite = {30, 30, 30} etc.

Některé běžné barvy jsou uvedeny níže nebo si vytvořte vlastní

SEZNAM OBJEDNÁVKY:

V hlavní části programu musíte uvést pořadí, ve kterém se mají barvy zobrazovat, např. crossFade (červená); crossFade (zelená); crossFade (modrá);

Tyto barvy se objeví v uvedeném pořadí a vyblednou

do jedné barvy a do další

Kromě toho existuje 5 volitelných nastavení, která můžete upravit:

1. Počáteční barva je nastavena na černou (první barva tedy vybledne), ale počáteční barvu můžete nastavit na jakoukoli jinou barvu 2. Vnitřní smyčka běží na 1020 interací; proměnná 'wait' nastavuje přibližnou dobu trvání jednoho crossfade. Teoreticky by při „čekání“10 ms mělo dojít ke zkřížení ~ 10 sekund. V praxi to ostatní funkce, které kód provádí, zpomalí na ~ 11 sekund na mé desce. YMMV. 3. Pokud je 'opakování' nastaveno na 0, program se bude smyčkovat neomezeně dlouho. pokud je nastaveno na číslo, bude tento počet opakovat a pak se zastaví na poslední barvě v sekvenci. (Nastavte 'návrat' na 1, a udělejte poslední barvu černou, pokud chcete, aby na konci zmizela.) 4. K dispozici je volitelná proměnná 'hold', která přenese program na 'hold' milisekundy, když je barva dokončeno, ale než začne další barva. 5. Nastavte příznak DEBUG na 1, pokud chcete, aby byl výstup ladění odesílán na sériový monitor.

Interní části programu nejsou složité, ale jsou

jsou trochu nervózní - vnitřní fungování je vysvětleno pod hlavní smyčkou.

Duben 2007, Clay Shirky

*

/ Výstup

int ylwPin = 5; // Žlutá LED, připojená k digitálnímu pinu 5 // 改 int redPin = 6; // Červená LED, připojená k digitálnímu pinu 6 // 改 int grnPin = 7; // Zelená LED, připojená k digitálnímu pinu 7 // 改 int bluPin = 8; // Modrá LED, připojená k digitálnímu pinu 8 // 改 int whiPin = 9; // Bílá LED, připojená k digitálnímu pinu 9 // 改 int ylwPin2 = 10; // Žlutá LED, připojená k digitálnímu pinu 10 // 改 int redPin2 = 11; // Červená LED, připojená k digitálnímu pinu 11 // 改 int grnPin2 = 12; // Zelená LED, připojená k digitálnímu pinu 12 // 改 int bluPin2 = 13; // Modrá LED, připojená k digitálnímu pinu 13 // 改

// Barevná pole

int černá [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // 改 int bílá [9] = {100, 100, 100, 100, 100, 100, 100, 100, 100}; // 改 int červená [9] = {0, 0, 100, 0, 0, 0, 100, 0, 0}; // 改 int zelená [9] = {0, 100, 0, 0, 0, 0, 0, 100, 0}; // 改 int modrá [9] = {0, 0, 0, 100, 0, 0, 0, 0, 100}; // 改 int žlutá [9] = {100, 0, 0, 0, 0, 100, 0, 0, 0}; // 改 int purple [9] = {0, 50, 0, 50, 0, 0, 50, 0, 50}; // 改 int oranžová [9] = {50, 50, 0, 0, 0, 50, 50, 0, 0}; // 改 int růžová [9] = {0, 50, 0, 0, 50, 0, 0, 50, 0,}; // 改 // atd.

// Nastavit počáteční barvu

int redVal = černý [0]; int grnVal = černý [1]; int bluVal = černý [2]; int ylwVal = černý [3]; // 改 int whiVal = black [4]; // 改

int čekat = 15; // 10ms interní crossFade zpoždění; zvýšení pro pomalejší vyblednutí // 改

int hold = 1; // Volitelné podržení, když je barva kompletní, před dalším crossFade // 改 int DEBUG = 1; // počitadlo DEBUG; pokud je nastaveno na 1, zapíše hodnoty zpět přes serial int loopCount = 60; // Jak často by se měl DEBUG hlásit? int opakování = 0; // Kolikrát bychom se měli zastavit, než zastavíme? (0 bez zastavení) // 改 int j = 0; // Počitadlo smyček pro opakování

// Inicializace barevných proměnných

int prevR = redVal; int prevG = grnVal; int prevB = bluVal; int prevY = ylwVal; int prevW = whiVal; // 改

// Nastavte výstupy LED

void setup () {pinMode (redPin, OUTPUT); // nastaví piny jako výstupní pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT); pinMode (ylwPin, OUTPUT); // 改 pinMode (whiPin, OUTPUT); // 改 pinMode (grnPin2, OUTPUT); // 改 pinMode (bluPin2, OUTPUT); // 改 pinMode (ylwPin2, OUTPUT); // 改 pinMode (redPin2, OUTPUT); // 改

if (DEBUG) {// Pokud chceme vidět hodnoty pro ladění…

Serial.begin (9600); //… nastavit sériový výstup}}

// Hlavní program: seznam pořadí crossfade

void loop () {crossFade (červená); crossFade (zelená); crossFade (modrá); crossFade (žlutá); crossFade (bílá); crossFade (růžová); crossFade (fialová); crossFade (oranžová);

if (opakovat) {// Smyčkujeme konečný počet opakování?

j += 1; if (j> = opakovat) {// Už jsme tam? exit (j); // Pokud ano, přestaň. }}}

/* NÍŽE TATO ŘADA JE MATH - TOTO NEMUSÍTE ZMĚNIT ZA ZÁKLADY

Program funguje takto:

Představte si crossfade, který posouvá červenou LED od 0-10, zelenou od 0-5 a modrou od 10 do 7 v deseti krocích. Chtěli bychom spočítat 10 kroků a zvýšit nebo snížit hodnoty barev v rovnoměrně odstupňovaných krocích. Představte si, že + znamená zvýšení hodnoty o 1 a a - znamená její snížení. Naše 10stupňové vyblednutí by vypadalo takto:

1 2 3 4 5 6 7 8 9 10

R + + + + + + + + + + + G + + + + + + B - - -

Červená stoupá z 0 na 10 v deseti krocích, zelená od

0-5 v 5 krocích a modrá padá z 10 na 7 ve třech krocích.

Ve skutečném programu jsou procenta barev převedena na

Hodnoty 0-255 a existuje 1020 kroků (255*4).

Abychom zjistili, jak velký krok by měl být mezi jedním nahoru nebo

down-tick jedné z hodnot LED, voláme CalculateStep (), který vypočítá absolutní mezeru mezi počáteční a koncovou hodnotou, a poté tuto mezeru vydělí 1020, aby určil velikost kroku mezi úpravami hodnoty. */

int countStep (int prevValue, int endValue) {

int step = endValue - prevValue; // Jaká je celková mezera? if (step) {// Pokud je nenulové, step = 1020 / krok; // děleno 1020} návratový krok; }

/* Další funkcí je countVal. Když hodnota smyčky, i, dosáhne velikosti kroku vhodné pro jednu z barev, zvýší nebo sníží hodnotu této barvy o 1. (R, G a B se vypočítávají každý zvlášť.) */

int CalcVal (int krok, int val, int i) {

if ((krok) && i % krok == 0) {// Pokud krok není nenulový a je čas na změnu hodnoty, if (step> 0) {// zvýší hodnotu, pokud je krok kladný… val += 1; } else if (krok 255) {val = 255; } else if (val <0) {val = 0; } návrat val; }

/* crossFade () převede procentní barvy na a

Rozsah 0-255, poté smyčky 1020krát, kontrola, zda je třeba hodnotu pokaždé aktualizovat, poté zapsání hodnot barev na správné piny. */

void crossFade (int color ) {// 改

// Převést na 0-255 int R = (barva [0] * 255) / 100; int G = (barva [1] * 255) / 100; int B = (barva [2] * 255) / 100; int Y = (barva [3] * 255) / 100; // 改 int W = (barva [4] * 255) /100; // 改

int krokR = countStep (prevR, R);

int stepG = countStep (předchozí G, G); int krokB = countStep (prevB, B); int stepY = countStep (předchozí, Y); // 改 int stepW = countStep (předchozíW, W); // 改

pro (int i = 0; i <= 1020; i ++) {redVal = vypočítatVal (stepR, redVal, i); grnVal = countVal (stepG, grnVal, i); bluVal = countVal (stepB, bluVal, i); ylwVal = vypočítatVal (stepY, ylwVal, i); // 改 whiVal = countVal (stepW, whiVal, i); // 改

analogWrite (redPin, redVal); // Zapisujte aktuální hodnoty na LED piny

analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); analogWrite (ylwPin, ylwVal); // 改 analogWrite (whiPin, whiVal); // 改 analogWrite (grnPin2, grnVal); // 改 analogWrite (bluPin2, bluVal); // 改 analogWrite (ylwPin2, ylwVal); // 改 analogWrite (redPin2, redVal); // 改

zpoždění (čekání); // Před obnovením smyčky počkejte milisekundy „počkejte“

if (DEBUG) {// Pokud chceme sériový výstup, vytiskněte jej na

if (i == 0 nebo i % loopCount == 0) {// začátek a každý loopCount krát Serial.print ("Loop/RGBYW: #"); Serial.print (i); Serial.print ("|"); Serial.print (redVal); Serial.print (" /"); Serial.print (grnVal); Serial.print (" /"); Serial.println (bluVal); Serial.print (" /"); Serial.println (ylwVal); // 改 Serial.print (" /"); // 改 Serial.println (whiVal); // 改 Serial.print (" /"); // 改} DEBUG += 1; }} // Aktualizace aktuálních hodnot pro další smyčku prevR = redVal; prevG = grnVal; prevB = bluVal; prevY = ylwVal; // 改 prevW = whiVal; // 改 zpoždění (podržet); // Pozastavení volitelných milisekund „čekání“před obnovením smyčky}

Krok 3: Nastavení

Založit
Založit
Založit
Založit
Založit
Založit
  1. Získejte prkénko.
  2. Ukázka připojení vodičů, aby mohlo svítit LED světlo:

    1. Umístěte LED na prkénko. Umístěte delší konec nalevo a kratší konec napravo.
    2. Umístěte jeden konec propojovacího vodiče na místo, které je ve stejné řadě s delším koncem LED. Druhý konec umístěte do sekce Digital PWM. Kód určoval, že žluté LED diody mají být připojeny k 10 a 5, červené k 6 a 11, modré k 8 a 13, zelené k 7 a 12 a nakonec bílé LED k 9.
    3. Umístěte jeden konec odporu na stejný řádek s kratším koncem LED. Druhý konec umístěte někam poblíž.
    4. Umístěte konec dalšího propojovacího vodiče se stejnou řadou na konec rezistoru, který není ve stejné řadě s kratším koncem LED. Druhý konec drátu položte na řadu se záporným nábojem.
    5. Umístěte konec dalšího propojovacího vodiče na řadu se záporným nábojem a jeho druhý konec umístěte na GND.
  3. Krok 2 opakujte 8krát, aby svítilo 9 LED diod
  4. Umístěte prkénko dovnitř krabice. Zde několik připomenutí:

    1. Použil jsem napájecí zdroj. Vytvořte malý otvor pro vaše dráty pomocí nože, který projde krabicí a připojí se k prkénku.
    2. Ujistěte se, že je krabice otevřená jako jedna strana. Box na boty již má jednu stranu, která je otevřená. Pokud je krabice zcela zavřená, odřízněte jednu stranu krabice, abyste vytvořili otevřený prostor.
    3. Stranu ničím nepřikryjte papírem. Toto je, aby LED světla prosvítala papírem.

Doporučuje: