[]Meganeスカウター

鯖江のご当地IchigoJamMeganeJam」を入手。有機ELOLEDディスプレイを付けて「Meganeスカウター」にしてみました。
f:id:shiro0922:20181015232359j:image:w360

f:id:shiro0922:20181015232432j:image:w640
OLEDがかなり前に出ていて不格好ですが、このくらい距離を離さないと左眼のピントが合わず文字が読めません(^_^;)

f:id:shiro0922:20181015232532j:image:w640
メガネ基板の拡大図。中央の基板は、ボタン電池CR2032を2個並列につないだ電源シールドです。
右眼上のユニバーサルパターンでフォトトランジスタ回路を組んで、IN2にアナログ入力しています。
赤外線領域にピークがあるフォトトランジスタを使ったので、熱く燃えている人に向ければハイレベルな数値が出るはず(笑)
f:id:shiro0922:20181015232303j:image:w360

このメガネを装着して、「レベル1か…フッ、ゴミめ」とつぶやけば、キミも怪しい人サイヤ人だ!(^_^)

プログラム

起動すると、フォトトランジスタからのアナログ入力値(Rawデータ?)が表示されるので、測定したい対象に向けてボタンを押します。入力値から計算したLv(レベル)、AP(攻撃力)、DP(守備力)、MP(魔法力)、HP(体力)が表示されます。
表示数値は、アナログ入力値を元に適当に乱数で計算しています。

10 '*Megane Scouter
20 VIDEO 0:CLS:GSB @OLEDINIT
30 IF BTN() CONT
40 @LOOP
50 Z=ANA(2)
60 CLS:?Z:GSB @OLEDOUT
70 IF !BTN() GOTO @LOOP
80 CLS
90 Z=Z-100:IF Z<10 Z=10
100 L=Z/10:?"Lv ";L
110 X=L+RND(L/2):A=X*X+RND(Z*3):?"AP ";A
120 X=L+RND(L/2):D=X*X+RND(Z*3):?"DP ";D
130 X=L+RND(L/2):M=X*X+RND(Z*3):?"MP ";M
140 X=L+RND(L/2):H=X*X+RND(Z*3):?"HP ";H
150 GSB @OLEDOUT
160 WAIT 60
170 IF !BTN() CONT
180 RUN
190 @OLEDINIT
200 poke#780,#00,#40,#21,#00,#7F,#22,#00,#07,#AE,#D5,#80,#8D,#14,#20,#00,#DA,#12,#81,#CF,#D9,#F1,#DB,#40,#A4,#A6,#AF
210 forP=#788to#799:i=i2cw(60,#780,1,P,1)
220 next
230 poke #79a,#70,#b5,#40,#18,#07,#23,#1b,#02
240 poke #7a2,#c9,#18,#10,#24,#03,#78,#db,#00
250 poke #7aa,#d3,#18,#1d,#68,#0d,#60,#5d,#68
260 poke #7b2,#4d,#60,#20,#30,#08,#31,#01,#3c
270 poke #7ba,#f4,#d1,#70,#bd
280 @OLEDOUT
290 forP=0to7:i=usr(#79A,#907-P):i=i2cw(60,#781,1,#700,128):next:rtn
コメント
0件
トラックバック
0件
ブックマーク
0 users

[]100mダッシュ・展示用

IchigoJamスポーツ」の中の人プログラム「100mダッシュ」を、展示用に改造してみました。
スペースキーの代わりに、大きなボタンスイッチを押してプレイします。
f:id:shiro0922:20181012151708j:image:w480

f:id:shiro0922:20181012175333p:image:w360

f:id:shiro0922:20181012175330p:image:w360

大きなボタンスイッチは結構高価なので、こちらのフットスイッチを使いました。

フットスイッチなので手で押すには力が要るのですが、ネジを外して分解して、内部の3本のスプリングを抜いて、軽い力で押せるようにしました。
配線は白・黒・赤の3本が出ているのですが、テスターで調べると、

だったので、白と黒にブレッドボードワイヤをはんだ付けして、IchigoJamのBTNとGNDにつなぎました。

画面はこちらの8インチモニタを使いました。12VのACアダプタが付属していて、背面のUSB-5V出力からIchigoJamの電源も取れて便利です。

プログラム

VIDEO 3(16文字×12行モード)で、大きな表示にしています。
表示を8行に収めているので、20行目の「VIDEO 3」を「SWITCH 1」に変えれば、IchigoBoyでも遊べます(^_^)

10 '*100m Dash for Event
20 VIDEO 3:CLS
30 ?"*100m Dash*"
40 ?"READY?"
50 IF BTN() CONT
60 IF !BTN() CONT
70 CLS
80 LC 0,1:?CHR$(251)
90 LC 0,0
100 FOR T=3 TO 1 STEP -1
110 ?T;" ";:BEEP:WAIT 60
120 NEXT
130 ?"GO!":BEEP 10,60
140 LC 1,1:CLT
150 FOR R=1 TO 100
160 IF !BTN() CONT
170 IF BTN() CONT
180 ?CHR$(8,46,251);
190 NEXT
200 T=TICK()
210 ?" ";T/60;".";T%60/6;
220 BEEP 10,60:WAIT 60
230 IF !BTN() CONT
240 RUN
コメント
0件
トラックバック
0件
ブックマーク
0 users

[]HokkaidoDake

先日PCNから発売された、北海道地震のチャリティー基板「HokkaidoDake」。さっそく1個購入しました。
https://hello002.stores.jp/items/5b920c48ef843f2b860007d6
(現在はSOLD OUT)

北海道の形のIchigoDake基板。首から下げるペンダント式になっています。
f:id:shiro0922:20181004174730j:image:w320

f:id:shiro0922:20181004174801j:image:w480

裏面には各地のPCNの名前をシルク印刷。もちろん上田も入っています(^_^)v
f:id:shiro0922:20181005130221j:image:w640

一体型の「IchigoIgaiZenbu」に差して動かしてみました。
販売ページでは「本製品にファームウェアは書きこまれておりません」となっていましたが、IchigonQuest OS(北海道弁バージョン)が入っていました。
f:id:shiro0922:20181005125209j:image:w480

f:id:shiro0922:20181005125155j:image:w360

ささやかですが、被害に遭った北海道の皆さんに少しでもお役に立てば嬉しいです。

コメント
0件
トラックバック
0件
ブックマーク
0 users

[]LED Heart

LED Star」に続くクリスマス向けイルミネーション基板の第2弾、ハート形です。
IchigoJamプログラム次第で、様々に光らせられます。
動画はこちら。
D

LEDをハート形に並べた基板を作成。
f:id:shiro0922:20180920234252j:image:w480

f:id:shiro0922:20180921101639p:image:w640

LEDをはんだ付けしてIchigoJamに装着。
aitendoのIchigoJam互換基板「ai.jam」に載せて、赤と白のクリスマスカラーにしてみました(^_^)
f:id:shiro0922:20180920234050j:image:w360

基板データ

*この基板ガーバーデータは、CC BYライセンスとします。どうぞご利用ください。
f:id:shiro0922:20180316072743p:image
(C) 2018 Shiro Saito (http://d.hatena.ne.jp/shiro0922/)

このファイルをそのままFusion PCBで登録すれば、基板を発注できます。
基板寸法は70×32mmです。

プログラムリスト

セレクタ

スロット1〜3のプログラムを選択起動します。

10 '*Selecter
20 CLV
30 FOR P=1 TO 10:OUT P,0:NEXT
40 '@LOOP
50 OUT 1<<N
60 CLT
70 '@INBTN
80 IF BTN() LRUN N+1
90 IF TICK()<60 GOTO 70
100 N=N+1:IF N>2 N=0
110 GOTO 40
イルミネーション

様々なパターンでハート形のLEDが光ります。

10 '*Heart Illumination
20 CLV:OUT 0:OUT 10,0
30 @LOOP
40 FOR I=1 TO 10
50 OUT I,1
60 WAIT 10
70 NEXT
80 WAIT 20
90 FOR T=1 TO 3
100 OUT 0
110 WAIT 20
120 OUT 1023
130 WAIT 20
140 NEXT
150 FOR I=1 TO 9
160 OUT I,0
170 WAIT 10
180 NEXT
190 FOR I=1 TO 9
200 OUT I,1
210 WAIT 10
220 NEXT
230 FOR I=1 TO 10
240 OUT I,0
250 WAIT 10
260 NEXT
270 GOTO @LOOP
ルーレット

IchigoJamのボタンを押すとルーレットが回ります。もう一度ボタンを押すとゆっくりになって止まります。
「赤のLEDで止まったら今日はラッキー」と「恋占い」にしたら、女の子にウケるかも。

10 '*Roulette
20 CLV
30 OUT 0
40 OUT 10,1
50 L=10
60 @START
70 IF !BTN() CONT
80 IF BTN() CONT
90 @LOOP
100 GSB @LED1
110 WAIT 3
120 IF !BTN() GOTO @LOOP
130 Z=RND(3)
140 FOR I=1 TO 5+Z
150 GSB @LED1
160 WAIT 20
170 NEXT
180 GOTO @START
190 @LED1
200 OUT L,0
210 L=L+1
220 IF L>10 L=1
230 OUT L,1
240 BEEP 10,2
250 RTN
コメント
0件
トラックバック
1件
ブックマーク
0 users

[]輪唱ボード

FacebookのIchigoJam-FANグループで、「かえるのうた」の輪唱をやっていた方がいたので、私もやってみました。
動画はこちら。
D

IchigoJam×3台のTXとRXをつないで、1フレーズ歌った後に次のIchigoJamへ信号を送信して、輪唱していきます。接続は以下のとおり。

お父さん(TX)→(RX)お母さん(TX)→(RX)子ども

あと、電源を共有するために、3台のCN5ソケットの+5VとGNDを接続しています。

プログラムリスト

3台とも同じプログラムです。1台目のIchigoJamでボタンを押すと次々と歌い始め、歌い終わるとまたボタン入力待ちになります。

10 '*Kaeru no Uta (Rinsho)
20 CLV
30 UART 1,1
40 LED 1
50 PLAY "R"
60 WAIT 120
70 LED 0
80 @LOOP
90 IF !BTN() AND INKEY()<>42 CONT
100 LED 1
110 PLAY "O3CDEFEDCR"
120 IF SOUND() CONT
130 ?"*"
140 PLAY "O3EFGAGFER CRCRCRCR C8C8D8D8E8E8F8F8E8R8D8R8C8R8"
150 IF SOUND() CONT
160 LED 0
170 GOTO @LOOP

なお動画では、3台とも同じかえるだと面白くないので、お父さんは「O3」、お母さんは「O4」、子どもは「O5」を指定して、曲のオクターブを変えています。
意外に面白いので、ネットワークプログラミングの基本として、教室で子どもたちに隣同士でやってもらうといいかもしれません。

コメント
0件
トラックバック
0件
ブックマーク
0 users

[]ローラー距離計 V2

IchigoJamとフォトリフレクタを組み合わせた「ローラー距離計」を先日作りましたが、その後いろいろと改造しました。
f:id:shiro0922:20180919150329j:image:w640

f:id:shiro0922:20180919150358j:image:w360

プログラムリスト

10 '*Roller Measure 2
20 CLV:CLT:GSB @OLEDINIT
30 D=33
40 B=ANA(2)
50 CLS
60 ?"Roller":?"Measure"
70 LC 0,3:?0;"cm"
80 GSB @OLEDOUT
90 @LOOP
100 IF BTN() RUN
110 A=ANA(2)
120 IF B<12 AND A>=12 GSB @COUNT
130 B=A
140 GOTO @LOOP
150 @COUNT
160 LED 1
170 L=L+D
180 LC 0,3:?L/10;"cm"
190 GSB @OLEDOUT
200 LED 0
210 RTN
220 @OLEDINIT
230 poke#780,#00,#40,#21,#00,#7F,#22,#00,#07,#AE,#D5,#80,#8D,#14,#20,#00,#DA,#12,#81,#CF,#D9,#F1,#DB,#40,#A4,#A6,#AF
240 forP=#788to#799:i=i2cw(60,#780,1,P,1)
250 next
260 poke #79a,#70,#b5,#40,#18,#07,#23,#1b,#02
270 poke #7a2,#c9,#18,#10,#24,#03,#78,#db,#00
280 poke #7aa,#d3,#18,#1d,#68,#0d,#60,#5d,#68
290 poke #7b2,#4d,#60,#20,#30,#08,#31,#01,#3c
300 poke #7ba,#f4,#d1,#70,#bd
310 @OLEDOUT
320 forP=0to7:i=usr(#79A,#907-P):i=i2cw(60,#781,1,#700,128):next:rtn
コメント
0件
トラックバック
1件
ブックマーク
0 users

[]ローラー距離

車輪を転がして距離を測る「ローラー距離計」を作ってみました。
f:id:shiro0922:20180913230635j:image:w640

f:id:shiro0922:20180913230737j:image:w360

コロコロと転がしていくと、有機ELディスプレイ距離が表示されます。
f:id:shiro0922:20180913230711j:image:w360

計測の仕組みは、回転するプーリーの穴をフォトリフレクタで検知して、距離をカウントしています。
f:id:shiro0922:20180914000153j:image:w360

ユニバーサル基板を使って、フォトリフレクタと抵抗を載せたシールド基板を作りました。
f:id:shiro0922:20180913201953j:image:w360

穴のある/無しを見るだけなので、距離は3cm単位でしか測れません。とてもアバウトな距離計です(^_^;)
まあ、車輪の滑りや、プーリーを回す輪ゴムの伸縮もあるので、この程度の精度がいい所でしょう。ギアを組んでプーリーを増速したり、もっと大きなプーリーを使えば、精度は出そうですが…。

今回、タミヤの「楽しい工作シリーズ」のパーツを買い集めてメカを作ってみました。
こんな簡単な機構でも、実際に作ってみないとわからないことがたくさんあって、いろいろ勉強になりました。
もし野外で使うなら、フレームやタイヤをもっとしっかりした物にしないといけないでしょう。

今回はとりあえず距離計を作ってみましたが、他のメカにもいろいろ応用できます。
例えば、同じ仕組みをロボットカーに載せれば、走行距離のカウントや速度計測などができそうです。

材料

回路図

f:id:shiro0922:20180913235100p:image:w640
フォトトランジスタのバイアス抵抗を、今回51kΩにしました。こうするとANA(2)の値が

になります。
TPR-105のデータシートによると推奨抵抗値は1kΩなのですが、その場合のANA(2)の値は

になります。判別が難しくなりますが、その代わり反応速度が上がるようです。
今回は穴の判別を優先して大きい抵抗にしましたが、速度計測などをする時は小さい抵抗にして反応速度を上げるといいと思います。

プログラムリスト

※(9/14修正)明るい場所での誤検知を防ぐため、穴の判断のしきい値を変更。

10 '*Roller Measure
20 CLV:GSB @OLEDINIT
30 D=30
40 B=ANA(2)
50 CLS
60 ?"Roller":?"Measure"
70 LC 0,3:?0;"cm"
80 GSB @OLEDOUT
90 @LOOP
100 IF BTN() RUN
110 A=ANA(2)
120 IF B<850 AND A>=850 GSB @COUNT
130 B=A
140 GOTO @LOOP
150 @COUNT
160 L=L+D
170 LC 0,3:?L/10;"cm"
180 GSB @OLEDOUT
190 RTN
200 @OLEDINIT
210 poke#780,#00,#40,#21,#00,#7F,#22,#00,#07,#AE,#D5,#80,#8D,#14,#20,#00,#DA,#12,#81,#CF,#D9,#F1,#DB,#40,#A4,#A6,#AF
220 forP=#788to#799:i=i2cw(60,#780,1,P,1)
230 next
240 poke #79a,#70,#b5,#40,#18,#07,#23,#1b,#02
250 poke #7a2,#c9,#18,#10,#24,#03,#78,#db,#00
260 poke #7aa,#d3,#18,#1d,#68,#0d,#60,#5d,#68
270 poke #7b2,#4d,#60,#20,#30,#08,#31,#01,#3c
280 poke #7ba,#f4,#d1,#70,#bd
290 @OLEDOUT
300 forP=0to7:i=usr(#79A,#907-P):i=i2cw(60,#781,1,#700,128):next:rtn

プログラム内部では、距離Lをmm単位で計測しています。そのため最大で32767mm=約32mまでしか測れません。
30行の「D=30」が、穴1つにつきカウントする距離(mm)です。メカの機構によって、この数値を較正して距離を合わせてください。

その後

フレームや基板を改良した「ローラー距離計 V2」を作りました。
http://d.hatena.ne.jp/shiro0922/20180919

コメント
0件
トラックバック
1件
ブックマーク
0 users

[]X68015

先日BEEPから発売された、Raspberry Pi用ケース「初代 X68000」(BEEP限定ブラックモデル)。
https://www.beep-shop.com/ec/products/detail/670
入手してしばらくそのままだったのですが、開封して組み立ててみました。
f:id:shiro0922:20180912010943j:image:w360

ケースは前面・背面・側面2枚の4パーツでできています。
f:id:shiro0922:20180912194345j:image:w360

完成図。デカールを貼るのが難しかった…。
f:id:shiro0922:20180912213529j:image:w360

IchigoJam RPiを動かしてみました。かつてのBASICマシンの雰囲気でいいですね(^_^)
f:id:shiro0922:20180912210719j:image:w360

ツクモから発売された「Pi STARTER」を入れてみました。プチコンと同じくSmile BASICです。
容量「67022848 bytes free」がスゴイ(^_^)
f:id:shiro0922:20180912212122j:image:w360

f:id:shiro0922:20180912212137j:image:w360

コメント
0件
トラックバック
0件
ブックマーク
0 users

[]タイム計測装置

IchigoJamとエレキットの赤外線センサーを使って、車が往復コースを走るタイムを計測します。
動画はこちら。
D

f:id:shiro0922:20180903162935j:image:w640
手作り感あふれる装置です(笑)
ベースの板はホームセンターで買った桐の集成材(92×40cm)、壁はamazonの段ボール箱です。

f:id:shiro0922:20180903150712j:image:w360
メインの計測コンピュータはIchigoJam
液晶シールド基板を新たに作りました。計測用の入力ポートとして、OUT5・OUT6ポート(プログラムでIN10・IN11ポートに切り替え)を付けています。100kΩの抵抗でプルアップ。


f:id:shiro0922:20180903163808j:image:w240
センサーはエレキットの「リレー付き赤外線通過・反射センサー PS-3242」。
https://www.elekit.co.jp/product/PS-3242
スタートラインとリターンラインの2セット使います。
部品点数が結構多くてはんだ付けが大変ですが、かなり賢く、いい感度で反応します。
発光部と受光部の間に電源ケーブルがあるのですが、走行する車がひっかかるので工作用紙でカバーしました。

f:id:shiro0922:20180903163554j:image:w640
受光している赤外線が切れると、リレーがカチンとONになります。
その出力を、そのままIchigoJamの入力につなげます。

f:id:shiro0922:20180903150941j:image:w360
今回はLEGO Education WeDoの車を、Scratchで制御して走らせます。
車の前に距離センサーを付けています。

f:id:shiro0922:20180904021637p:image:w360
Scratchのサンプルプログラム
距離センサーの値を見て、前に壁が近づくとバックしてもどります。

f:id:shiro0922:20180903163153j:image:w360
計測結果。リターンラインまでのラップタイムが5.5秒、往復タイムが8.3秒でした。
センサーがリレー回路で、タイムはIchigoJamのTICK関数で計算しているので、0.1秒単位の計測がせいぜいです。今回の目的には十分でしょう。

実はこの装置、以前にArduinoを使って作りました。
http://www.white.umic.jp/jyc/2015/03/17-220000.html
それをリメイクしましたが、IchigoJamだと入出力や計測プログラムがとても簡単ですね(^_^)
あとはセンサーの配置やプログラム次第で、片道コースや周回コースのタイム計測もできます。

計時プログラムリスト

※(9/5)間違って計測がスタートしても、ボタンを押すとリセットできるように修正。

10 '*Time Measure
20 SWITCH 1
30 CLS
40 CLV
50 OUT 5,-1:OUT 6,-1
60 WAIT 60
70 ?"*Time Measure*"
80 BEEP 10,30
90 IF IN(10) CONT
100 CLT
110 ?"START!"
120 BEEP
130 '@LOOP1
140 LC 0,2
150 T=TICK()
160 ?T/60;".";T%60/6;
170 IF BTN() RUN
180 IF IN(11) GOTO 130
190 ?" LAP"
200 BEEP
210 '@LOOP2
220 LC 0,3
230 T=TICK()
240 ?T/60;".";T%60/6;
250 IF BTN() RUN
260 IF IN(10) GOTO 210
270 ?" GOAL"
280 BEEP 10,30
290 IF !BTN() CONT
300 RUN

※20行の「SWITCH 1」を削除すれば、通常のモニタ環境で動かせます。

コメント
0件
トラックバック
0件
ブックマーク
0 users

[]micro:Dakeアダプタ

micro:bitをIchigoIgaiに差す変換コネクタ「micro:Dakeアダプタ」が、PCN公式サイトで発売されました。
https://hello002.stores.jp/items/5b7cc7e65f7866410100004d
さっそく入手して工作してみました。
f:id:shiro0922:20180901232340j:image:w240

f:id:shiro0922:20180901232703j:image:w640

変換基板に抵抗・ダイオード・コネクタをはんだ付け。そんなに時間はかかりません。
f:id:shiro0922:20180901234338j:image:w480

アダプタが完成したら、micro:bit用IchigonQuestファームウェア「micro:Dake」ファイルをこちらからダウンロード。
https://p.na-s.jp/
micro:bitをUSBケーブルでPCに接続すると、普通のUSBドライブとして見えるので、.hexファイルをPCからコピーします。
(コピー後にmicro:bitがリセットされ、ファイルは見えません)

アダプタを介してIchigoIgaiに差し、キーボードやモニタをつないで電源ONすると、micro:bitがIchigonQuest環境のコンピュータになります。
f:id:shiro0922:20180902000336j:image:w640

f:id:shiro0922:20180902000553j:image:w640

他のPCやタブレットが無いとプログラミングできないのがmicro:bitの欠点ですが、これで単独でプログラミングができます。
通常のIchigonQuestと比べて、LEDマトリックスのお絵かき機能や、各種センサーを扱う命令が追加されています。

コメント
0件
トラックバック
0件
ブックマーク
0 users
shiro0922
shiro0922