Съдържание:
Видео: Подобряване на Arduino LED куб за настроение (прост) (включено видео): 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
След като видях светодиоден проект за малък куб за настроение, създаден от 'Earl, реших да направя подобрена версия на LED Mood Cube. Моята версия ще бъде по -сложна от оригиналната, тъй като ще бъде малко по -голяма от оригиналната, ще има още два цвята в сравнение с оригиналния куб (добавено жълто и бяло), ще има безкрайно количество въртене на цветове и т.н. трябва да бъде добър проект за практикуване на по -нататъшното използване на LED светлини за тези, които разбират концепцията за свързване на LED светлини с проводници.
Стъпка 1: Материали
Ето някои материали, които ще ви трябват, за да направите този куб на настроението:
- Платка
- Arduino - (тук имам Леонардо)
- Захранване Arduino / USB кабел
- Платка
- Джъмперни проводници (много от тях, използвах 29 проводника)
- Червен светодиод x 2
- Син светодиод x 2
- Зелен светодиод x 2
- Жълт светодиод x 2
- Бял светодиод x 1
- 9 резистора
- Кутия, достатъчно голяма, за да побере дъската (използвах кутия за обувки)
- Помощен нож
- Хартия
Стъпка 2: Код
Няколко обяснения за кода, даден тук:
Заслугата на кодовете е в първоначалния източник на моя проект, тъй като редакторът на проекта е създал тези кодове. Просто подобрих някои от тях, като ги направих по -сложни. В някои кодове може да видите // 改 в края. Това означава, че този код се редактира от мен, така че е различен от първоначалния ми източник.
Имам и версия на кода на Arduino Creator.
/* Код за кръстосано избледняване 3 светодиода, червен, зелен и син (RGB) За да създадете избледняване, трябва да направите две неща: 1. Опишете цветовете, които искате да се показват 2. Избройте реда, в който искате да избледняват
ОПИСАНИЕ НА ЦВЕТ:
Цветът е само масив от три процента, 0-100, контролиращ червените, зелените и сините светодиоди
Червеното е червеният светодиод в пълен размер, син и зелен изключен
int red = {100, 0, 0} Dim white са и трите светодиода при 30% int dimWhite = {30, 30, 30} и т.н.
Някои често срещани цветове са предоставени по -долу или направете свои собствени
СПИСАНЕ НА ПОРЪЧКАТА:
В основната част на програмата трябва да посочите реда, в който искате да се появяват цветове, напр. crossFade (червено); crossFade (зелено); crossFade (синьо);
Тези цветове ще се появят в този ред, избледнявайки
един цвят и в следващия
Освен това има 5 незадължителни настройки, които можете да регулирате:
1. Първоначалният цвят е зададен на черен (така че първият цвят избледнява), но можете да зададете началния цвят на всеки друг цвят 2. Вътрешният цикъл работи за 1020 интеграции; променливата „изчакване“задава приблизителната продължителност на едно кръстосване. На теория едно „изчакване“от 10 ms трябва да направи crossFade от ~ 10 секунди. На практика другите функции, които кодът изпълнява, забавят това до ~ 11 секунди на дъската ми. YMMV. 3. Ако „повтаряне“е зададено на 0, програмата ще се върти за неопределено време. ако е зададено на число, то ще циклира този брой пъти, след което ще спре на последния цвят в поредицата. (Задайте „return“на 1 и направете последния цвят черен, ако искате да избледнее в края.) 4. Има опционална променлива „hold“, която поставя програмата за „hold“милисекунди, когато цветът е завършен, но преди да започне следващият цвят. 5. Задайте флага на DEBUG на 1, ако искате изходът за отстраняване на грешки да бъде изпратен на серийния монитор.
Вътрешността на програмата не е сложна, но те са
са малко придирчиви - вътрешната работа е обяснена под основния контур.
Април 2007 г., Клей Ширки
*
/ Изход
int ylwPin = 5; // Жълт светодиод, свързан към цифров извод 5 // 改 int redPin = 6; // Червен светодиод, свързан към цифров пин 6 // 改 int grnPin = 7; // Зелен светодиод, свързан към цифров извод 7 // 改 int bluPin = 8; // Син светодиод, свързан към цифров пин 8 // 改 int whiPin = 9; // Бял светодиод, свързан към цифров извод 9 // 改 int ylwPin2 = 10; // Жълт светодиод, свързан към цифров извод 10 // 改 int redPin2 = 11; // Червен светодиод, свързан към цифров извод 11 // 改 int grnPin2 = 12; // Зелен светодиод, свързан към цифров извод 12 // 改 int bluPin2 = 13; // Син светодиод, свързан към цифров извод 13 // 改
// Цветни масиви
int черно [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // 改 int бяло [9] = {100, 100, 100, 100, 100, 100, 100, 100, 100}; // 改 int red [9] = {0, 0, 100, 0, 0, 0, 100, 0, 0}; // 改 int green [9] = {0, 100, 0, 0, 0, 0, 0, 100, 0}; // 改 int синьо [9] = {0, 0, 0, 100, 0, 0, 0, 0, 100}; // 改 int жълто [9] = {100, 0, 0, 0, 0, 100, 0, 0, 0}; // 改 int лилаво [9] = {0, 50, 0, 50, 0, 0, 50, 0, 50}; // 改 int orange [9] = {50, 50, 0, 0, 0, 50, 50, 0, 0}; // 改 int pink [9] = {0, 50, 0, 0, 50, 0, 0, 50, 0,}; // 改 // и т.н.
// Задайте начален цвят
int redVal = черно [0]; int grnVal = черно [1]; int bluVal = черно [2]; int ylwVal = черно [3]; // 改 int whiVal = черно [4]; // 改
int чакане = 15; // 10ms вътрешно закъснение crossFade; увеличаване за по -бавни затихвания // 改
int hold = 1; // Незадължително задържане, когато цветът е завършен, преди следващото crossFade // 改 int DEBUG = 1; // DEBUG брояч; ако е зададено на 1, ще запише стойности обратно чрез сериен int loopCount = 60; // Колко често трябва да докладва DEBUG? int повторение = 0; // Колко пъти трябва да се въртим, преди да спрем? (0 за без спиране) // 改 int j = 0; // Цикъл на цикъл за повторение
// Инициализиране на цветови променливи
int prevR = redVal; int prevG = grnVal; int prevB = bluVal; int prevY = ylwVal; int prevW = whiVal; // 改
// Настройка на LED изходите
void setup () {pinMode (redPin, OUTPUT); // задава изводите като изход 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) {// Ако искаме да видим стойности за отстраняване на грешки …
Serial.begin (9600); //… настройте серийния изход}}
// Основна програма: изброяване на реда на кръстосани фасове
void loop () {crossFade (червено); crossFade (зелено); crossFade (синьо); crossFade (жълто); crossFade (бяло); crossFade (розово); crossFade (лилаво); crossFade (оранжево);
if (repeat) {// Обвързваме ли краен брой пъти?
j += 1; if (j> = repeat) {// Още ли сме там? изход (j); // Ако е така, спрете. }}}
/* ПО -ТОЗИ РЕД е МАТЕМАТИКАТА - НЕ ТРЯБВА ДА ИЗМЕНЯТЕ ТОВА ЗА ОСНОВНИТЕ
Програмата работи така:
Представете си кръстосано избледняване, което премества червения светодиод от 0-10, зеления от 0-5 и синия от 10 на 7, на десет стъпки. Бихме искали да преброим 10 -те стъпки и да увеличим или намалим стойностите на цветовете на равномерно стъпаловидни стъпки. Представете си, че + показва повишаване на стойност с 1, а а - равно на намаляване. Нашето 10 стъпково избледняване ще изглежда така:
1 2 3 4 5 6 7 8 9 10
R + + + + + + + + + + G + + + + + B - - -
Червеното се издига от 0 до 10 на десет стъпки, зеленото от
0-5 на 5 стъпки, а синьото пада от 10 на 7 на три стъпки.
В реалната програма процентите на цветовете се преобразуват в
0-255 стойности и има 1020 стъпки (255*4).
За да разберете колко голяма стъпка трябва да има между една нагоре или
надолу отметка на една от стойностите на светодиода, наричаме CalcuStep (), който изчислява абсолютната разлика между началните и крайните стойности и след това разделя тази празнина на 1020, за да определи размера на стъпката между корекциите в стойността. */
int CalculateStep (int prevValue, int endValue) {
int step = endValue - prevValue; // Каква е общата пропаст? if (стъпка) {// Ако не е нула, стъпка = 1020 / стъпка; // разделяне на 1020} стъпка за връщане; }
/* Следващата функция е CalcuVal. Когато стойността на цикъла, i, достига размера на стъпката, подходящ за един от цветовете, увеличава или намалява стойността на този цвят с 1. (R, G и B се изчисляват отделно.) */
int CalcuVal (int step, int val, int i) {
if ((step) && i % step == 0) {// Ако стъпката не е нула и е време да промените стойност, if (стъпка> 0) {// увеличаване на стойността, ако стъпката е положителна … val += 1; } else if (стъпка 255) {val = 255; } else if (val <0) {val = 0; } обратна клапа; }
/* crossFade () преобразува процентните цветове в a
0-255 диапазон, след това цикли 1020 пъти, като се проверява дали стойността трябва да се актуализира всеки път, след което се записват стойностите на цвета към правилните щифтове. */
void crossFade (int color ) {// 改
// Конвертиране на 0-255 int R = (цвят [0] * 255) / 100; int G = (цвят [1] * 255) / 100; int B = (цвят [2] * 255) / 100; int Y = (цвят [3] * 255) / 100; // 改 int W = (цвят [4] * 255) /100; // 改
int stepR = изчисляване на стъпка (prevR, R);
int stepG = изчисляване на стъпка (prevG, G); int stepB = изчисляване на стъпка (prevB, B); int стъпка Y = изчисляване на стъпка (преди Y, Y); // 改 int stepW = изчисляване на стъпка (prevW, W); // 改
for (int i = 0; i <= 1020; i ++) {redVal = изчисляваVal (stepR, redVal, i); grnVal = изчисляваVal (stepG, grnVal, i); bluVal = изчисляваVal (stepB, bluVal, i); ylwVal = изчисляваVal (stepY, ylwVal, i); // 改 whiVal = изчисляваVal (stepW, whiVal, i); // 改
analogWrite (redPin, redVal); // Записване на текущи стойности в 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); // 改
забавяне (изчакване); // Пауза за „чакане“милисекунди, преди да се възобнови цикъла
if (DEBUG) {// Ако искаме сериен изход, отпечатайте го в
if (i == 0 или i % loopCount == 0) {// началото и всеки loopCount пъти 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; }} // Актуализиране на текущите стойности за следващия цикъл prevR = redVal; prevG = grnVal; prevB = bluVal; prevY = ylwVal; // 改 prevW = whiVal; // 改 забавяне (задържане); // Пауза за незадължителни милисекунди „изчакване“преди възобновяване на цикъла}
Стъпка 3: Настройте
- Вземи макета.
-
Демо на свързващите проводници, така че LED лампата да свети:
- Поставете светодиода на дъската. Поставете по -дългия край вляво, а по -късия вдясно.
- Поставете единия край на джъмперния проводник на място, което е на един ред с по -дългия край на светодиода. Поставете другия край върху секцията Digital PWM. Кодът посочва жълтите светодиоди да бъдат свързани към 10 и 5, червените към 6 и 11, сините към 8 и 13, зелените към 7 и 12 и накрая белият светодиод към 9.
- Поставете единия край на резистор в един ред с по -късия край на светодиода. Поставете другия край някъде близо.
- Поставете край на друг джъмпер проводник със същия ред с края на резистора, който не е в същия ред с по -късия край на светодиода. Поставете другия край на проводника върху реда с отрицателен заряд.
- Поставете край на още един джъмпер проводник върху реда с отрицателен заряд и поставете другия му край върху GND.
- Повторете Стъпка 2 8 пъти, тъй като искате 9 светодиода да светят
-
Поставете дъската в кутията. Няколко напомняния тук:
- Използвах захранване. Създайте малка дупка за проводниците си, като използвате помощен нож, за да преминете през кутията и да се свържете към дъската.
- Уверете се, че кутията е една отворена страна. Кутията за обувки вече има една отворена страна. Ако кутията е напълно затворена, отрежете едната страна на кутията, за да направите отворено пространство.
- Покрийте страната с нищо с хартия. Това е за LED светлините да светят през хартия.
Препоръчано:
Как да си направим LED куб - LED куб 4x4x4: 3 стъпки
Как да си направим LED куб | LED Cube 4x4x4: LED Cube може да се мисли като LED екран, в който обикновените 5 мм светодиоди играят ролята на цифрови пиксели. LED кубът ни позволява да създаваме изображения и модели, като използваме концепцията за оптичен феномен, известен като устойчивост на зрението (POV). Така
Говорител за настроение- мощен говорител за възпроизвеждане на музика на настроение въз основа на околната температура: 9 стъпки
Mood Speaker- Мощен говорител за възпроизвеждане на музика на настроение въз основа на температурата на околната среда: Здравейте! За моя училищен проект в MCT Howest Kortrijk направих Mood Speaker, това е интелигентно Bluetooth устройство с различни сензори, LCD и WS2812b Включен светодиод. Високоговорителят възпроизвежда фонова музика въз основа на температурата, но може
Магически куб или куб за микроконтролер: 7 стъпки (със снимки)
Магически куб или куб за микроконтролер: В тази инструкция ще ви покажа как да направите магически куб от дефектен микроконтролер. Тази идея идва от момента, в който вземам дефектен микроконтролер ATmega2560 от Arduino Mega 2560 и направя куб .За хардуера на Magic Cube трябва да направя
Прост Arduino RGB LED куб (3x3x3): 18 стъпки (със снимки)
Прост Arduino RGB LED Cube (3x3x3): Разглеждах LED кубчета и забелязах, че повечето от тях са или твърде сложни, или скъпи. След като разгледах много различни кубчета, най -накрая реших, че моят LED куб трябва да бъде: лесен и лесен за изграждане на достъпни цени
Прост LED куб 2X2X2: 4 стъпки (със снимки)
Прост LED куб 2X2X2: Този LED куб е разработен с помощта на 8 зелени светодиода и микроконтролер Arduino Uno, докато се нуждаеше само от два резистора за управление на двете равнини, направени от по 4 светодиода. След като посетите http: //pastebin.com, можете да качите кода на адрес: http://pastebin.com/8qk