プリキュア放送中に今誰が活躍してるかわかるやつ作ろうとした #cure_advent

この記事は

これは「プリキュア Advent Calendar 2015」の8日目です。

www.adventar.org

前はGoのGoでGo!プリンセスな、くりの人でした。

sue445.hatenablog.com

今年は趣向を変えた

女児アニメ大好きマンこと100-200です。 今年はずっとプリティーリズム熱が凄かったです。

100-200.hatenablog.com

100-200.hatenablog.com

上記のように去年も一昨年も参加したのですが、

最近やったことなかった電子工作に目覚め始めて、今更arduinoを中心に色々触っているので、趣向を変えて電子工作的なことをやってみました。

やったこと

やりたかったこと

GoとかでTwitterのストリーム受ける→ TLの文字列取得→ Arduinoにシリアル通信でキック→ プリキュアの色表示、実況にあわせて色が変わるよ!

実現できたこと

Goとかの部分全部すっ飛ばして、Arduinoプリキュアの色をLチカさせるやつ実装したよ!

組み合わせ

Arduino Uno R3 + ws2811のLEDワイヤ

実現したこと

思ったより2倍くらい地味だったのでコロコロ変わる奴も撮った

学び

  • 電子工作楽しい、夢が広がる
  • HUEとか買う人の気持ちが分かった。カラーのあるLチカ楽しかった
  • GoPrecureと組み合わせたい
  • シリアル通信初めて使ったけど最初Serial.readString知らなくて地獄を感じた
  • いちいちUSB刺すのだるいしイーサネットシールド経由でも良いかもしれない
  • ソース汚いけどまあ動く
  • 遅刻すみませんでした

明日は

居ないっぽい!次は13日の@daishi_hmrさん!

twitter.com

ついでに宣伝

プリキュア関連の曲しか掛からない唯一のパーティキュアインデックスでDJやってます。

次はゴープリ最終回の日に開催しますので、プリキュア好きな人はぜひ。

前回の様子→

成果物

arduino

#include "FastLED.h"

#define NUM_LEDS 8 // LEDの数
#define DATA_PIN 2 // DINピン

//define Precure
#define CUREFLORA "cureflora"
#define CUREMERMAID "curemermaid"
#define CURETWINKLE "curetwinkle"
#define CURESCARLET "curescarlet"

//define Precure Colors (CRGB)
#define CUREFLORA_COL1 0xFA8072
#define CUREFLORA_COL2 0xFFA500
#define CUREMERMAID_COL1 0xBDF6EB
#define CUREMERMAID_COL2 0x9555FD
#define CURETWINKLE_COL1 0xE0275A
#define CURETWINKLE_COL2 0xF13F04
#define CURESCARLET_COL1 0xA61035
#define CURESCARLET_COL2 0xFF0000

CRGB leds[NUM_LEDS];
CRGB color[2];

String input;

void setup() { 
  FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
  Serial.begin(9600);  
  color[0] = CRGB::Black;
  color[1] = CRGB::Black;
  input = "";
}


void loop() {
  if (Serial.available()) {
    input = Serial.readString();
    Serial.print(input);
    getPrecureColor(input);
  }
 
  leds[0] = color[0];
  leds[1] = color[1];
  leds[2] = color[0];
  leds[3] = color[1];
  leds[4] = color[0];
  leds[5] = color[1];
  leds[6] = color[0];
  leds[7] = color[1];
  FastLED.show();
  delay(100);
}

void getPrecureColor(String input){
  if (input == CUREFLORA){
    color[0] = CUREFLORA_COL1;
    color[1] = CUREFLORA_COL2;
  }else if (input == CUREMERMAID){
    color[0] = CUREMERMAID_COL1;
    color[1] = CUREMERMAID_COL2;
  }else if (input == CURETWINKLE){
    color[0] = CURETWINKLE_COL1;
    color[1] = CURETWINKLE_COL2;
  }else if (input == CURESCARLET){
    color[0] = CURESCARLET_COL1;
    color[1] = CURESCARLET_COL2;
  }
}