Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

DIY Калейдоскоп-бесконечное зеркало: потрясающий LED-дисплей

Компоненты и материалы

Инструменты

Программное обеспечение

О проекте

Это кросс между калейдоскопом и бесконечным зеркалом! При вращении зеркала меняется цветовая гамма подсветки. Проект построен на готовых зеркале и рамке, а также на плате Arduino 101 со встроенным акселерометром/гироскопом (Intel Curie), который определяет угол наклона и управляет лентой.

Важно: Электроника аналогична проекту «Holiday Shadow Theater» — Arduino 101, LED-лента, батарейный блок. Повышающий регулятор за $4 позволяет питать всё от одного короба с 3х АА. Можно обойтись без регулятора, используя 9V батарею для Arduino.

Часть 1: Сборка зеркала

  1. Вырежьте из пенопласта квадрат 12×12 дюймов, отметьте центр.
  2. Начертите идеальный круг радиусом 5.25″ в центре.
  3. Аккуратно вырежьте круг острым ножом — этот край будет виден в конечном изделии.
  4. Выберите лучшую сторону, положите её вниз на чистую поверхность.
  5. Вырежьте полосу пенопласта шириной 0.5″ и длиной ~36″ (можно склеить из кусков).
  6. На полосе сделайте вертикальные надрезы каждые 2″ (не режьте насквозь) — это позволит согнуть её в круг.
  7. Переверните полосу, приклейте горячим клеем LED-ленту вдоль всей длины.
  8. Согните полосу в круг по надрезам.
  9. Положите кольцо из ленты в вырезанное отверстие. Лента будет длиннее — подрежьте лишнее (~6 светодиодов), чтобы кольцо было чуть больше отверстия.
  10. Приклейте кольцо к плоской стороне квадрата (той, что вверху), прижимая к краю отверстия. Оставьте зазор ~0.25″ от края квадрата для пластиковых 스페йсеров рамы.
  11. Опционально: наклейте зеркальную пленку на стекло рамы по инструкции (очистите стекло, используйте мыльный раствор для удаления пузырей). Пленка создает более сильный эффект и скрывает светодиоды. Стекло вставляйте в раму пленкой вверх.
  12. Раму положите вниз стеклом. На стекло положите пенопластовую основу «хорошей» стороной вниз (LED-кольцо вверх). Добавьте два 스페йсера из комплекта рамы, затем зеркало лицевой стороной вниз. Провода должны выходить за рамой. Если зеркало слишком плотно сидит — аккуратно вырежьте паз для проводов в крае рамы.
  13. При необходимости добавьте картонную подкладку из комплекта или зафиксируйте зеркало защелками рамы. Механическая часть готова!
DIY Калейдоскоп-бесконечное зеркало: потрясающий LED-дисплей

Часть 2: Электроника

  1. Возьмите отрезанные 6 светодиодов с конца ленты, отрежьте шлейф с запасом ~1 см, зачистите концы проводов.
  2. Распаяйте гнутые пины с регулятора напряжения, припаяйте два из них к зеленому и желтому проводам ленты (для удобного подключения к пинам Arduino).
  3. Красный провод ленты припаяйте к входу VIN регулятора. В GND и VOUT регулятора впаяйте прямые пины.
  4. Подключите короб для батареек к male-джеку: красный на (+), черный на (-).
  5. Подключите female-джек к проводам входа ленты (выходят из-за зеркала): желтый на (-), красный на (+).
  6. Соедините всё с Arduino 101:
    • Зеленый провод (данные ленты) → Pin 6
    • Желтый провод (GND ленты) → GND рядом с pin 13
    • GND регулятора → GND Arduino
    • VOUT регулятора → Vin Arduino (не перепутайте!)
  7. Соедините джеки: батарейный блок → female-джек ленты. Всё подключено!
  8. Закрепите Arduino 101 на задней стороне зеркала (орентация параллельно любой стороне) на липучке/двустороннем скотче/клее. Батарейный блок рядом, провода зафиксируйте. Загрузите скетч через USB и Arduino IDE (или Web Editor).
DIY Калейдоскоп-бесконечное зеркало: потрясающий LED-дисплей

Проверка: При вращении зеркала цвета меняются в зависимости от угла. В одном положении — выключено, в другом — «бегущие огни» последнего цвета. Код открыт для модификаций.

DIY Калейдоскоп-бесконечное зеркало: потрясающий LED-дисплей
Важно для постоянной установки: Можно использовать блок питания 3.5–5V вместо батареек. Напряжение выше 5V (например, 9V «Крона») может сжечь ленту!

Код (основной скетч)

/* Copyright (c) 2016 Intel Corporation. All rights reserved.
   Arduino 101 "Infinity Mirror."
   Rotation angle changes Neopixel strip colors.
   Uses Adafruit Neopixel library.
   Install Curie Core for Arduino 101: https://www.arduino.cc/en/Guide/Arduino101
*/
#include "CurieIMU.h"
#include <Adafruit_NeoPixel.h>

#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(54, PIN, NEO_GRB + NEO_KHZ800);

int tr = 0, tg = 0, tb = 0; // target color
int r = 0, g = 0, b = 0;    // current color
int rawX = 0, rawY = 0;
float angle = 0.0;

void setup() {
  CurieIMU.begin();
  CurieIMU.setAccelerometerRange(2); // 2g
  strip.begin();
  strip.show(); // all off
}

void loop() {
  rawX = CurieIMU.readAccelerometer(X_AXIS);
  rawY = CurieIMU.readAccelerometer(Y_AXIS);
  int rawZ = CurieIMU.readAccelerometer(Z_AXIS);
  angle = atan2(rawX, rawY); // -3.14 to 3.14 radians

  if (abs(angle) > 2.5) { // pins down -> off
    tr = tg = tb = 0; runlights();
  }
  else if (angle > 1.5 && angle < 2.5) { // white
    tr = tg = tb = 100; runlights();
  }
  else if (angle < 1.5 && angle > 0.5) { // red
    tr = 100; tg = tb = 0; runlights();
  }
  else if (angle < 0.5 && angle > -0.5) { // green
    tr = tb = 0; tg = 100; runlights();
  }
  else if (angle < -1.5 && angle > -2.5) { // blue
    tr = tg = 0; tb = 100; runlights();
  }
  else if (angle < -0.5 && angle > -1.5) { // theater chase
    theaterChase();
  }
  else { // fallback
    tr = tg = tb = 0; runlights();
  }
}

void runlights() {
  // smooth color transition
  if (tr > r + 1) r++;
  if (tg > g + 1) g++;
  if (tb > b + 1) b++;
  if (tr < r) r--;
  if (tg < g) g--;
  if (tb < b) b--;
  for (int i = 0; i < strip.numPixels(); i++)
    strip.setPixelColor(i, r, g, b);
  strip.show();
  delay(10);
}

// Theater chase with current color
void theaterChase() {
  for (int j = 0; j < 3; j++)
    for (int q = 0; q < 3; q++) {
      for (uint16_t i = 0; i < strip.numPixels(); i += 3)
        strip.setPixelColor(i + q, r, g, b);
      strip.show(); delay(50);
      for (uint16_t i = 0; i < strip.numPixels(); i += 3)
        strip.setPixelColor(i + q, 0);
    }
}

// Color wheel helper for rainbow
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if (WheelPos < 85) return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  if (WheelPos < 170) { WheelPos -= 85; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); }
  WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

Схема

DIY Калейдоскоп-бесконечное зеркало: потрясающий LED-дисплей

Производственный процесс

  1. Калейдоскоп: от науки Брюстера к современному дизайну
  2. Наука и мастерство современных зеркал: от полированного металла к diéлектрическим покрытиям
  3. Infinity Gears: 41‑ступенчатый редуктор с периодом вращения 346 квинтиллионов лет
  4. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  5. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  6. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  7. DIY зеркальный гигрометр на Arduino: точное измерение точки росы и влажности
  8. Создание пользовательских LED-часов с будильником — видно с 12 метров
  9. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  10. Бесконечное зеркало-часы: элегантный дизайн и точное время