Оглавление:
- Запасы
- Шаг 1: Сделаем это
- Шаг 2: Подготовка материала
- Шаг 3: резка акрила
- Шаг 4: сделайте стороны с помощью 3D-принтеров
- Шаг 5: съемка
- Шаг 6: прикрепите светодиодную ленту + пайка светодиодной ленты (NeoPixel) с помощью проводов
- Шаг 7: Пайка тактового переключателя с проводами
- Шаг 8: Сборка - вставьте болт сбоку = ①
- Шаг 9: прикрепите Ⓛⓣ к Ⓒ = ②
- Шаг 10: Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③
- Шаг 11: Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
- Шаг 12: прикрепите Ⓢ к Ⓓ = ⑤
- Шаг 13: Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥
- Шаг 14: Завершите сборку детали
- Шаг 15: Рабочий вид проекта
- Шаг 16: NeoPixel, разводка разъемов
- Шаг 17: Подключение NeoPixel и Arduino
- Шаг 18: запрограммируйте Arduino
- Шаг 19:
- Шаг 20: выкройки
Видео: Зажги меня !: 20 шагов (с картинками)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
члены проектной группы
(Хевон Шин, Ынджон Ко, Чунсун И)
Что, если бы вы могли прикоснуться к свету и спроектировать его? Как бы вы себя чувствовали, если бы у вас был красивый узор из света, который вы создали сами с помощью интересной анимации? «Осветите меня» будет интересным альбомом для рисования, который касается и дизайна самого света, а также создает интересные узоры! В этом проекте есть несколько треугольников, которые образуют шестиугольная форма. Таким образом, вы можете создавать стереоскопические узоры в соответствии с тем, как вы проектируете свет! Просто нажмите на каждую деталь, и разные цвета будут градуированы, а когда цвет, который вы хотите, появится, просто ударьте по руке, которую вы нажали, и она будет продолжать красиво сиять желаемым цветом! В проекте использовалось около 312 треугольников, но он мог создать красивый свет, который хорошо сочетается с 6 треугольниками. Теперь позвольте мне показать вам, как сделать его из шести треугольников. Следуйте инструкциям, и у вас будет собственная замечательная работа!
Запасы
Аппаратное обеспечение: Arduino (я использовал arduino mega 2560), акрил (прозрачный, белый), светодиодная лента (NeoPixel), диффузор, кнопка, 4-контактный разъем, провод, монтажная плата, источник питания
Инструменты: станок для резки с лазерным наведением, 3D-принтер
Шаг 1: Сделаем это
Давайте сделаем этот милый шестиугольник вместе со мной!
Light Me Up состоит из 312 треугольников, но даже 6 треугольников могут создать прекрасный свет. Если вы хотите сделать это в большем масштабе, вы можете сделать это, обратившись к приложенному ниже файлу.
Шаг 2: Подготовка материала
Шаг 3: резка акрила
Используйте лазерный резак, чтобы вырезать переднюю и заднюю часть каждой части. Цвет акрила на обратной стороне может быть любым, но обязательно используйте прозрачный акрил, потому что передняя часть должна быть затемнена! Если вы используете другой цветной акрил, кроме прозрачного, вы не будете хорошо видеть свет.
Шаг 4: сделайте стороны с помощью 3D-принтеров
Пришло время сделать стороны каждой детали. Давайте сделаем это! Файлы 3D-моделирования сбоку прикреплены ниже. Мы использовали PLA для изготовления боковин. PLA прочнее и меньше сжимается, чем ABS, поэтому рекомендуется использовать волокна PLA.
Шаг 5: съемка
Теперь давайте поместим светорассеивающую пленку на акрил спереди. Если на него наклеить пленку, он растекается и светится намного красивее. Сначала вырежьте пленку в форме треугольника. (Лучше обрезать пленку большего размера, чем разрезанный акрил). Если вы хотите дать здесь чаевые, вы можете использовать карту, чтобы толкнуть ее, чтобы ее можно было аккуратно приклеить!
Шаг 6: прикрепите светодиодную ленту + пайка светодиодной ленты (NeoPixel) с помощью проводов
Если вы так хорошо паяли светодиодную ленту, самое время надеть светодиодную ленту сзади. Сначала прикрепите к обратной стороне светодиодной ленты клеевой пистолет или двусторонний скотч. И сначала удалите провода с обеих сторон паяльной проволоки через отверстия с обеих сторон. Наконец, прикрепите светодиодную ленту к задней части акрила и все готово!
Пора паять! подготовьте светодиодные ленты, 4-контактные разъемы (коннектор или провода) и то, что вам нужно для пайки. Я использовал светодиоды в трех частях. Вы можете использовать один или два светодиода, если хотите, но я рекомендую использовать три. Когда все материалы готовы, припаяйте провода в обеих линиях передачи данных, линиях 5 В и линиях заземления светодиодной ленты.
Шаг 7: Пайка тактового переключателя с проводами
Шаг 8: Сборка - вставьте болт сбоку = ①
Теперь это очень простая часть! Поместите по одному болту на каждую из трех сторон, напечатанных на 3D-принтере. Причина, по которой с помощью кнопки болта можно будет сделать с помощью конструкционных болтов и гаек. Когда изделие будет готово, я кладу его в футляр и заканчиваю гайкой.
Шаг 9: прикрепите Ⓛⓣ к Ⓒ = ②
Шаг 10: Сборка - используйте Ⓦ и Ⓝ, чтобы объединить ① и ② = ③
Шаг 11: Сборка - прикрепите Ⓐⓔ и ③ с помощью акриловой связки = ④
Если поставить болт сбоку, поставим сбоку и спереди. Лицевая сторона сделана из акрила, поэтому ее нужно наклеить специальной акриловой связкой. Если вы прикрепите акрил к обычному клею, он оставит след.
Шаг 12: прикрепите Ⓢ к Ⓓ = ⑤
Шаг 13: Сборка - Объедините ④ и ⑤ Используя Ⓦ и Ⓝ = ⑥
Шаг 14: Завершите сборку детали
Шаг 15: Рабочий вид проекта
Шаг 16: NeoPixel, разводка разъемов
Шаг 17: Подключение 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: выкройки
В этом проекте есть несколько треугольников, образующих шестиугольную форму. Таким образом, вы можете создавать стереоскопические узоры в соответствии с тем, как вы проектируете свет! Просто нажмите на каждую деталь, и различные цвета будут переходить в градацию, а когда появится нужный цвет, просто ударьте по нажатой руке, и она продолжит красиво сиять желаемым цветом!
Рекомендуемые:
Зажги Гэндальфа Белый Посох: 9 шагов
Зажги Гэндальфа Белого Посоха: я всегда хотел Гэндальфа Белого Посоха с тех пор, как смотрел «Властелин колец». Я нашел дизайн для одного на Thingivers.com. Используя Tinkercad, я изменил дизайн, чтобы он загорелся
Ремонтник для грустных кошек, Игрушка для кошек "Поймай меня" - школьный проект: 3 шага
Sad Cat Fixer, Catch-Me Cat Toy - школьный проект: Вот наш продукт, это интерактивная игрушечная мышь: Catch-Me Cat Toy. Вот список проблем, с которыми сталкиваются многие кошки в нашем обществе: Кошки в наши дни становятся малоподвижными и подавленными, им нечего делать. Большинство владельцев заняты работой или учебой, а ваше
Тестирование датчиков температуры - какой из них для меня ?: 15 шагов (с изображениями)
Тестирование датчиков температуры - какой из них для меня ?: Один из первых датчиков, который хотят опробовать новички в области физических вычислений, - это датчик для измерения температуры. Четыре самых популярных датчика - это TMP36, который имеет аналоговый выход и требует аналого-цифрового преобразователя, DS18B20, wh
Лети меня в небо на спутниковой фотографии .: 14 шагов
Fly Me to the Sky on the Satellite Photo. Давайте сделаем виртуальный опыт, на который он смотрит на спутниковую фотографию с самолета
USB Thumb Drive Zippo Lighter Case Mod (Карманный конкурс! ГОЛОСОВАТЬ ЗА МЕНЯ!): 7 шагов
USB-накопитель Zippo Lighter Case Mod (Карманный конкурс! ГОЛОСОВАТЬ ЗА МЕНЯ!): Устали от скучно выглядящего USB-накопителя? Приправьте его этим модом на зажигалку Zippo