読者です 読者をやめる 読者になる 読者になる

モノクロタイム

I'm from the future!

NeoPixelとGemmaを使って卒業式用のイヤリングを作った(2017/03/03追記)

Arduino 電子工作

こんにちは,れいじです.

就職前に住む家を見つけるため,東京に滞在しています.

さて,以前スイッチサイエンスでこんなものを買っていました.(詳しくは前の記事をどうぞ)

GEMMA

GEMMA

NeoPixel Ring - 12連フルカラーシリアルLED

NeoPixel Ring - 12連フルカラーシリアルLED

reiji1020.hatenablog.com

こちらを使って卒業式に付けるアクセサリーを作りたかったので,こちらの記事を参考にしながら,プログラムをGemmaに書き込むことにしました.

dotstud.io

ギャル電さん.超イケてますよね!

読み替え

私が購入したNeoPixelは16連ではなく12連なので,配線部分の読み替えが必要でした.

f:id:yomoyamareiji:20170222154709p:plain

(配線図作るのむずかしい・・・)

Gemma NeoPixel
D0 IN
GND GND
VOUT PWR

ArduinoIDEの導入やライブラリなどは上の記事の通りに進めるとよいです.あ,「Adafruit Neopixel by Adafruit」の部分は画像中では違う場所に赤枠がついているようなので注意.

動作確認

サンプルプログラムでは青と黄色にしか色が変わらなかったので,もうちょっとカラフルにしてみました.

f:id:yomoyamareiji:20170222153808j:plain

青・黄色・水色・緑・紫・赤・ピンク・黄緑に光ります.各色が順番に光ります.

コード

// Low power NeoPixel earrings example.  Makes a nice blinky display
// with just a few LEDs on at any time...uses MUCH less juice than
// rainbow display!
 
#include <Adafruit_NeoPixel.h>
 
#define PIN 0
 
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(24, PIN);
 
uint8_t  mode   = 0, // Current animation effect
         offset = 0; // Position of spinny eyes
uint32_t color  = 0xffae00; // Start red
uint32_t prevTime;
uint32_t colors[] = {0xff0000,0xff8000,0xffff00,0x00ff00,0x00ffff,0x0000ff,0x7f00ff,0xff00ff};
uint8_t colorid = 0;
 
void setup() {
  pixels.begin();
  pixels.setBrightness(60); // 1/3 brightness
  prevTime = millis();
}
 
void loop() {
  uint8_t  i;
  uint32_t t;
 
  switch(mode) {
 
   case 0: // Random sparks - just one LED on at a time!
    i = random(24);
    pixels.setPixelColor(i, color);
    pixels.show();
    delay(10);
    pixels.setPixelColor(i, 0);
    break;
 
   case 1: // Spinny wheels (8 LEDs on at a time)
    for(i=0; i<12; i++) {
      uint32_t c = 0;
      if(((offset + i) & 5) < 2) c = color; // 4 pixels on...
      pixels.setPixelColor(   i, c); // First eye
      pixels.setPixelColor(23-i, c); // Second eye (flipped)
    }
    pixels.show();
    offset++;
    delay(50);
    break;
  }
 
  t = millis();
  if((t - prevTime) > 8000) {      
    mode++;                        
    if(mode > 1) {                 
      mode = 0;                    
      colorid = random(8);
      //if you want to loop through colors, uncomment line 58;
      colorid = offset % 8; 
      color = colors[colorid];
    }
    for(i=0; i<24; i++) pixels.setPixelColor(i, 0);
    prevTime = t;
  }
}

実はまだイヤリングの金具自体は付けられていないんですが・・・汗

あとは実家で金具を付けるだけです!完成が楽しみですね.

ではでは〜

【2017/03/03追記】

イヤリングの金具つけました!かわいい!

f:id:yomoyamareiji:20170303223027j:plain

Arduinoをはじめよう 第3版 (Make:PROJECTS)

Arduinoをはじめよう 第3版 (Make:PROJECTS)

小型のリチウムイオン電池充電器(マイクロUSBタイプ)

小型のリチウムイオン電池充電器(マイクロUSBタイプ)