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

Механический тюльпан, который всегда цветет — сенсорный LED-цветок на Arduino

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

О проекте

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

Механический тюльпан, который всегда цветет — сенсорный LED-цветок на Arduino

Как это работает

Механический тюльпан, который всегда цветет — сенсорный LED-цветок на Arduino
Механический тюльпан, который всегда цветет — сенсорный LED-цветок на Arduino

Основные этапы сборки

  1. Лепестки (4 часа) — изготовление по шаблону (гипс или 3D-печать), паяка контура из латунной проволоки 1 мм, установка 5 LED и «проволочек» внутри. Все 6 лепестков должны быть идентичны.
  2. Бутон (1 час) — пайка 6 лепестков к неправильному шестиугольнику (3 внутренних, 3 внешних лепестка) с петлями из трубки 2 мм.
  3. Стебель и толкатель (1 час) — латунная трубка-стелб, внутри толкатель из проволоки 1 мм с головкой-шестиугольником. Критично: ствол должен быть идеально перпендикулярен базе и проходить через её центр.
  4. Механизм лепестков (6 часов) — соединительные стержни между головкой толкателя и штифтами на лепестках. Требует множества подгонок для плавного движения.
  5. Радужный тычинник (1 час) — 7 NeoPixel между двумя мелкими шестиугольниками, дата-цепочка, питание тонкими проводами 0,3 мм по стеблю вниз.
  6. Корни — прокладка проводов (2 часа) — 6 проводов от лепестков + 2 от NeoPixel + общий земляной провод обматывают стебель, фиксируют скотчем и суперклеем.
  7. Цветочный горшок (2 часа) — деревянный цилиндр с впадиной под электронику, отверстия под ствол и листик-сенсор.
  8. Листик-сенсор (1 час) — изготовление по технологии лепестков, без LED. Подключение к TTP223 (смещение защитного масла для контакта).
  9. Финальная сборка (2 часа) — установка цветка в горшок, подстройка длины толкателя, крепление сервопривода, подключение всей проводки к Arduino Nano.

Схема подключения к Arduino Nano

Механический тюльпан, который всегда цветет — сенсорный LED-цветок на Arduino

Программирование (1 час)

Код использует библиотеки Adafruit_NeoPixel, Adafruit_TiCoServo, SoftPWM. Реализованы режимы: сон, расцветание, зацветание, угасание, радуга. Касание листика переключает между сном и расцветанием. Цвет бутона выбирается случайно при каждом раскрытии.

Исходный код (flower.ino)

#include 
#include 
#include "SoftPWM.h"

#define NEOPIXEL_PIN A0
#define TOUCH_SENSOR_PIN 2
#define SERVO_PIN 9
#define SERVO_OPEN 1650
#define SERVO_SAFE_MIDDLE 1000
#define SERVO_CLOSED 775

#define RED 0; #define GREEN 1; #define BLUE 2
float currentRGB[] = {0,0,0};
float changeRGB[] = {0,0,0};
byte newRGB[] = {0,0,0};

#define MODE_SLEEPING 0
#define MODE_BLOOM 3
#define MODE_BLOOMING 4
#define MODE_BLOOMED 5
#define MODE_FADE 6
#define MODE_FADING 7
#define MODE_FADED 8
#define MODE_FALLINGASLEEP 9
#define MODE_RAINBOW 90

byte mode = MODE_FADED;
byte petalPins[] = {3,4,5,6,10,11};

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(7, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ400);
Adafruit_TiCoServo servo;

int servoChange = 1;
int servoPosition = SERVO_SAFE_MIDDLE;

void setup() {
  Serial.begin(115200);
  pixels.begin();
  servo.attach(SERVO_PIN, SERVO_CLOSED, SERVO_OPEN);
  pinMode(TOUCH_SENSOR_PIN, INPUT);
  attachInterrupt(digitalPinToInterrupt(TOUCH_SENSOR_PIN), _touchISR, RISING);
  randomSeed(analogRead(A7));
  SoftPWMBegin();
  pixelsUnifiedColor(pixels.Color(0,0,0));
  prepareCrossFade(140,70,0,140);
  servo.write(servoPosition);
}

int counter = 0;
byte speed = 15;

void loop() {
  boolean done = true;
  switch (mode) {
    case MODE_BLOOM:
      prepareCrossFadeBloom(500);
      changeMode(MODE_BLOOMING);
      break;
    case MODE_BLOOMING:
      done = crossFade() && done;
      done = openPetals() && done;
      done = petalsBloom(counter) && done;
      if (done) changeMode(MODE_BLOOMED);
      break;
    case MODE_FADE:
      changeMode(MODE_FADING);
      break;
    case MODE_FADING:
      done = crossFade() && done;
      done = closePetals() && done;
      done = petalsFade(counter) && done;
      if (done) changeMode(MODE_FADED);
      break;
    case MODE_FADED:
      changeMode(MODE_FALLINGASLEEP);
      break;
    case MODE_FALLINGASLEEP:
      done = crossFade() && done;
      done = closePetals() && done;
      if (done) changeMode(MODE_SLEEPING);
      break;
    case MODE_RAINBOW:
      rainbow(counter);
      break;
  }
  counter++;
  delay(speed);
}

// ... (остальные функции: changeMode, _touchISR, petalsBloom, petalsFade,
// prepareCrossFadeBloom, rainbow, openPetals, closePetals,
// pixelsUnifiedColor, prepareCrossFade, crossFade, colorWheel)
// Полный код доступен в исходнике проекта.

Не забудьте скорректировать константы SERVO_OPEN и SERVO_CLOSED под вашу механику.

Механический тюльпан, который всегда цветет — сенсорный LED-цветок на Arduino

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

  1. Латунь: состав, история и современное производство
  2. Создание портативного ёмкостного сенсорного пианино на Arduino: пошаговое руководство
  3. Механическая тракция (mechanical linkage): как жесткие штанги управляют устройствами
  4. Производство точных механических компонентов: полное руководство
  5. Преимущества механического металлопресса (Ironworker) для точной металлообработки
  6. Механические прессы: ключевые применения и преимущества
  7. Механические прессы: функции, типы и промышленные применения
  8. Механические подшипники: функция, типы и применение
  9. Основы механического прессового станка: подробное руководство
  10. Подшипники: полное руководство по типам, функциям и применению