ナイトライダー来てます^^
5号まで来ましたので、テスト販売のため次号からは月1になります^^。
すでに海外では進行していますので、そのまま全国になるのかな~^^。
ではまず4号から
ムチャパーツ来ますww実際に見るとその量はかなりww
5号までの特典ですね~。30号辺りなら5冊分くらいの量なのかもww
パーツを見ていくと・・・・・・・・・埃入りww
ちなみにハンドル表面も
うむ・・・・どうも引きが悪いのか、今回の工場の表面処理と塗装レベルが低いのか・・・・・
これナイト2000でなければ確実に購入やめてますねww
デアゴさん!!マジで塗装なんとかして!!
で、気になるメーター部分ですが、
透明プラパーツに塗装?シール?となっていて、この後ろからLEDで光らせる方式のようです。
手持ちの液晶と比べてみます。
角近くの辺りは厳しい所も有りますが入るのは入りそうですが、これ何個入れればいいんだ・・・・・・・・その分マイコン入れるの考えると地獄だな・・・・・
ごめんなさいwちょっとナメていましたww
これ結構難易度高いです^^;
液晶用の基板の事かんがえると、液晶のフレキシブルケーブル部分のはんだ付けとか出来るようにならないとスペースが厳しいですね・・・・・
ちなみに、
こんなのも購入してみましたw0.6インチのカラーのようです。これを使うためにもハンダ付け練習しないといけないですね^^;
ちなみに電飾とか深く追求しなければ、なかなかカッコいいコンソールです^^。
あっ、ちなみにハンドル横のパネル
組み立て説明では左右間違っているみたいで、この左右の組み合わせでないと入りませんw
どちらが間違っているのかはそのうち調べますw
次5号。早速ナイトフラッシャーが付いてきました~!
とりあえず装着w
動画ではちょっと・・・てな感じですが、実際は思ったよりはずいぶん良い感じw
それに、よく見るとなんか四角に仕切られた感じあるね~。
ちょっと気になったので分解
おおっ!前回たんなる穴あきのパーツだと思っていたけど、よく見ると四角い枠で微妙に仕切られているのね!!ちょっと浅いけどデアゴさんナイス!
せっかくなのでミラクロームシルバー塗っておきましたww
まっ、LEDの動き思ったよりは良いのですが、もう少し何とかしたいと思いプログラムを作ることに。
で、これだけ有名の物ならプログラムがネットに落ちているだろうと検索。
良いプログラムをこちら、「jumbleat」さんで発見。
これはarduino用でLED6個ですので、ナイトライダー用のLED8個にするためにseeeduino XIAO用に変更で、こうなりました。
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 |
jumbleat https://jumbleat.com/2016/10/02/knight_rider_led/ さんのプログラムを改変 #define VOL 0 #define LOOP_SIZE (LED_SIZE - 1) * 2 #define LED_SIZE 8 byte leds [LED_SIZE] = {1,2,3,6,7,8,9,10}; byte led_luma [LED_SIZE]; void setup() { pinMode(VOL, INPUT); } int VOL_READ() { static int vol_val = 0; vol_val = vol_val * 0.9 + analogRead(VOL) * 0.1; return map(vol_val, 0, 1013, 20, 200); } void loop() { for (byte repeat = 0 ; repeat < LOOP_SIZE ; repeat++) { byte led_now = (repeat < LED_SIZE) ? repeat : LOOP_SIZE - repeat; // reduce led luma value for (byte i = 0 ; i < LED_SIZE ; i++) led_luma[i] /= 3; // set current led luma max led_luma[led_now] = 255; for (byte i = 0 ; i < LED_SIZE ; i++) analogWrite(leds[i], led_luma[i]); delay(VOL_READ()); } } |
23,25行目の書き方初めて知りましたw勉強になりますメモメモ…..φ(・∀・*)
てな感じにしました。動かすと
こんな感じですとツイッターにあげたところ
gyoという変態さんから、
「ごら~~っ!!全然デジタル感きえてないじゃないか!!
手を抜いてんじゃないぞ~!ちゃんとしろよボケ~!!
ごら~~~~~っ!!!」
(google翻訳より)
ちなみに原文
「 ん?? なんかやっぱりデジタルぽっくない? 光が移動するタイミングでしか減光してないような。 ひとつ移動する間にforネストでカウントして減光する処理がすっぽ抜けてないすか?」
てなお叱りの言葉が・・・・・月曜の夜に何というご無体なw
私の性格知っているでしょw?出来るまで寝れないよww
で、出来たのがこれ
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 |
#define VOL 0 #define LOOP_SIZE (LED_SIZE - 1) * 2 #define LED_SIZE 8 byte leds [LED_SIZE] = {1,2,3,6,7,8,9,10}; int led_luma [LED_SIZE]; //SDA 4 //SCL 5 void setup() { pinMode(VOL, INPUT_PULLUP); } int VOL_READ(){ static int vol_val = 0; vol_val = vol_val * 0.9 + analogRead(VOL) * 0.1; return map(vol_val, 0, 1013, 1, 80); } void loop() { for (byte repeat = 0 ; repeat < LOOP_SIZE ; repeat++) { byte led_now = (repeat < LED_SIZE) ? repeat : LOOP_SIZE - repeat; // set current led luma max led_luma[led_now] =240; for(int t=0;t<20;t++){ for (byte i = 0 ; i < LED_SIZE ; i++) { led_luma[i]-=3; if(led_luma[i]<=0){led_luma[i]=0;} } for(byte i = 0 ; i < LED_SIZE ; i++){ analogWrite(leds[i], led_luma[i]); } delay(VOL_READ()); } } } |
このプログラム結構早く思いついたのですが、何度試してもLEDの表示がグャグチャ・・・
プログラム自体は合っているはずなのに・・・・・・・とかなり悩みましたw
問題点は5行目の部分が前のプログラムでは変数指定がbyteだったので、そのままつかっていたのですが、気になって変数指定をintに変更した途端プログラムが正常に動きましたw
たったこれだけを直すのに1時間半くらいは悩んだかなww
普段byteて使ったことなかったので数字の変化範囲になれていませんでしたw
で、動かすとこんな感じです。
すると今度は、なおとかいう変態さんから
「チッwまだまだだな~!この程度かよ~!!
65点で○%×$☆♭#▲※%△#?%◎&@□アナログ□&○%$■☆♭*!
まさかすでにやっててこの程度じゃないだろうな?ごら~~~っ!」
(google翻訳より)
ちなみに原文
「だいぶスムーズになったように見えますが、、、 8点で考えるからツブツブ感が出るのでは?例えば間を7個ずつ埋めて65点で考えてそれを移動、そのうちの8点だけ(間はバーチャルなのでLEDはなし)表示させるとかすれば?ローパスフィルターかけるイメージのアナログ風処理で。すでにそうしてるかな?」
宇宙人に怒られた(T T)
何言ってるかわからないwww
でも確かになんか3つくらいの同じくらいの明るさの物が移動している感じで気に入らないww
これプログラム見てもらうとわかるのですが、全体が均一にPWMの数値が減っているんですよね~。
そもそもPWMて肉眼で見てるとPWM=250の明るさとPMW=200の明るさって殆ど差がないように見えるのに、同じ50の差でもPWM=51とPWM=1では大きく差があるように見えるんですよね~。
てなことでPWMの大きな部分はザックリ減らして、小さな部分は少しづつ減らすことに。
少しだけプログラム面倒になります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 |
#define VOL 0 #define LOOP_SIZE (LED_SIZE - 1) * 2 #define LED_SIZE 8 byte leds [LED_SIZE] = {1,2,3,6,7,8,9,10}; int led_luma [LED_SIZE]; byte led_now,led_old1,led_old2,led_old3,led_old4; void setup() { pinMode(VOL, INPUT_PULLUP); } int VOL_READ(){ static int vol_val = 0; vol_val = vol_val * 0.9 + analogRead(VOL) * 0.1; return map(vol_val, 0, 1013, 5,80); } void loop() { for (byte repeat = 0 ; repeat < LOOP_SIZE ; repeat++) { led_old4=led_old3; led_old3=led_old2; led_old2=led_old1; led_old1=led_now; led_now = (repeat < LED_SIZE) ? repeat : LOOP_SIZE- repeat; led_luma[led_now] = 250; for(int t=0;t<10;t++){ if(led_old3==led_now ||led_old3==led_old1 ){} else {led_luma[led_old3]-=1;} if(led_old2==led_now){} else {led_luma[led_old2]-=2;} led_luma[led_old1]-=7; led_luma[led_now]-=15; if(led_luma[0]<=0){led_luma[0]=0;} for(byte i = 0 ; i < LED_SIZE ; i++){ analogWrite(leds[i], led_luma[i]); } delay(VOL_READ()); } } |
折り返しの時にled_nowとled_old2とかが重なるのでLEDの表示がグチャグチャにwその辺に気が付くまで意外と苦労しました
さっきの物よりLEDの減衰が分かりやすくなったと思います。
でも、そうなってくると今度は一番最初のLEDがいきなりPWM=250でピカッ!!と光るのが気になりだしました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 |
#define VOL 0 #define LOOP_SIZE (LED_SIZE - 1) * 2 #define LED_SIZE 8 byte leds [LED_SIZE] = {1,2,3,6,7,8,9,10}; int led_luma [LED_SIZE]; byte led_now,led_old1,led_old2,led_old3,led_old4; void setup() { pinMode(VOL, INPUT_PULLUP); } int VOL_READ(){ static int vol_val = 0; vol_val = vol_val * 0.9 + analogRead(VOL) * 0.1; return map(vol_val, 0, 1013, 5,80); } void loop() { for (byte repeat = 0 ; repeat < LOOP_SIZE ; repeat++) { led_old4=led_old3; led_old3=led_old2; led_old2=led_old1; led_old1=led_now; led_now = (repeat < LED_SIZE) ? repeat : LOOP_SIZE- repeat; for(int t=0;t<10;t++){ if(led_old4==led_now ||led_old4==led_old1 || led_old4==led_old2){} else {led_luma[led_old4]-=1;} if(led_old3==led_now ||led_old3==led_old1 ){} else {led_luma[led_old3]-=2;} if(led_old2==led_now){} else {led_luma[led_old2]-=7;} led_luma[led_old1]-=15; led_luma[led_now]+=25; if(led_luma[led_now]>=250){led_luma[led_now]=250;} if(led_luma[0]<=0){led_luma[0]=0;} for(byte i = 0 ; i < LED_SIZE ; i++){ analogWrite(leds[i], led_luma[i]); } delay(VOL_READ()); } } |
ちょっと柔らかい光方になったと思います。
ちなみに今回はLEDはデアゴの物を使っています。
コネクターはぶった切ってw
マイナス配線だけ使います。
基板の方には抵抗の下側に配線をハンダ付けしています。
実はこのまま一回XIAOにつなげて電流を流してショートしてしまいXIAOを一つだ目にしちゃいましたww
やる場合はこれを剥がす、もしくはこのチップへの配線プリントを切断してくださいw
この部分を取ることによって
赤い線に沿って電流が流れますので、マイナス配線のみ使います。ブレッドボードは下のような感じになっています。半固定抵抗で速度調節するようになっています。
XIAOの使っている端子は、将来的にI2Cでつなぐことも考えて4,5番は空けてあります。
もし、やってみようと思われる方が居て分からないことあればお気軽にツイッターでもこのブログでも構いませんので連絡ください^^
それにしてもgoogle翻訳って精度高いですね~(>_<)
関連すると思われる記事:
- None Found
お疲れさまでした^^
先頭がわずかに光るあたり、こだわりを感じます^^
ツイッターでごちゃごちゃ言うヤカラがいるようですが、ナイス仕上がりです^^
これ以上詰めちゃうと、本物超えちゃいますからねw
google翻訳は優秀ですね。
なおさんの宇宙語が実に的確に翻訳されていますww
しかし、うちのホワイトベースベースのラーソンスキャナと同じような光の動きなのに、プログラムのアプローチが全然違っていて面白いです^^勉強になります。
余談ですが、neopixel版作っていて気づいたのですが、あっちは6jiro版で言う二番目の一番明るい光を白熱させることができるんですね。
白っぽい赤を点けて、そのあと明るい赤、暗い赤と並べると面白い効果でした。
こんばんは!
更新お疲れ様です!
物凄くいい感じに仕上がっていますね!凄く雰囲気が良くなっていますよね~!
とりあえず、arduinoを買って勉強はじめますww
あとは、丸く見えるLEDを何とか四角に見せる?!方法を考えますw
gyoさん こんばんは!
こら~~っwwツイッターでごちゃごゃ言う筆頭がwww
google翻訳は優秀ですよね~お二人の言葉をちゃんと訳してくれますw
おかげさまで火曜日は寝不足でしたww
アナログを目指すと先頭のピカリが気になりますよね~w
ここまでやったらついでなので改変しておきました^^
このプログラムはjumbleatさんの物を延長した方向性でプログラムを組みました。
いままで配列を使ったプログラムは殆ど書いたことなかったのでかなり新鮮でした。
ホワイトべス用のgyoさんのプログラム全然違う感じですか!それはまた興味ありますね。
またいつか公開してください。
neopixelはホント色々と出来ますよね~。またできた動画見せてください!!
コメントにレス。
ラーソンスキャナは完成版がついったに上がってます^^
色の変化を見たかったのでディレイなし高速表示のの延々版ですがw
Sakuさん こんばんは!
ありがとうございます!
とにかくアナログポイ感じを目指しました^^気に言って頂けたようで嬉しいです^^
そうですね、まずはarduinoで簡単なLEDの点灯が出来るようになったら、Seeediono XIAOという物にチャレンジしてみてください。
上記のプログラムはXIAO用となっていますのでarduinoでは使用できません。
ただ扱い方がarduinoと全く一緒なのでarduinoの知識が必要です。
LEDを四角く見せるのはまたの宿題ですね^^
gyoさん 再度こんばんは!
あっ!あれですか!
早すぎてよく分からなかったww
よく観察してみますw
こんばんは
ツイッターの「炎上」は、これだったのですね!(笑)
横やりを入れてくる「不届き者」は、「放置プレイ」が一番です(笑)
一番初めの動画を見たとき、「点灯が急だなぁ」と感じたのですが、やはりいきなり255で点灯でしたか。私の記憶では、最後の動画の様に、徐々に明るくなって、徐々に暗くなる点滅方式だったと思います。
いずれにしろ、綺麗なプログラミングですね!流石に師匠です。
Vividさん こんばんは!
そうですww炎上ですねwww
求めるところの高い変態さん2人に絡めれてやれやれですww
ツイッターは怖い所ですねww
そうなんですよ~どうもアナログにすると一番先頭のLEDの点灯方式が特に強調されて、ピカリ感強いですよね~。
ちょww師匠だなんてとんでもないですww!
Vividさんの師匠になれる人なんてこの世に居ないんじゃないですかw?
プログラムは最初に使わせてもらったプログラムの延長で書きましたので、元のプログラムが良かっただけです^^。
ほんとjumbleatさんのプログラムは綺麗で簡潔に出来ていますよね~。
こんばんは
ツイッタは輩がでるんですか、怖いですね~w
最後の動画はほんとかなりそれっぽい(すでに本物以上?)でよい雰囲気になりましたね。
C言語で「?」をつかった条件分岐とかできるんですね。ハード設計言語(HDL)特有の記述かと思ってました。これ使えると簡単なif/then/elseの代入は見通しよくなりそう、また試してみます。いいこと聞いちゃった。
赤LEDだからXIAO(3.3V)からの直接駆動でもVfちゃんととれるんですね、なるほど~
ヤカラのなおさん こんばんは!
ツイッター怖いですね(><)輩がいっぱいww
下手にプログラム物あげれませんねw
それ見てプログラム簡単にわかっちゃう変態ヤカラが多いのでwww
とりあえずそれっぽくなってくれて一安心です。
私は「?」での分岐なんて初めて見ましたw初めはこれ文字化け????
と疑ったくらいで、コンパイル通った時に「いけるのかよww!」と声出ちゃいましたからw
3.3Vですが、基板についている抵抗で行けちゃいましたね~。
白だとちょっときつかったかもですね~^^;