프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

LED 컵받침 만들기 (with iplatz)

2014-11-05 15:58:54

개요

개요




위 사진에서 컵을 받치고 있는 것은 LED 컵받침이라고 하는데 요즘 호프집에서 유행이라고 한다.
말을 듣고 사진으로 검색하니 생각보다 이쁘길래 무작정 따라 만들어 보았다.

시중 제품보다는 많이 모양도 안나고 부실해 보이지만 색감 만큼은 시중 제품을 능가하는 선명한 색감을 보여준다.




컵받침을 gif파일로 만든 모습




재료는 퍼먹는 아이스크림의 뚜껑과 불투명한 재질의 플라스틱을 사용했고,
만들면서 제일 어려웠던 부분을 얇은 두께안에 모든것을 다 넣어야 한다는 점이 제일 어려웠다.
새삼 소형화의 중요성을 느끼게 해준 프로젝트가 아닌가 싶다.

아두이노 보드는 Mini나 웨어러블 디바이스에 사용되는 lilyPad나 Flora를 사용할 수 있었으나
최대한 납땜을 줄이기 위해서 iplatz를 사용하였다.

동영상


필요한 사전 지식

NeoPixel


부품 목록

NO 부품명 수량 상세설명
1 iPlatz A1620 1 아두이노
2 NeoPixel 4 stick형, adafruit
3 점퍼케이블    
4 리튬 배터리 1 3.7V
5 스위치 1  
6 저항 1 330옴 저항

부품명 iPlatz Neopixel 점퍼케이블 리튬 배터리 스위치 저항
부품 사진  

하드웨어 making

브레드 보드


전자 회로도


구성 하드웨어

가운데에는 아두이노(iPlatz)를 두고 NeoPixel(Stick형)을 사각형으로 납땜하여 구성하였다.




불투명 소재의 플라스틱을 글루건으로 고정하고 포맥스를 이용하여 바닥을 덮을 뚜껑을 만들었다.
옆면에는 LED를 켜고 끄고 제어할 스위치가 들어갈 구멍을 만들어 준다.




소프트웨어 coding

#include <Adafruit_NeoPixel.h>

#define PIN 8
int pushButton = 7;

boolean onoff = false;
int prevState = 0;
int buttonState;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(32, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.begin(9600);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  pinMode(pushButton, INPUT);
}

void loop() {
  buttonState = digitalRead(pushButton);
  if(prevState == 0 && buttonState == 1) {
    onoff = true;
    prevState = 1;
  }
  Serial.println(onoff);
  if(onoff) {
    delay(1000);
    rainbowCycle(20);
  }
  else {
    for(uint16_t i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i,strip.Color(0, 0, 0));
      strip.show();
    }
    delay(10);
  }
}

void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i< strip.numPixels(); i++) {
      buttonState = digitalRead(pushButton);
      if(buttonState == 0)
        strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
      else if(buttonState == 1) {
        prevState = 0;
        onoff = false;
      }
    }
    strip.show();
    delay(wait);
  }
}

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

소스의 내용자체는 adafruit의 NeoPixel예제를 사용하였다.
예제에서 무지개 패턴을 가져와서 스위치를 누르면 반복하여 작동하고 다시 누르면 꺼지게 만들었다.
튜토리얼에 올라온 NeoPixel 사용하기를 참조하면 소스내용을 쉽게 이해할 수 있다.


수박쨈

아두이노,NeoPixel,아이플라츠,iPlatz,LED,컵받침만들기