Оглавление:

Зажги меня !: 20 шагов (с картинками)
Зажги меня !: 20 шагов (с картинками)

Видео: Зажги меня !: 20 шагов (с картинками)

Видео: Зажги меня !: 20 шагов (с картинками)
Видео: Если бы сказку «Морозко» снимали в наши дни 2024, Ноябрь
Anonim
Зажги меня!
Зажги меня!
Зажги меня!
Зажги меня!
Зажги меня!
Зажги меня!
Зажги меня!
Зажги меня!

члены проектной группы

(Хевон Шин, Ынджон Ко, Чунсун И)

Что, если бы вы могли прикоснуться к свету и спроектировать его? Как бы вы себя чувствовали, если бы у вас был красивый узор из света, который вы создали сами с помощью интересной анимации? «Осветите меня» будет интересным альбомом для рисования, который касается и дизайна самого света, а также создает интересные узоры! В этом проекте есть несколько треугольников, которые образуют шестиугольная форма. Таким образом, вы можете создавать стереоскопические узоры в соответствии с тем, как вы проектируете свет! Просто нажмите на каждую деталь, и разные цвета будут градуированы, а когда цвет, который вы хотите, появится, просто ударьте по руке, которую вы нажали, и она будет продолжать красиво сиять желаемым цветом! В проекте использовалось около 312 треугольников, но он мог создать красивый свет, который хорошо сочетается с 6 треугольниками. Теперь позвольте мне показать вам, как сделать его из шести треугольников. Следуйте инструкциям, и у вас будет собственная замечательная работа!

Запасы

Аппаратное обеспечение: Arduino (я использовал arduino mega 2560), акрил (прозрачный, белый), светодиодная лента (NeoPixel), диффузор, кнопка, 4-контактный разъем, провод, монтажная плата, источник питания

Инструменты: станок для резки с лазерным наведением, 3D-принтер

Шаг 1: Сделаем это

Давайте сделаем это!
Давайте сделаем это!
Давайте сделаем это!
Давайте сделаем это!
Давайте сделаем это!
Давайте сделаем это!

Давайте сделаем этот милый шестиугольник вместе со мной!

Light Me Up состоит из 312 треугольников, но даже 6 треугольников могут создать прекрасный свет. Если вы хотите сделать это в большем масштабе, вы можете сделать это, обратившись к приложенному ниже файлу.

Шаг 2: Подготовка материала

Подготовка материалов
Подготовка материалов

Шаг 3: резка акрила

Резка акрила
Резка акрила
Резка акрила
Резка акрила
Резка акрила
Резка акрила
Резка акрила
Резка акрила

Используйте лазерный резак, чтобы вырезать переднюю и заднюю часть каждой части. Цвет акрила на обратной стороне может быть любым, но обязательно используйте прозрачный акрил, потому что передняя часть должна быть затемнена! Если вы используете другой цветной акрил, кроме прозрачного, вы не будете хорошо видеть свет.

Шаг 4: сделайте стороны с помощью 3D-принтеров

Сделайте стороны с помощью 3D-принтеров
Сделайте стороны с помощью 3D-принтеров
Сделайте стороны с помощью 3D-принтеров
Сделайте стороны с помощью 3D-принтеров
Сделайте стороны с помощью 3D-принтеров
Сделайте стороны с помощью 3D-принтеров

Пришло время сделать стороны каждой детали. Давайте сделаем это! Файлы 3D-моделирования сбоку прикреплены ниже. Мы использовали PLA для изготовления боковин. PLA прочнее и меньше сжимается, чем ABS, поэтому рекомендуется использовать волокна PLA.

Шаг 5: съемка

Съемки фильма
Съемки фильма
Съемки фильма
Съемки фильма
Съемки фильма
Съемки фильма

Теперь давайте поместим светорассеивающую пленку на акрил спереди. Если на него наклеить пленку, он растекается и светится намного красивее. Сначала вырежьте пленку в форме треугольника. (Лучше обрезать пленку большего размера, чем разрезанный акрил). Если вы хотите дать здесь чаевые, вы можете использовать карту, чтобы толкнуть ее, чтобы ее можно было аккуратно приклеить!

Шаг 6: прикрепите светодиодную ленту + пайка светодиодной ленты (NeoPixel) с помощью проводов

Крепление светодиодной ленты + пайка светодиодной ленты (NeoPixel) с помощью проводов
Крепление светодиодной ленты + пайка светодиодной ленты (NeoPixel) с помощью проводов
Крепление светодиодной ленты + пайка светодиодной ленты (NeoPixel) с помощью проводов
Крепление светодиодной ленты + пайка светодиодной ленты (NeoPixel) с помощью проводов
Крепление светодиодной ленты + пайка светодиодной ленты (NeoPixel) с помощью проводов
Крепление светодиодной ленты + пайка светодиодной ленты (NeoPixel) с помощью проводов
Крепление светодиодной ленты + пайка светодиодной ленты (NeoPixel) с помощью проводов
Крепление светодиодной ленты + пайка светодиодной ленты (NeoPixel) с помощью проводов

Если вы так хорошо паяли светодиодную ленту, самое время надеть светодиодную ленту сзади. Сначала прикрепите к обратной стороне светодиодной ленты клеевой пистолет или двусторонний скотч. И сначала удалите провода с обеих сторон паяльной проволоки через отверстия с обеих сторон. Наконец, прикрепите светодиодную ленту к задней части акрила и все готово!

Пора паять! подготовьте светодиодные ленты, 4-контактные разъемы (коннектор или провода) и то, что вам нужно для пайки. Я использовал светодиоды в трех частях. Вы можете использовать один или два светодиода, если хотите, но я рекомендую использовать три. Когда все материалы готовы, припаяйте провода в обеих линиях передачи данных, линиях 5 В и линиях заземления светодиодной ленты.

Шаг 7: Пайка тактового переключателя с проводами

Тактовый переключатель для пайки с проводами
Тактовый переключатель для пайки с проводами
Тактовый переключатель для пайки с проводами
Тактовый переключатель для пайки с проводами

Шаг 8: Сборка - вставьте болт сбоку = ①

Сборка - Вставьте болт сбоку = ①
Сборка - Вставьте болт сбоку = ①
Сборка - Вставьте болт сбоку = ①
Сборка - Вставьте болт сбоку = ①

Теперь это очень простая часть! Поместите по одному болту на каждую из трех сторон, напечатанных на 3D-принтере. Причина, по которой с помощью кнопки болта можно будет сделать с помощью конструкционных болтов и гаек. Когда изделие будет готово, я кладу его в футляр и заканчиваю гайкой.

Шаг 9: прикрепите Ⓛⓣ к Ⓒ = ②

Присоедините Ⓛⓣ к Ⓒ = ②
Присоедините Ⓛⓣ к Ⓒ = ②
Присоедините Ⓛⓣ к Ⓒ = ②
Присоедините Ⓛⓣ к Ⓒ = ②

Шаг 10: Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③

Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③
Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③
Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③
Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③
Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③
Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③

Шаг 11: Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④

Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④

Если поставить болт сбоку, поставим сбоку и спереди. Лицевая сторона сделана из акрила, поэтому ее нужно наклеить специальной акриловой связкой. Если вы прикрепите акрил к обычному клею, он оставит след.

Шаг 12: прикрепите Ⓢ к Ⓓ = ⑤

Прикрепите Ⓢ к Ⓓ = ⑤
Прикрепите Ⓢ к Ⓓ = ⑤
Прикрепите Ⓢ к Ⓓ = ⑤
Прикрепите Ⓢ к Ⓓ = ⑤

Шаг 13: Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥

Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥
Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥
Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥
Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥
Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥
Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥

Шаг 14: Завершите сборку детали

Полная сборка детали
Полная сборка детали
Полная сборка детали
Полная сборка детали
Полная сборка детали
Полная сборка детали

Шаг 15: Рабочий вид проекта

Image
Image

Шаг 16: NeoPixel, разводка разъемов

NeoPixel, Разводка разъемов
NeoPixel, Разводка разъемов
NeoPixel, Разводка разъемов
NeoPixel, Разводка разъемов
NeoPixel, Разводка разъемов
NeoPixel, Разводка разъемов

Шаг 17: Подключение NeoPixel и Arduino

Подключение NeoPixel и Arduino
Подключение NeoPixel и Arduino

Шаг 18: запрограммируйте Arduino

extern volatile unsigned long timer0_millis;

#включают

#define MODEBTNNUM 3 int ani_mode = 0; беззнаковые длинные preM1, preM2, preM3;

void setup () {

Wire.begin (); для (int я = 0; я <MODEBTNNUM; я ++) {pinMode (я + 2, INPUT_PULLUP); } //Serial.begin(9600); }

void loop () {

for (int i = 0; i <MODEBTNNUM; i ++) {если (! digitalRead (i + 2)) ani_mode = i + 1; } для (int я = 0; я <6; я ++) {Wire.requestFrom (я + 1, 1); в то время как (Wire.available ()) {int x = Wire.read (); // Serial.println (x); если (x == 5) {ani_mode = 0; // Serial.println ("x = 5"); }}} /////////////////////////////////////////////// /////// if (ani_mode == 0) {for (int i = 1; i 3000) {preM1 = current1; для (int я = 1; я 5000) {preM2 = current2; для (int я = 1; я 3000) {preM3 = current3; // timer0_millis = 0; // preM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println ("сброс таймера"); для (int я = 1; я <7; я ++) {Wire.beginTransmission (я); Wire.write (ani_mode); //Serial.println("3000 "); Wire.endTransmission (i); }}}}

Шаг 19:

extern volatile unsigned long timer0_millis;

#включают

#include #define PIN 12 #define NUMPIXELS 162 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int число = ЧИСЛО / 3; const int slaveNum = 1; int colors [число] [3]; int hue [число]; int sat [число]; int яркий [число]; int pNumber = 0; int gValue [число] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; const int btnPin [число] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59}; int btnState [число]; boolean btnMode; int hueV [число] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; # включить # определить BTNNUM 1 int f_v = 1; беззнаковый длинный preMillis1; беззнаковый длинный preM; int ani_mode = 0; int ani2_Counter = 0; int counter = 0; /////////////////////////////////////////// void setup () {Wire. начать (slaveNum); Wire.onRequest (requestEvent); Wire.onReceive (receiveEvent); для (int я = 0; я <число; я ++) {pinMode (btnPin [я], INPUT_PULLUP); } //Serial.begin(9600); strip.begin (); } ///////////////////////////////////////////

void loop () {

если (f_v == 1) {для (int я = 0; я <число; я ++) {оттенок [я] = 50; sat = 95; яркий = 100; } f_v = 0; } ////////////////////////////////////// // 입력 체크: 멈춤 신호 보내기 btnMode = ложный; for (int i = 0; i <num; i ++) {если (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); ////////////////////////////////////// switch (ani_mode) {case 0: ani0 (); перерыв; случай 1: ani1 (); ani_mode = 0; ani2_Counter = 0; перерыв; случай 2: ani2_Counter = 1; ani_mode = 0; перерыв; случай 3: ani3 (); ani_mode = 0; ani2_Counter = 0; перерыв; по умолчанию: readyState (); перерыв; } если (ani2_Counter == 1) {ani2 (); } setPixels (число); }

///////////////////////////////////////////

недействительным receiveEvent (int howMany) {int x = Wire.read (); if (x == 5) {// Serial.println ("получено 5"); ani_mode = 0; } ani_mode = x; // Serial.println (ani_mode); } /////////////////////////////////////////// void requestEvent () {

if (btnMode == true) {

Wire.write (5); // Serial.println ("5"); } еще {Wire.write (0); }

}

void ani0 () {

// Serial.println ("0"); }

void ani1 () {

// Serial.println ("1"); если (pNumber == 0) {для (int я = 0; я <число; я ++) {яркий [я] = 0; gValue = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; для (int a = 0; a <2; a ++) {оттенок [a1 [a] = 100; сб [a1 [a] = 95; яркий [a1 [a] = 100; } для (int b = 0; b <2; b ++) {оттенок [b1 = 200; сб [b1 = 95; яркий [b1 = 100; } для (int c = 0; c <2; c ++) {оттенок [c1 [c] = 300; сб [c1 [c] = 95; яркий [c1 [c] = 100; } // Serial.println ("0"); } else if (pNumber == 1) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int a2 = {21, 22, 34, 35, 37, 46, 47, 51}; // int b2 = {}; // int c2 = {}; int d2 = {36, 48, 49, 50}; для (int a = 0; a <8; a ++) {оттенок [a2 [a] = 26; сб [a2 [a] = 95; яркий [a2 [a] = 100; } для (int d = 0; d <4; d ++) {оттенок [d2 [d] = 63; сб [d2 [d] = 95; яркий [d2 [d] = 100; } // Serial.println ("1"); } else if (pNumber == 2) {// шаблон гигантского куба для (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // желтый 06 for (int a = 0; a <6; a ++) {hue [a14 [a] = 35; сб [a14 [a] = 95; яркий [a14 [a] = 100; }} else if (pNumber == 3) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // желтый для (int a = 0; a <6; a ++) {hue [a3 [a] = 53; сб [a3 [a] = 95; яркий [a3 [a] = 100; }} else if (pNumber == 4) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int a4 = {34, 35}; // желтый int b4 = {47}; // синий int c4 = {48}; // фиолетовый

для (int a = 0; a <2; a ++) {оттенок [a4 [a] = 53; сб [a4 [a] = 95; яркий [a4 [a] = 100; }

для (int b = 0; b <1; b ++) {оттенок [b4 = 210; сб [b4 = 95; яркий [b4 = 100; } для (int c = 0; c <1; c ++) {оттенок [c4 [c] = 307; сб [c4 [c] = 95; яркий [c4 [c] = 100; }} else if (pNumber == 5) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int a5 = {34, 35, 46, 47, 48, 49};

для (int a = 0; a <6; a ++) {оттенок [a5 [a] = 100; сб [a5 [a] = 95; яркий [a5 [a] = 100; }} else if (pNumber == 6) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // желтый для (int a = 0; a <6; a ++) {hue [a6 [a] = 53; сб [a6 [a] = 95; яркий [a6 [a] = 100; }} else if (pNumber == 7) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // фиолетовый for (int c = 0; c <6; c ++) {hue [c7 [c] = 307; сб [c7 [c] = 95; яркий [c7 [c] = 100; }} else if (pNumber == 8) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // фиолетовый for (int c = 0; c <6; c ++) {оттенок [c8 [c] = 307; сб [c8 [c] = 95; яркий [c8 [c] = 100; }} else if (pNumber == 9) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // фиолетовый for (int c = 0; c <6; c ++) {оттенок [c9 [c] = 307; сб [c9 [c] = 95; яркий [c9 [c] = 100; }} else if (pNumber == 10) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // фиолетовый for (int c = 0; c <6; c ++) {оттенок [c10 [c] = 307; сб [c10 [c] = 95; яркий [c10 [c] = 100; }} else if (pNumber == 11) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // фиолетовый for (int c = 0; c <6; c ++) {оттенок [c11 [c] = 307; сб [c11 [c] = 95; яркий [c11 [c] = 100; }} else if (pNumber == 12) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // фиолетовый for (int c = 0; c <6; c ++) {оттенок [c12 [c] = 307; сб [c12 [c] = 95; яркий [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {яркий = 0; gValue = 1; } int a13 = {34, 35}; // желтый int b13 = {47}; // синий int c13 = {48}; // фиолетовый for (int a = 0; a <2; a ++) {hue [a13 [a] = 53; сб [a13 [a] = 95; яркий [a13 [a] = 100; } для (int b = 0; b <1; b ++) {оттенок [b13 = 210; сб [b13 = 95; яркий [b13 = 100; } для (int c = 0; c <1; c ++) {оттенок [c13 [c] = 307; сб [c13 [c] = 95; яркий [c13 [c] = 100; }} pNumber = pNumber + 1;

if (pNumber == 14) {

pNumber = 0; }}

void ani2 () {

// Serial.println ("2"); беззнаковый длинный curM = millis ();

if (curM - preM> = 10) {

preM = curM; для (int я = 0; я <число; я ++) {если (оттенок [я] = 360) {gValue [я] = -1; } оттенок [я] = оттенок [я] + gValue [я]; } counter ++; if (counter == 360) {// Serial.print ("counter:"); // Serial.println (counter); // Serial.println (curM); счетчик = 0; ani2_Counter = 0; }}}

void ani3 () {

// Serial.println ("3"); } /////////////////////////////////////////// void readyState () {/ / Serial.println («готово»); } /////////////////////////////////////////// void btnEvent (int b_interval) {unsigned long curMillis1 = millis ();

для (int i = 0; i <num; i ++) {btnState = digitalRead (btnPin ); }

if (curMillis1 - preMillis1> b_interval) {

preMillis1 = curMillis1; для (int я = 0; я = 360) {hueV [я] = -1; } иначе, если (оттенок [я] <= 0) {hueV [я] = 1; } оттенок [я] = оттенок [я] + оттенок V [я]; яркий = 100; }}}} /////////////////////////////////////////// void setPixels (int k) {для (int i = 0; i <k; i ++) {H2R_HSBtoRGB (оттенок , sat , яркий , цвета ); int num1 = я * 3; strip.setPixelColor (число1, цвета [0], цвета [1], цвета [2]); strip.setPixelColor (число1 + 1, цвета [0], цвета [1], цвета [2]); strip.setPixelColor (num1 + 2, colors [0], colors [1], colors [2]); } strip.show (); }

Шаг 20: выкройки

Выкройки!
Выкройки!
Выкройки!
Выкройки!

В этом проекте есть несколько треугольников, образующих шестиугольную форму. Таким образом, вы можете создавать стереоскопические узоры в соответствии с тем, как вы проектируете свет! Просто нажмите на каждую деталь, и различные цвета будут переходить в градацию, а когда появится нужный цвет, просто ударьте по нажатой руке, и она продолжит красиво сиять желаемым цветом!

Рекомендуемые: