Obsah:
Video: Vylepšenie LED náladovej kocky Arduino (jednoduché) (video je súčasťou dodávky): 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
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
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
- Získajte chlebník.
-
Ukážka prepojovacích vodičov, aby mohlo svietiť LED svetlo:
- LED diódu umiestnite na dosku. Dlhší koniec umiestnite naľavo a kratší koniec napravo.
- 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.
- Jeden koniec rezistora umiestnite do rovnakého radu s kratším koncom diódy LED. Druhý koniec umiestnite niekde blízko.
- 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.
- Umiestnite koniec ešte jedného prepojovacieho drôtu na rad so záporným nábojom a jeho druhý koniec umiestnite na GND.
- Krok 2 opakujte 8 -krát, aby svietilo 9 LED diód
-
Umiestnite dosku na pečenie do škatule. Niekoľko pripomienok tu:
- Použil som napájací zdroj. Vytvorte malý otvor pre svoje drôty pomocou noža, ktorý prejde skrinkou a spojí sa s doskou.
- 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.
- Stranu ničím nezakryte papierom. Toto je, aby LED svetlá presvitali papierom.
Odporúča:
Kocky LED kocky: 3 kroky
Kocky LED kocky: Tento projekt vytvára kocky LED, ktoré vytvoria nové číslo pri každom naklonení senzora náklonu. Tento projekt by mohol byť upravený tak, aby používal tlačidlo, ale kód by bolo potrebné zodpovedajúcim spôsobom zmeniť. Pred začatím tohto projektu zapojte 5V
E -kocky - Arduino kocky/1 až 6 kociek + D4, D5, D8, D10, D12, D20, D24 a D30: 6 krokov (s obrázkami)
E -kocky - Arduino kocky/kocky 1 až 6 kociek + D4, D5, D8, D10, D12, D20, D24 a D30: Jedná sa o jednoduchý arduino projekt na výrobu elektronickej kocky. Je možné si vybrať pre 1 až 6 kociek alebo 1 z 8 špeciálnych kociek. Voľba sa vykonáva jednoduchým otočením rotačného enkodéra. Ide o tieto funkcie: 1 kocka: zobrazenie veľkých bodiek 2-6 kociek: zobrazenie bodiek
Rozpoznávanie farieb W/ TCS230 senzor a Arduino [Kalibračný kód je súčasťou dodávky]: 12 krokov
Rozpoznávanie farieb Snímač W/ TCS230 a Arduino [Kalibračný kód je súčasťou dodávky]: Prehľad V tomto návode sa dozviete o snímači TCS230 a jeho použití s Arduinom na rozpoznávanie farieb. Na konci tohto tutoriálu nájdete fascinujúci nápad na vytvorenie pera na výber farieb. S týmto perom môžete skenovať farby
Môj „Owerkill“dodávky energie: 4 kroky (s obrázkami)
Môj „Owerkill“dodávky POWER: Ahoj. Môj názov hovorí: ” Zánik zdroja napájania ” … Hmm .. uvidíme, či je. Tu sila prechádza 5 krokmi, než sa dostane k cieľu (v tomto prípade ATtiny84, člen rodiny ATMEL). Myslím, že to v skutočnosti nie je
Jednoduché elektronické kocky: 5 krokov
Jednoduché elektronické kocky: Chceli ste niekedy vytvoriť elektronické kocky? Navrhol som jednoduchý a malý obvod, ktorý sa zmestí do každého vrecka. Môžete si predstaviť, prečo je to lepšie ako normálna matrica. Výrazne zvyšuje vašu geekiness úroveň. Najväčšou súčasťou je batéria, pretože