« 2015年4月 | トップページ | 2015年6月 »

2015年5月

2015年5月15日 (金)

UVレジンでLEDイルミネーション (2)

20150515 UVレジンで作ったLEDイルミをPIC12F683で点滅させてみました。
話の流れでいくとIchigoJamで光らせることになるところですが,LEDイルミを5個も作っちゃったので,久しぶりにPICでLチカです。
 これまで「PICのお勉強」では,16F84Aと16F88を使ってきましたが,定番の8ピンPIC,12F683を初めて使ってみました。小さくて安価なPICですが,これはこれでなかなか魅力的なやつです。単3電池2本で動くのもいいですね。

12f683_led_5 回路図はごく平凡なもので,GP0,GP1,GP2,GP4,GP5の5つにLEDをつなぎます。GP3は入力専用だから使えないんですね。
 今後のお勉強用に,12F683のテストボードを作って他に流用できるようにしてあります。PICkitを直接つないで書き込めるようにピンヘッダも取り付けてみました。
ソースはこんな↓具合です。GPIOに,LEDの点灯・消灯パターンを送って点滅させています。

/**************************************
12F683 HI-TECH C v.9.83
GP0~GP2,GP4,GP5のLED順次点灯
**************************************/

#include <htc.h>
__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_ON & BOREN_ON & MCLRE_OFF & CP_OFF & IESO_OFF & FCMEN_OFF);
#define _XTAL_FREQ 1000000 // PICのクロックは1MHz

void main(void)
{
OSCCON = 1000000; // 内蔵OSC 1MHz
ANSEL = 0b00000000; // デジタル
CMCON0 = 0b00000111; //コンパレータを使わない
TRISIO = 0b00001000; //GP3は入力,その他は出力

while (1)
{
GPIO = 0b00000001; //GP0点灯,他は消灯
__delay_ms(300);
GPIO = 0b00000010; //GP1点灯,他は消灯
__delay_ms(300);
GPIO = 0b00000100; //GP2点灯,他は消灯
__delay_ms(300);
GPIO = 0b00010000; //GP4点灯,他は消灯
__delay_ms(300);
GPIO = 0b00100000; //GP5点灯,他は消灯
__delay_ms(300);
}
}

HI-TECH Cで書いたソースとhexファイルはこちら↓
「lesson36.c」をダウンロード
「lesson36.hex」をダウンロード

 

| | コメント (0) | トラックバック (0)

2015年5月13日 (水)

UVレジンでLEDイルミネーション (1)

Uv1 facebookのIchigoJam-FANで紹介されていた,セリアで販売されているUVレジンとグミ型で,LEDイルミネーションを作ってみました。
知らなかったんだけど,UVレジンというのは紫外線で硬化する樹脂で,これでアクセサリを作ったりするのが,手芸系女子に流行っているんだそうです。
百均ショップのセリアには4g入りのハードタイプとソフトタイプがあるのですが,とりあえずハードタイプを買ってみました。あと,台所用品コーナーでシリコン製のグミ型も。そうか,これを使ってグミを作っちゃう女子もいるのか。
Uv2 UVレジンというのはジェル状で,グミ型に入れたLEDの上にぶちゅ~っと垂らす感じで入れていきます。
あまり入れ過ぎると硬化に時間がかかるようなので,ボトルの半分2gぐらいにしておきます。
よく晴れた日なら太陽光でも30分くらいで硬化するらしいのですが,どうもうまくいかなかったので,ついAmazonでKIYOHARA スーパーレジンUVクリスタルランプ9W UVL9Wってのを買ってしまいました。
これを使うと10分程度でカチンカンチンに硬化します。これは面白い。
Uv3 グミ型の底の方の硬化が不十分なら,型から取り出して更にUVランプの光を数分間当ててやるとよさそうです。
 で,できあがったLEDイルミが左の写真。少し気泡が入ってますが,まずまずのデキでしょうか。
なんだか色んな物を作りたくなってきますな。ソフトタイプのUVレジンも買ってこようかな(^^)

| | コメント (0) | トラックバック (0)

2015年5月 5日 (火)

IchigoJamでプログラミング 『Nimゲーム』

 「三山崩し」とか「nimゲーム」と呼ばれている石取りゲームを作ってみました。
1個~7個の石からなる山を3つ作り(例えば『4個の山,7個の山,2個の山』),2人のプレイヤーが交互に「ひとつの山から1個以上(何個でもよい)石を取って」いき,最後にすべての山の石の数を0個にした者が勝ち,という単純なルールです。
 石の山はRND関数で作り,IchigoJamと対戦するのですが,実はこのゲームには必勝パターンがあります。IchigoJamはその必勝パターンに持ち込もうとしてきますから,こちらがぼーっとプレイしていると絶対負けてしまいますよ。どうやったら勝てるのか,調べてみてください(^^)

10 'イシトリGAME Nim
20 CLS:CLV:?"====イシトリGAME Nim====":?
30 FOR I=0TO2
40 LET[I],RND(8):IF[I]=0 GOTO40
50 NEXT
60 GOSUB250
70 T=0:?"Your Turn :";
80 ?" ドノヤマ ?";
90 R=INKEY():IF R=0 GOTO90
100 ?CHR$(R);:INPUT" イクツ トリマスカ?",S
110 ?:LET[R-65],[R-65]-S:GOSUB250
120 LET N,[0]^[1]^[2]
130 '?"NIM",N
140 FOR I=0TO2
150 LET [10+I],[I]-N^[I]:IF[10+I]>0 LET K,I
160 NEXT
170 T=1:?"My Turn : ";
180 IF N=0 GOSUB340
190 ?CHR$(65+K);"ノ ヤマカラ ";[10+K];"コ トリマス":?
200 LET[K],[K]-[10+K]
210 LET N,[0]^[1]^[2]
220 '?"NIM",N
230 GOSUB250
240 GOTO70
250 IF([0]=0)*([1]=0)*([2]=0)GOTO320
260 FOR I=0TO2
270 ?CHR$(65+I);:?" ";
280 IF[I]=0 ?" ";:?[I]:?:GOTO300
290 FORJ=1TO[I]:?" ";:?CHR$(233);:NEXT:?" ";[I]:?
300 NEXT
310 RETURN
320 IF T=0 ?"You Win!!"ELSE ?"You Lose・・・":?
330 END
340 LET K,0
350 IF[K]=0 K=K+1
360 IF[K]=0 K=K+1
370 LET[10+K],1
380 RETURN

雑な作り方をしているものですから,あんまり美しいプログラムではないですが,とりあえず動きます。「nim_game.txt」をダウンロード
明日,時間があったらもう少しちゃんと考えてみようかな。

| | コメント (0) | トラックバック (0)

2015年5月 2日 (土)

IchigoJam ⇔ WindowsPC シリアル通信

Teraterm IchigoJamで作ったプログラムをWindowsPCに保存したり,ネットで拾ったプログラムをIchigojamに送り込むのに,USBシリアル変換モジュールを使ってシリアル通信をする手順を書き残しておきます。自分用の備忘録ですね。
 WindowsPCにTeraTermをインストールしておいて,WindowsPCとIchigoJamをUSBシリアル変換モジュールを介して接続します。
TeraTermの設定は左のようにします。
ポートの番号が分からなかったら,デバイスマネージャを起動して,「ポート(COMとLPT)」で確認しましょう。これらの設定は「名前をつけて保存」しておくといいですね。

 設定が正しくできていれば,設定したシリアルポートで接続できるはずです。
IchigoJamで作ったプログラムをLISTコマンドで表示させると,WindowsPCのディスプレイ上に表示されるコンソール画面にも同じものが表示されます。これをマウスでドラッグ&コピーして,テキスト文書にペーストすればよいわけです。
逆に,他所で拾ってきたプログラムをWindowsPCのディスプレイ上のコンソール画面にコピー&ペーストすると,IchigoJamにゆっくりとしたスピードで送信されますから,IchigoJamのSAVEコマンドで保存すればOK。
Teraterm3 これがWindowsPCのディスプレイに表示させたIchigoJamのBASICプログラムリスト。
これは,今日作った「石取りゲーム」のプログラムです。RND関数で発生させた20~30個の石をPCとプレイヤーが交互に取り合って(1回につき,1~3個の石を取る),最後の1個を取らされたら負け,というよく知られたゲームですな。思いつきでたらたらプログラムを打って,試しに走らせてエラーが出たらその都度直す・・・といういい加減な作り方をする僕には,インタプリタのBASICってのは都合がいいんだよね。  「ishitori_game.txt」をダウンロード


| | コメント (0) | トラックバック (0)

« 2015年4月 | トップページ | 2015年6月 »