ゴッドフェニックス しゅ~りょ~w!
完成となりました^^
とりあえずはいつも通りに完成動画から^^
(音楽や途中アニメの著作権の関係で広告付けられてしまいました^^;)
気分転換の割には動画作成2時間くらいやってましたww
前回で本体の方は完成しましたので、あとは台座部分。
まずは前回コネクタを作りましたので、そこからの配線をXIAOに接続
スイッチは少し大きめのタクトスイッチを使うことにしました。
XIAOは台座の後方にUSBコネクタのみ出してエポキシで固定
タクトスイッチはそのままでは高さが足りなかったのでプラパイプで高さを増して
元々の付属のスイッチを使えすようにしました。
このゴッドフェニックスは元々の電飾キットもあるようですが、現物は見たことないww
で、台座の方は色も塗らずにそのまま終了ww
火の鳥のクリアパーツの内面が少し気になったので、要らない部分を削合後
布ボンで接着しておきました。
後はプログラムです。これも実は手抜きww
NeoPixelのテープLED使っていますので、公式のテスト用プログラムを少しだけ改変してそのまま使用ww
スイッチを押すと火の鳥のエフェクトが始まるようにしています。
見る人もいないとは思いますが、プログラム貼っておきますw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
#include <TimerTC3.h> //-------------------------------------------- #include <Adafruit_NeoPixel.h> #define PIN 0 Adafruit_NeoPixel strip = Adafruit_NeoPixel(15, PIN, NEO_GRB + NEO_KHZ800); //------------------------------------------------------------------------------- #define f_side 1 #define r_side 2 #define biyoku 3 #define tail_LED 4 #define SW 10 byte w,fire; //-------------------------------------------------------------------------- void TimerCnt(){ w++; if( w>100 && w<200){analogWrite(biyoku,250);} else {analogWrite(biyoku,0);} if(w>=200){w=0;} } void engine_normal(int t){ strip.setPixelColor(13, strip.Color(125, 0, 0)); strip.setPixelColor(12, strip.Color(125, 0, 0)); strip.setPixelColor(11, strip.Color(0, 250, 250)); strip.show(); delay(t); strip.setPixelColor(13, strip.Color(50, 0, 0)); strip.setPixelColor(12, strip.Color(50, 0, 0)); strip.show(); delay(t); } void after_burner(int t){ strip.setBrightness(255); for(int i=0;i<256;i++){ strip.setPixelColor(11, strip.Color(i, 255-i, 255-i)); strip.setPixelColor(13, strip.Color(125+i/2, i, i)); strip.setPixelColor(12, strip.Color(125+i/2, i, i)); strip.show(); delay(t); } } void phoenix(){ TimerTc3.stop(); analogWrite(biyoku ,255); after_burner(10); for(int i=0;i<1;i++){rainbowCycle(2);} colorWipe_revers(strip.Color(255, 0, 0), 50); for(int i=0;i<20;i++){REDCycle(2);} colorWipe(strip.Color(0, 0, 0), 50); analogWrite(f_side ,0); analogWrite(r_side ,0); analogWrite(biyoku ,0); TimerTc3.start(); } //-------------------------------------------------------------------------- void setup() { Serial.begin (9600); pinMode(SW,INPUT_PULLUP); //--------------------------------------------------- TimerTc3.initialize(10000); //1000us=1ms TimerTc3.attachInterrupt(TimerCnt); //タイマ経過後に発生する割り込み関数を指定 strip.begin(); strip.setBrightness(250); rainbowCycle(1); colorWipe(strip.Color(0, 0, 0), 50); analogWrite(tail_LED,255); } //--------------------------------------------------- void loop() { if(digitalRead(SW)==0){fire=1;} engine_normal(20); if(fire==1){ phoenix(); fire=0;} } //---------------------------------------------------------------------------------- void rainbow(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { for(i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i+j) & 255)); } strip.show(); delay(wait); } } void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } void colorWipe_revers(uint32_t c, uint8_t wait){ for(uint16_t i=0; i<12; i++) { strip.setPixelColor(11-i, c); strip.show(); delay(wait); } } void rainbowCycle(uint8_t wait) { uint16_t i, j; for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel for(i=0; i<11; i++) { strip.setPixelColor(i, Wheel(((i * 256 / 11) + j) & 255)); } strip.setPixelColor(11,strip.Color(250,0,0));//150 strip.setPixelColor(12,strip.Color(255,255,255));//150 strip.setPixelColor(13,strip.Color(255,255,255));//150 strip.show(); delay(wait); } } void REDCycle(uint8_t wait) { uint16_t i,j,f,r; for(j=0; j<256*2; j++) { if(j<256){f=255-j;r=j;} if(j>255){f=j-255;r=255-(j-255);} for(i=0; i<11; i++) { strip.setPixelColor(i, Wheel_R(((i * 256 / 11) + j)& 255)); } analogWrite(f_side ,f); analogWrite(r_side ,r); strip.setPixelColor(10,strip.Color(250,0,0));//150 strip.setPixelColor(11,strip.Color(250,0,0));//150 strip.setPixelColor(12,strip.Color(255,255,255));//150 strip.setPixelColor(13,strip.Color(255,255,255));//150 strip.show(); delay(wait); // int randTime= random(2,6); // delay(randTime); } } 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); } uint32_t Wheel_R(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos >122) { return strip.Color(255 - WheelPos , 0,0); } if(WheelPos < 123) { return strip.Color( 132+WheelPos, 0, 0); } } |
ちなみに123行目の
((i * 256 / 11) + j) & 255
この計算式が分からずに悩みましたw
((i * 256 / 11) + j) & 255=((i * 256 / 11) + j) % 255
剰余算だったんですねw初めて知りましたw
また一つ賢くなれました^^
てな感じで気分転換のゴッドフェニックス終了~^^
関連すると思われる記事:
- None Found
その3で終わり早っ!!
ホントに積み滅ぼしの気分転換だったんですねw
この、制作のメリハリのつけ方学ばなくちゃ。
連日200人越えで一気に全国にその名を轟かせている広島県ですが、
健康には十分ご注意の上バルキリー頑張ってくださいまし( ・`ω・´)キリッ
あ、医療関係者はもうペクチン終わったのかな。
こんばんは!
本体も塗装を透過して内側から発光させてるんですね。いっそのこと機体全面の内側にテープLED張り巡らして。。。放熱が追い付かないな、きっと(^^;
広告出るぐらいは可愛いですよ。ガンダムなんかOPの一部がたまたまバック(つけっぱなしのTV)で流れてた動画上げようとしたら、即はじかれましたもん
布ボンについてはあちらの教祖様が触れるだろうからおいておきましょうかねw
gyoさん こんばんは!
いやホント気分転換なんですw!
プログラムなんて、分かる人が見たら「サンプルプログラムのままじゃんww!」
てなレベルの手抜きですww
それがなんかうまくハマっちゃったみたいでツイッターで評価いただけました。
なんかだましているようで、むしろ申し訳ない気分^^;
広島県もホント増えちゃいましたからね・・・・
我が医院はありがたい事にワクチンは全員受けさせていただきました。
なおさん こんばんは!
もしクリアバージョンとか出て本気モードなら塗装方法考えて全体に透過光仕様の全身発光も考えるかもですがw今回は気分転換でw
放熱・・・・?なにそれ美味しいの?全く考えずにやって後で後悔するでしょうねww
ええっ!ガンダム系統てそんなに厳しいんだ・・・さすがww
今回なんて音楽だけでなくアニメの一部をパク、おっとリスペクトさせてもらってますからねw
布ボン教祖様はスルーでしたww褒めてくれない(T T)
お〜 ガッチャマーン ガッチャマ〜ン♬
schuさん おはようございます!
歌っちゃいますよねww
ホントこの当時の主題歌ってインパクト強くて気分もアゲアゲになりますねw
こんにちは
いや~6jiroさんはいつもながら仕事が早いですね。
しかも今回は完成ビデオまで一気に制作で、しかも「おきまり」が無い!
あのテーマ音楽は、懐かしいですね、アニメのシーンが模型とうまく融合して、カッコいいプロモーションビデオです。展示会ではこれをESP32でLCDに再生しておくと、注目の的!
間違いなし!!
だめだ!
何回読んでもスケッチが理解できん!!
とにかくすごいのは解った!!
あっぱれ!
Vividさん こんばんは!
今回は気分転換のため結構手抜きなんですが、思いの外電飾がハマってくれたみたいですw
ビデオも今回はアニメのシーン入れてみましたww
古いアニメなんでその辺緩いのかもwまっ、しっかり著作権のお知らせ来て広告付けられましたがねww
これね、実際に見るとあの炎エフェクト全然ちがうんですよ~単なる順次点灯に見えますw
iphoneマジックですww
そのためにもLCD置いておくのも一つの案ですねww
その時はよろしくお願いしま~す!
てつのさん こんばんは!
スケッチ読んでくれているんですね!
どの辺が分かりにくいですかね?
もしよろしければ解説しますよ^^
実際にNeoPixelのLED有ると触りながらやれば理解しやすいんですけどね。