キャンディケースのR2D2をハックする
今回は画像多めにしてみました、感想とか待ってます。
先々月、友人と一緒にディズニーランドに行ってきました。
めっちゃ楽しかったです。その時にお土産として「R2D2のキャンディ」を買ってきました。R2D2の形のキャンディボックスに丸いR2D2柄の飴がたくさん入っているユニークなお土産です。
飴はヨーグルト味で結構美味しかったです。
これが実物の写真なんですけど、かなりかっこよく作られてるんですよね...これ。パッケージも好きです、スターツアーズの下の売店に売ってます。
これは是非可動させたい!光らせたい!ということで今回はこのR2D2をハックして動くようにしていきます。
適当に分解していきます
ずるいかもしれませんが保存用、改造用を考えて2個買っておいてます。ちなみに僕はエピソード1が好きです、ポッドレースわくわくする。
大きさもいい感じなんですよね。高さ20cmくらいで手のひらには少し余るくらいの大きさで小さすぎず大きすぎず...。今回は「机の上の相棒」って感じのをコンセプトにしていこうと思うのでこのサイズはぴったりでした。
なすがままのR2
ぎゃぴーー!頭部分を切断です。断頭です。ギロチンです。マリーアントワネットです。 まるでR2のビコロビビビャー!!って感じの悲鳴が聞こえてきます。未来の相棒になんてことをしてしまっているのでしょうか。
R2独特の動きである頭がフクロウのように動くあの動きを目指すために頭の内部の溝をやすりで削り取っていきます。
みごとにつるつるです。
頭部側にサーボモータを固定するため低発砲塩ビ板を丸く加工し、プラスチック部品を取り付けます。
胴体部分には切り込みを入れておきます。この塩ビ板、けっこう加工しやすいしそれなりに強度もあり安価なのでストックしています。ホームセンターとかでも売っているのでオススメです。
電子工作のほうにも着手していきます
今回はArduino nanoでの制御です。電車の切符くらいの大きさのコンピューターとか本当にすごいですよね、R2の体に余裕で収まりきります。
電源は9V電池です。vinピンとGNDピンに接続するだけで電源はつきます。マジで便利
いままで動画を載せるときはyoutubeからの経由だったんですけど今回はこの記事だけで完結できるようにGIF画像を導入しました。みやすくなりました?
お察しの方もいられるかと思いますが今回使用しているArduinoはいつもどおり中華製の互換機です。あそこまで安いと簡単に使いつぶせて便利です。基板に直接ハンダ付けとかしちゃいます。壊れるのをビビる必要もなさそうですし...w
とりあえずサーボモータを接続してみました。R2がうごいてる...!!
こうなったらあとは早いですね。本体内に配線を押し込んで完成に向かいましょう。
電池パックを入れてもまだ結構スペースに余裕はありそうです。まだまだ機能拡張はできそうです(今回はしませんがw)
あとは頭部分をはめて...
おおおおおおお!!!
机の上であのR2D2がうごいてます!!
めっちゃ楽しいですw かっこいいし愛らしいし...!
今回のスケッチです
void setup() {
pinMode(3,OUTPUT);
// put your setup code here, to run once:
}
void loop() {
int kenny;
val = random(200);
analogWrite(3,kenny);
delay(1000);
// put your main code here, to run repeatedly:
}
すっごい簡単なプログラムです。サーボモータへのPWM出力をデジタル3ピンに設定、1秒ごとに0~200までの数値からランダムに変数"kenny"に割り当てています。
これにより1秒ごとにR2が不確定なランダムな方向に向くようになっています。
まとめ
今回はめっちゃ大満足な工作でした。スケッチ内のdelayの値を大きくすればR2D2が動く頻度を下げることができますよね、僕は30分に一回動くようにして作業の休憩を取る目安にもしています。なにより忘れたころに愛らしいドロイドがちょこっと動くのはなんとも癒されます。R2特有のあのビープ音を出させたり電飾関連の実装を考えてみるのも楽しそうです。
新作のエピソード8は今年2017年12月だそうですが、もう待ちきれない!
今からわくわくな僕です、読んでくださりありがとうございました。
[ この記事はブログ投稿者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してあります、リンク先のツイッターアカウントに教えてくださると嬉しいです:) ]
ArduinoでドットマトリクスLEDを遊ぶ [後半]
今回の記事は前回の
ArduinoでドットマトリクスLEDを遊ぶ [前編] - 僕が本当に働きたくないから書いていくブログ
の続きです。前回の記事を参照してもらうと閲覧数が増えてうれしいです。
今回は絵柄を表示させてみます
前回に引き続きドットマトリクスLEDについての記事です。
アノード・カソードの組み合わせでLEDの点滅が制御でき、好きな位置のLEDを点灯させることができたのですが今回はその続きとして「好きな絵柄(マーク)の表示」をしてみます。
前回の記事からの流用でもうしわけないです
まずはパターンの表示から
まず簡単なパターンをつくります。どうせなら動かしてみましょう。
配線は前回と同じでいきます。
スケッチは
void setup() {
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
digitalWrite(A0,LOW);
digitalWrite(A1,LOW);
digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
digitalWrite(A4,LOW);
digitalWrite(A5,LOW);
// put your setup code here, to run once:
}
void loop() {
digitalWrite(A0,HIGH);
digitalWrite(11,LOW);
delay(50);
digitalWrite(A1,HIGH);
digitalWrite(10,LOW);
delay(50);
digitalWrite(A2,HIGH);
digitalWrite(9,LOW);
delay(50);
digitalWrite(A3,HIGH);
digitalWrite(8,LOW);
delay(50);
digitalWrite(A4,HIGH);
digitalWrite(7,LOW);
delay(50);
digitalWrite(A5,HIGH);
digitalWrite(6,LOW);
delay(50);
digitalWrite(13,HIGH);
digitalWrite(5,LOW);
delay(50);
digitalWrite(12,HIGH);
digitalWrite(4,LOW);
delay(50);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
digitalWrite(A0,LOW);
digitalWrite(A1,LOW);
digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
digitalWrite(A4,LOW);
digitalWrite(A5,LOW);
// put your main code here, to run repeatedly:
}
こんな感じ。宣言部分でマトリクスLEDの初期化をしてその後簡単な点滅をさせています。
動かしている動画です
最下段のLEDが光っていません。どうがんばっても光らないんですけど...初期不良だと予想しています。予備のモノで代用しようにも一つしか手元にないので今回はコレを使用していきます。ごめんなさい(前回のテストの時にはなんもなかったんですけど...)
可愛い絵柄を表示させます(媚び)
面白くもないスケッチや解説はストップにして可愛くてハイセンスなマークの表示をしてみます。可愛くてハイセンス...かわいくて...ハイセンス...
はい!ハート!可愛いですね!
...安直すぎましたかね?良いと思ったんですが...
解説というか説明です。
さっきのパターン表示との違いに注目してください。
わかりやすくなるようイラストを描きました
黒くなっている四角は点灯したマトリクスLEDのマスをイメージしています。
①のイラストを見てください。左上端から点灯する範囲が大きくなっているのを表しているのですが、これが最初に動かしていたパターン表示です。
次に②のイラストに注目してください。黒くなっている部分を光らそうとします。左上の一つのマスと右端と下に位置する「光らそうとしたポイント」の間には黄色いマスで表したマスが存在します。②で表した黒いマスすべてを一斉に光らそうとするとアノード・カソードの制御が全マスに適用されてしまい、③のように黄色く表示した光らせようとしなかったはずのマスまで光ってしまいます。
それではどのようにして②のような形で光らせればいいのでしょうか。
簡単です。列同士のアノード・カソードの干渉が起こらないように列を細切れにして点滅させれば問題は解決します。3つのパーツに分けて(例えば④⑤⑥のように縦に割って)切り替えれば②のような本来できないような点灯の方法も実現できます。
それを踏まえた上でハートマーク表示のスケッチです
void setup() {
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
digitalWrite(A0,LOW);
digitalWrite(A1,LOW);
digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
digitalWrite(A4,LOW);
digitalWrite(A5,LOW);
// put your setup code here, to run once:
}
void loop() {
digitalWrite(A0,HIGH);
digitalWrite(12,HIGH);
digitalWrite(10,LOW);
digitalWrite(9,LOW);
digitalWrite(8,LOW);
delay(1);
digitalWrite(A0,LOW);
digitalWrite(12,LOW);
digitalWrite(10,HIGH);
digitalWrite(9,HIGH);
digitalWrite(8,HIGH);
digitalWrite(A1,HIGH);
digitalWrite(13,HIGH);
digitalWrite(11,LOW);
digitalWrite(7,LOW);
delay(1);
digitalWrite(A1,LOW);
digitalWrite(13,LOW);
digitalWrite(11,HIGH);
digitalWrite(7,HIGH);
digitalWrite(A2,HIGH);
digitalWrite(A5,HIGH);
digitalWrite(11,LOW);
digitalWrite(6,LOW);
delay(1);
digitalWrite(A2,LOW);
digitalWrite(A5,LOW);
digitalWrite(11,HIGH);
digitalWrite(6,HIGH);
digitalWrite(A3,HIGH);
digitalWrite(A4,HIGH);
digitalWrite(10,LOW);
digitalWrite(5,LOW);
delay(1);
digitalWrite(A3,LOW);
digitalWrite(A4,LOW);
digitalWrite(10,HIGH);
digitalWrite(5,HIGH);
// put your main code here, to run repeatedly:
}
ハートの形の点滅のスケッチの場合でも前述のとおり、ハートのマークを切り分け、それらを高速で点滅させることで表示させています。
完全に余談なんですが、僕なりのプログラムの工夫としてハートを単純に縦に8個に分けるのではなく、ハートが左右対称なことを利用し4つに分けて点滅させてわかりやすいプログラムにしています(このくらいでドヤ顔したらだめですか?良い考えだと思ったんですけどね...)
まとめです
今回は簡単な形でしたが可愛いハートのマークの表示と点滅の表示をしました。
8×8ってかなり表現として自由ですよね。どんなマークを表示させようか考えてる時にいろいろとやりたいことも出てきました。ネットで検索すると今回僕が書いたプログラムよりもかっこいいものも多くでてきます(それをいったらこの記事の存在意義とは...って話になる気もしますが)それらをみてみるのもすっごい面白いですよ。
今回も作ってて書いてて楽しかったです、読んでくださりありがとうございました。
[ この記事はブログ投稿者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してあります、リンク先のツイッターアカウントに教えてくださると嬉しいです:) ]
ArduinoでドットマトリクスLEDを遊ぶ [前編]
今回の記事はこの記事と次回のモノの2回に渡っての内容となっています;)
次回のリンクは今回の下のほうに貼っておきますね
この前秋月でドットマトリクスLEDを買いました。
8×8に発光ダイオードが配置してあります。
電光掲示板的な感じで字を表示させたり簡単なドットでマークを表示させて使うってイメージがあります。僕も使ってみたい。
あ、今回は「好きなマスのLEDを点灯させる術を知る」と言うのを目的にします。
形が整った何かを作るのは次回に回します(記事数稼げるし短いほうが読みやすいでしょ?)
とりあえずブレッドボードに挿してみます
気づかれましたか? 幅がピン同士の幅が広いので僕の手持ちのブレッドボードひとつでは扱いにくいんですよね。もう一つブレッドボードを用意してまたぐ形で挿すか大きいサイズのブレッドボードを用意する必要があります。(2,3個予備のがあったと思うのですが僕は失くしてしまっていて...失くすたびに買い足しているので、部屋探したらごろごろ出てきそうでこわいです)
簡単に変換基板をつくります。
変換基板と言ってもユニバーサル基板にピンソケットを実装してリード線でブレッドボード上の狭い範囲でも扱えるようにするだけです。
手ごろなサイズの基板があったのでこれを使います。両面基板ってお高いイメージです。
とりあえずこんな感じですかね...ジャンプワイヤを半田付けするって邪道でしょうか...?
(ドットマトリクスLEDは8列端子の部品ですが9列のピンソケットを記事内では使用しています。これは8列のソケットが手元になかったためです。)
ドットマトリクスLEDを挿すとこんな感じです。ぼやけてしまっていますがそのままボードに挿していた時とちがい一つのボードで使いやすくなっているのがわかると思います。
データシートを見ていきます
前に書いたジョイスティックの記事で「中国語はわからない」と書きましたね。あれは嘘だ。今回のデータシートは英語なんですけどそれでもわかりにくかったです。
回路図を見るとどうやらピン同士の出力とGNDの切り替えで点滅を制御するみたいです(この言い方で合ってます?)
なんとなくはわかったのでアルカリ電池をぽこぽこ抜き差しして調べました(データシート読めればこんな苦労はいらないはずです)
昔、懸賞つきの雑誌のパズルでこんなのありましたよね。数字を元にマスを埋めて絵柄を完成させるやつ。
わかったこと
紙への手書き資料で申し訳ないです。上のマスがマトリクスLEDの点灯部分の解説、下がピンの数字の説明です。
光る面を上にして端子部分を下、そして型番である"KEM-12288BW"と書かれている側面を左側にして見た場合の端子です。
説明に移っていきます。マスの一つ一つに数字が書かれていますよね、ピンの番号をあらわしています。例えば最上段右端の「9.13」というのは9ピンを出力、10ピンをGNDにすることで点灯すると言う意味です。
わかりにくい言い方かもです。まとめると5,2,7,1,12,8,14,9ピンは出力ピンで残りの13,3,4,10,6,11,15,16ピンがGND用のピンとなっています。
アルディーノにつなぎ好きなマスのLEDを点灯させてみます。
今回の目的である「好きなマスを光らせる」ということに挑戦します。
今回使うマトリクスLEDの端子数は16ピン、対して僕がつかうアルディーノ(中華製のUNO互換機ですが)のデジタルピンは13ピンしかありません。これに対してはアナログピンのA0ピンからA5ピンまでを使うという形で今回は対処します。
ジャンプワイヤがぐちゃぐちゃでスパゲッティ状態です。回路図の表記は勘弁してください。
マトリクスLEDとアルディーノとのつなぎ方は
5=A0 2=A1 7=A2 1=A3
12=A4 8=A5 14=13 9=12
13=11 3=10 4=9 10=8
6=7 11=6 15=5 16=4 (LEDピン=アルディーノピンの並びです)
のようにしました。今回は真ん中より少し下め、左よりの手書き図で言うところの
「7,6」のマスを光らせてみます。マトリクスLEDの7ピンに接続したアルディーノ側のA2ピンを出力させ6ピンに接続したデジタル7ピンをGNDに設定すればいいわけですね。
スケッチおよび解説
今回のスケッチです。
void setup() {
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
digitalWrite(A0,LOW);
digitalWrite(A1,LOW);
digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
digitalWrite(A4,LOW);
digitalWrite(A5,LOW);
// put your setup code here, to run once:
}
void loop() {
digitalWrite(A2,HIGH);
digitalWrite(7,LOW);
// put your main code here, to run repeatedly:
}
最初のsetup部分でマトリクスLEDで言う5ピンを初めとした8個のピンにLOWを宣言し13ピンを初めとしたGND用の残りのピンにHIGHを宣言してマトリクスLEDの初期化を行っています。その後loop部分でアルディーノピンのA2を出力に、デジタル7ピンをGNDに設定することで...
ちゃんと左から3列目、上から5列目のLEDだけを点灯させることに成功しました!
それにしても配線ぐちゃぐちゃですね...変換基板作ったんならブレッドボードも介さずにマイコンにそのままつないでもよかったかもしれません。
まとめ
注意する必要があると感じたのはマトリクスLED側のピンのアノード・カソードがわかりやすく配列されていないと言う点です。電子部品ってこんなもん...?
とりあえず使い方がわかったのと今回の目的である「好きなマスを光らせる」と言うことが達成できたのが満足です。次回もマトリクスLEDのことについて書こうと思います。使い方を発展...とまでは行きませんがなにかわかりやすいマークでも表示させようかな....読んでくださりありがとうございました;)
次回記事です、読んでくれるとうれしいです。
[ この記事はブログ投稿者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してありますリンク先のツイッターアカウントに教えてくださると嬉しいです:) ]
タトゥーや傷跡を隠す「ファンデーションテープ」誰のためのアイテムなのか
今回は刺青、タトゥーが関係するお話です。
ツイッターのプロモーションツイート(企業が宣伝のためのツイートなどででタイムラインにたまにながれてくるアレです)でこのまえこんなツイートが流れてきました。
タトゥーや傷跡を隠すファンデーションテープ。https://t.co/6Mu0vgvA3o
— 合同会社ログインマイライフ/公式 (@login_mylife) 2017年2月8日
お試しセット800円、送料無料。
全3サイズ。おすすめ。 pic.twitter.com/8mTS2CBzZy
すごいですよね、凝視すれば見えるかな...? 程度の周りの肌との色の違いの違和感はありますけどそれでもきれいに黒いタトゥーを消せているいいアイテムだと思います。
気になったのはこのツイートの内容というよりも返信欄でした。
プロモーションされているツイート内容も興味深かったのですが、それよりも返信されているツイート内容が目に付きました(いわゆる「リプ欄」と言われる場所です)。
隠すなら刺青彫るな
こんな主張を書き込んでいる人が多かったんです。この商品の価値そのものを否定するようなこの意見どうおもいますか?
ファンデーションテープってだれのための商品なのでしょうか
隠すなら刺青彫るな、一見とても的を得た意見のように見えます。そうですよね、消せないとわかっている刺青をそれをわかっていて彫ったのに隠そうとするなんておかしい!!(この意見も僕的にはよくわかんないですけど)
でもかんがえてみてください、「刺青を隠そうとする時」ってどういう時ですか?
刺青彫ってねえからわかんねえって方は「刺青を彫っている人が隠そうとする時ってどんな時だろう」って考えてみてください。
刺青の場所はどこと仮定してもらっても結構です。各自の好きな部位にあるとでも考えてみてください。僕は脚が好きなのでふとももに彫ってあるとして考えて見ます。
僕も考えてみました
- 水着の時
- 温泉に入る時
- 薄着になる時
とりあえず三つ挙げてみました、こんなものでしょうか。
この三つのシチュエーションの共通点として
- 肌が露出する
- 第三者に見られる
ということが挙げられます。
つまり肌を出さない、人に見られないという条件があればタトゥーを隠す必要がないということだと言えると思います。
お風呂で肌を露出しない、これは無理ですよね。タオルで隠すにしても限界があります。海やプールなど水着になるシーンもしかりです。刺青があるからプールにも行くなというのは無理があります。
第三者に見られない、これはもっと困難です。温泉プール海街中、どこにも人の目はたくさんあります。
そもそも...
なぜタトゥーを持っている人は他人の目を気にしなければならないのでしょうか。
簡単です。タトゥーを嫌がる人がいるからです。「嫌がる人のために」隠したり見えないようにしているわけです。
つまりタトゥーを彫っているひとは嫌がる人のための配慮として隠したりするわけですよね。ですがこの配慮、しなきゃいけないものでしょうか。
たしかに刺青とは日本では「ヤクザ」ってイメージもあり良い顔をされない場合がほとんどです。しかし今日ではタトゥー、刺青はオシャレや自己表現の一つとなり一般人が彫っていることもおかしくなくはなっています。
タトゥーを彫っていることによる負い目など感じる必要はもちろんないですし、なんならタトゥーを嫌がる方への配慮なんて必要ありません。
今まで書いてきたことをふまえてのまとめ
ファンデーションテープはだれのためのアイテムなのか
に僕なりに答えようと思います。だれのためのアイテムか、それは「タトゥーをしている人ではなくそれを見、嫌がる人。すなわちタトゥーをしない人のためのアイテム」なのではないでしょうか。おもしろいですよね、タトゥーをしている人をターゲットにした商品であるにもかかわらず、その実それはタトゥーをしない人のためのモノだったっていうのは。
それを考えると元の話題のツイートにきている件のリプライはとても的外れな意見だと言えませんか?
とても読みにくい書き方をしてきたのではないかと読み返して思いますがこれから精進していこうと思います
呼んでくださりありがとうございました。
[ この記事はブログ投稿者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してありますリンク先のツイッターアカウントに教えてくださると嬉しいです:) ]
ジョイスティックでLEDの点滅を操作する
この記事は前回書いた
アナログジョイスティックDIP化キット AE-JY-DIPについて - 僕が本当に働きたくないから書いていくブログ
の続きのようなつもりです。前記事を見てもらえると閲覧数が増えてうれしいです(見なくても理解できる内容だと思います)。
ジョイスティックっていいですよね
わくわくする存在です。
前回使い方がわかったジョイスティックですが「ジョイスティック」ってとてもかっこよくないですか?
ゲームのコントローラーや宇宙船の操縦桿UFOキャッチャーのレバーとか...どきどきするし面白い存在です。
使い方がわかったのですから...
何かを「操作」してみようと思います。今回はあくまでもジョイスティックで何かを動かすというのが目的で作品を作るのが目的ではないので、
凝ったものはやめておき簡単に光る白色LEDの操作をしてみます。
使うもの
- アナログジョイスティック
- 白色LED
- LEDのための保護抵抗
- アルディーノ(今回は中華製のUNO互換機を使いました)
作ってみました
配線は以下のとおりです、可変抵抗をジョイスティックとして考えてください
ジョイスティックの端子の順番を忘れないようにします。
ジョイスティックは2軸の動きを検出できるパーツですが今回は一方向のみの活用です。
よりちゃんとジョイスティックとしての使い方を目指すならLEDの配列をタテとヨコに十字型に配列してもいいかもしれませんね。
アルディーノでのスケッチです。
~~~~~~~
void setup() {
Serial.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
int val;
// put your setup code here, to run once:
}
void loop() {
int val;
val = analogRead(A0);
Serial.println(val);
if(140 > val && val < 280){
digitalWrite(3,HIGH);
digitalWrite(2,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
} else if(280 > val && val < 420){
digitalWrite(4,HIGH);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}else if(420 > val && val < 560)
{digitalWrite(5,HIGH);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
} else if(560 > val && val < 600)
{digitalWrite(6,HIGH);
digitalWrite(5,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}else if(600 > val && val < 740)
{digitalWrite(7,HIGH);
digitalWrite(6,LOW);
digitalWrite(5,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(8,LOW);
}else if(740 > val && val < 970)
{digitalWrite(8,HIGH);
digitalWrite(7,LOW);
digitalWrite(6,LOW);
digitalWrite(5,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
}
val=0;
// put your main code here, to run repeatedly:
}
~~~~~~
デジタルピンの2が余計に加わってしまってるのを消し忘れています。気にしないでください。
動かしている様子です。ジョイスティックぐりぐり楽しいです。
今回はLEDの点滅の操作という簡単なことでしたが、いずれ近いうちになにか動くものの操作にこのジョイスティック、採用して工作してみたいです。
とても面白いパーツだと思いました。 ありがとうございました;)
[ この記事は電子工作初心者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してありますリンク先のツイッターアカウントに教えてくださると嬉しいです:) ]
アナログジョイスティックDIP化キット AE-JY-DIPについて
「記事」というにはあまりにも拙い、メモ書きのような投稿です。
先日秋月で電子工作っぽい部品を買おうと思い、アナログジョイスティックDIP化キットを買いました。
アナログジョイスティックDIP化キット: センサ一般 秋月電子通商 電子部品 ネット通販
指とかでぐりぐり動かして操作するやつです、それっぽい。
これの上に乗っかっているぐりぐりをもっと扱いやすくするために基板に乗っけてる...って認識で買いました。
本題に入ります
さあ、いざこれを扱おうとした時に困ったのがデータシートの読み解きです(そんな物がなくてもジョイスティックくらいパパッとよ」って人は...すごいですわあ...)。
ででどん!って感じですよね...中国語が本当に苦手で(一応英語でも書いてるんですけどなんかこの説明書だけはよく理解できそうになかった)白目をむいてしまいました。
とりあえずぐぐるも売っている部品屋のホームページばかりがヒットしワケワカメ状態でした。
なんで2軸方向の抵抗なのに端子が6本なん!?って叫んでました。
答えあわせというか、これが正解でしたよ。っていうのをいいますと
こんなかんじでした。
わかりづらいので解説()すると、「1の端子は電源の端子で2が抵抗値出力の端子、3番はグランドで上側が横方向で下側が縦方向に対する値に対応している」って感じ...です。
ピンの並びが[123123]ではなく[123321]といった整列された並びでないことをわすれないようにしたいです。
あ、残りの6本はまあ多分そう近く使う機会はないだろうなんて思って調べてません。めんどくさい
以上、「アナログジョイスティックDIP化キット AE-JY-DIPについて」でした。
呼んでくださりありがとうございました。
[ この記事は電子工作初心者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してありますリンク先のツイッターアカウントに教えてくださると嬉しいです:) ]