Obsah:

Vylepšenie LED náladovej kocky Arduino (jednoduché) (video je súčasťou dodávky): 4 kroky
Vylepšenie LED náladovej kocky Arduino (jednoduché) (video je súčasťou dodávky): 4 kroky

Video: Vylepšenie LED náladovej kocky Arduino (jednoduché) (video je súčasťou dodávky): 4 kroky

Video: Vylepšenie LED náladovej kocky Arduino (jednoduché) (video je súčasťou dodávky): 4 kroky
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Júl
Anonim
Vylepšenie LED náladovej kocky Arduino (jednoduché) (video je súčasťou balenia)
Vylepšenie LED náladovej kocky Arduino (jednoduché) (video je súčasťou balenia)

Potom, čo som videl projekt LED kocky s malou náladou vytvorený 'Earlom, rozhodol som sa urobiť vylepšenú verziu LED Mood Cube. Moja verzia bude komplexnejšia ako pôvodná, pretože bude o niečo väčšia ako pôvodná, bude mať v porovnaní s pôvodnou kockou (pridanou žltou a bielou) ďalšie dve farby, bude mať nekonečné množstvo striedania farieb atď. by mal byť dobrým projektom na precvičenie ďalšieho používania LED svetiel pre tých, ktorí pochopili koncept spájania LED svetiel s drôtmi.

Krok 1: Materiály

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

Tu je niekoľko materiálov, ktoré budete potrebovať na výrobu tejto Mood Cube:

  • Breadboard
  • Arduino - (tu mám Leonarda)
  • Napájací zdroj Arduino / kábel USB
  • Breadboard
  • Prepojovacie vodiče (Veľa z nich, použil som 29 drôtov)
  • Červená LED x 2
  • Modrá LED x 2
  • Zelená LED x 2
  • Žltá LED x 2
  • Biela LED x 1
  • 9 odporov
  • Krabica dostatočne veľká, aby sa zmestila na dosku na chlieb (použil som škatuľu na topánky)
  • Úžitkový nôž
  • Papier

Krok 2: Kód

Tu je vysvetlenie kódu:

Kredit kódov patrí pôvodnému zdroju môjho projektu, pretože redaktor projektu tieto kódy vytvoril. Len som niektoré vylepšil tým, že som ich urobil komplexnejšími. V niektorých kódoch sa na konci môže zobraziť // 改. To znamená, že tento kód upravujem ja, takže sa líši od môjho pôvodného zdroja.

Mám tiež verziu kódu v Arduino Creator.

/* Kód pre krížové stmievanie 3 LED diódy, červenej, zelenej a modrej (RGB) Na vytváranie stmievania musíte urobiť dve veci: 1. Popíšte farby, ktoré chcete, aby sa zobrazovali 2. Vytvorte poradie, v ktorom chcete, aby bledli.

POPIS FARBY:

Farba je iba skupina troch percent, 0-100, ktorá ovláda červenú, zelenú a modrú diódu LED

Červená je červená LED pri plnom, modrá a zelená zhasnutá

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

Niektoré bežné farby sú uvedené nižšie alebo si vytvorte vlastné

ZOZNAM OBJEDNÁVKY:

V hlavnej časti programu musíte uviesť poradie, v ktorom sa majú farby zobrazovať, napr. crossFade (červená); crossFade (zelená); crossFade (modrá);

Tieto farby sa zobrazia v uvedenom poradí a zmiznú

jednej farby a do ďalšej

Okrem toho existuje 5 voliteľných nastavení, ktoré môžete upraviť:

1. Počiatočná farba je nastavená na čiernu (prvá farba sa zmení), ale počiatočnú farbu môžete nastaviť na akúkoľvek inú farbu 2. Vnútorná slučka beží na 1020 internáciách; premenná 'wait' nastavuje približné trvanie jedného crossfade. „Čakanie“10 ms by teoreticky malo spôsobiť prechodové zmiznutie ~ 10 sekúnd. V praxi ostatné funkcie, ktoré kód vykonáva, to na mojej doske spomaľujú až ~ 11 sekúnd. YMMV. 3. Ak je 'opakovanie' nastavené na 0, program sa bude opakovať donekonečna. ak je nastavené na číslo, bude sa opakovať v tomto cykle a potom sa zastaví na poslednej farbe v poradí. (Nastavte „návrat“na 1 a urobte poslednú farbu čiernou, ak chcete, aby na konci vybledla.) 4. K dispozícii je voliteľná premenná „podržať“, ktorá v programe ponechá milisekundy, keď je farba úplné, ale skôr, ako začne ďalšia farba. 5. Nastavte príznak DEBUG na 1, ak chcete, aby sa výstup ladenia odosielal na sériový monitor.

Interné prvky programu nie sú komplikované, ale sú

sú trochu nervózne - vnútorné fungovanie je vysvetlené pod hlavnou slučkou.

Apríl 2007, Clay Shirky

*

/ Výkon

int ylwPin = 5; // Žltá LED dióda, pripojená k digitálnemu kolíku 5 // 改 int redPin = 6; // Červená LED dióda, pripojená k digitálnemu pinu 6 // 改 int grnPin = 7; // Zelená LED dióda, pripojená k digitálnemu pinu 7 // 改 int bluPin = 8; // Modrá LED dióda, pripojená k digitálnemu pinu 8 // 改 int whiPin = 9; // Biela LED dióda, pripojená k digitálnemu kolíku 9 // 改 int ylwPin2 = 10; // Žltá LED dióda, pripojená k digitálnemu kolíku 10 // 改 int redPin2 = 11; // Červená LED dióda, pripojená k digitálnemu kolíku 11 // 改 int grnPin2 = 12; // Zelená LED dióda, pripojená k digitálnemu kolíku 12 // 改 int bluPin2 = 13; // Modrá LED dióda, pripojená k digitálnemu kolíku 13 // 改

// Farebné polia

int čierna [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // 改 int biela [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 žltá [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 ružová [9] = {0, 50, 0, 0, 50, 0, 0, 50, 0,}; // 改 // atď.

// Nastavenie počiatočnej farby

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

int čakať = 15; // 10ms interné crossFade oneskorenie; zvýšenie pre pomalšie slabnutie // 改

int hold = 1; // Voliteľné podržanie, keď je farba úplná, pred ďalším crossFade // 改 int DEBUG = 1; // počítadlo DEBUG; ak je nastavený na 1, zapíše hodnoty späť cez serial int loopCount = 60; // Ako často by sa mal DEBUG hlásiť? int opakovanie = 0; // Koľkokrát by sme sa mali zastaviť, kým sa zastavíme? (0 bez zastavenia) // 改 int j = 0; // Počítadlo slučiek na opakovanie

// Inicializácia farebných premenný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 ako výstupný pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT); pinMode (ylwPin, OUTPUT); // 改 pinMode (whiPin, OUTPUT); // 改 pinMode (grnPin2, OUTPUT); // 改 pinMode (bluPin2, OUTPUT); // 改 pinMode (ylwPin2, VÝSTUP); // 改 pinMode (redPin2, OUTPUT); // 改

if (DEBUG) {// Ak chceme vidieť hodnoty pre ladenie …

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

// Hlavný program: uveďte poradie crossfades

void loop () {crossFade (červená); crossFade (zelená); crossFade (modrá); crossFade (žltá); crossFade (biely); crossFade (ružová); crossFade (fialová); crossFade (oranžová);

if (opakovať) {// Zopakujeme niekoľko krát?

j += 1; if (j> = opakovať) {// Už sme tam? výstup (j); // Ak áno, prestaň. }}}

/* NIŽŠÍ TENTO RIADOK JE MATH - TOTO NEMUSÍTE ZMENIŤ ZA ZÁKLADY

Program funguje takto:

Predstavte si crossfade, ktorý posúva červenú LED od 0 do 10, zelenú od 0 do 5 a modrú od 10 do 7 v desiatich krokoch. Chceli by sme spočítať 10 krokov a zvýšiť alebo znížiť hodnoty farieb v rovnomerne stupňovaných prírastkoch. Predstavte si, že + znamená zvýšenie hodnoty o 1 a a - sa rovná jej zníženiu. Naše 10 -stupňové vyblednutie by vyzeralo takto:

1 2 3 4 5 6 7 8 9 10

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

Červená stúpa z 0 na 10 v desiatich krokoch, zelená od

0-5 v 5 krokoch a modrá padá z 10 na 7 v troch krokoch.

V skutočnom programe sú percentá farieb prevedené na

0-255 hodnôt a existuje 1020 krokov (255*4).

Aby ste zistili, aký veľký krok by mal byť medzi jedným hore- alebo

podčiarknutím jednej z hodnôt diód LED nazývame CalculateStep (), ktorý vypočíta absolútnu medzeru medzi počiatočnými a koncovými hodnotami a potom túto medzeru vydelí číslom 1020, aby sa určila veľkosť kroku medzi úpravami hodnoty. */

int CalcStep (int prevValue, int endValue) {

int krok = endValue - prevValue; // Aký je celkový rozdiel? if (krok) {// Ak je nenulový, krok = 1020 / krok; // delenie 1020} návratový krok; }

/* Nasledujúca funkcia je CalculateVal. Keď hodnota cyklu, i, dosiahne veľkosť kroku vhodnú pre jednu z farieb, zvýši alebo zníži hodnotu tejto farby o 1. (R, G a B sa vypočítavajú oddelene.) */

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

if ((krok) && i % step == 0) {// Ak krok nie je nenulový a je načase zmeniť hodnotu, if (krok> 0) {// zvýši hodnotu, ak je krok kladný … val += 1; } else if (krok 255) {val = 255; } else if (val <0) {val = 0; } návrat val; }

/* crossFade () prevádza percentuálne farby na a

Rozsah 0-255, potom sa 1020-krát zacyklí, skontroluje sa, či je potrebné hodnotu aktualizovať zakaždým, a potom zapíšte hodnoty farieb na správne kolíky. */

void crossFade (vnútorná farba ) {// 改

// Previesť na 0-255 int R = (farba [0] * 255) / 100; int G = (farba [1] * 255) / 100; int B = (farba [2] * 255) / 100; int Y = (farba [3] * 255) / 100; // 改 int W = (farba [4] * 255) /100; // 改

int krokR = countStep (prevR, R);

int krokG = countStep (prevG, G); int krokB = countStep (prevB, B); int krokY = výpočetKrok (predchádzajúci, Y); // 改 int stepW = countStep (predchádzajúci, W); // 改

pre (int i = 0; i <= 1020; i ++) {redVal = countVal (stepR, redVal, i); grnVal = countVal (stepG, grnVal, i); bluVal = vypočítaťVal (krokB, bluVal, i); ylwVal = výpočetVal (krok Y, ylwVal, i); // 改 whiVal = countVal (stepW, whiVal, i); // 改

analogWrite (redPin, redVal); // Zapíšte aktuálne hodnoty na piny LED

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

oneskorenie (čakanie); // Pred pokračovaním v cykle počkajte milisekundy „počkajte“

if (DEBUG) {// Ak chceme sériový výstup, vytlačte ho na

if (i == 0 alebo i % loopCount == 0) {// začiatok 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 (" /"); Sériové číslo.println (ylwVal); // 改 Serial.print (" /"); // 改 Serial.println (whiVal); // 改 Serial.print (" /"); // 改} DEBUG += 1; }} // Aktualizácia aktuálnych hodnôt pre nasledujúcu slučku prevR = redVal; prevG = grnVal; prevB = bluVal; prevY = ylwVal; // 改 prevW = whiVal; // 改 zdržanie (podržanie); // Pozastavenie na voliteľné milisekundy „čakanie“pred obnovením cyklu}

Krok 3: Nastavenie

Nastaviť
Nastaviť
Nastaviť
Nastaviť
Nastaviť
Nastaviť
  1. Získajte chlebník.
  2. Ukážka prepojovacích vodičov, aby mohlo svietiť LED svetlo:

    1. LED diódu umiestnite na dosku. Dlhší koniec umiestnite naľavo a kratší koniec napravo.
    2. Jeden koniec prepojovacieho vodiča umiestnite na miesto, ktoré je v rovnakom rade s dlhším koncom diódy LED. Druhý koniec umiestnite do sekcie Digital PWM. Kód určil, že žlté LED diódy sa majú pripojiť k 10 a 5, červené k 6 a 11, modré k 8 a 13, zelené k 7 a 12 a nakoniec k bielym LED k 9.
    3. Jeden koniec rezistora umiestnite do rovnakého radu s kratším koncom diódy LED. Druhý koniec umiestnite niekde blízko.
    4. Umiestnite koniec iného prepojovacieho vodiča s rovnakým radom na koniec rezistora, ktorý nie je v rovnakom rade s kratším koncom diódy LED. Druhý koniec drôtu umiestnite do radu so záporným nábojom.
    5. Umiestnite koniec ešte jedného prepojovacieho drôtu na rad so záporným nábojom a jeho druhý koniec umiestnite na GND.
  3. Krok 2 opakujte 8 -krát, aby svietilo 9 LED diód
  4. Umiestnite dosku na pečenie do škatule. Niekoľko pripomienok tu:

    1. Použil som napájací zdroj. Vytvorte malý otvor pre svoje drôty pomocou noža, ktorý prejde skrinkou a spojí sa s doskou.
    2. Uistite sa, že je krabica otvorená ako jedna strana. Krabica od topánok má už jednu stranu otvorenú. Ak je škatuľka úplne zatvorená, odrežte jednu stranu škatule a vytvorte otvorený priestor.
    3. Stranu ničím nezakryte papierom. Toto je, aby LED svetlá presvitali papierom.

Odporúča: