変光レインボーLEDイルミ(仮)
目的 |
チューニング・カスタム |
作業 |
DIY |
難易度 |
![](/images/icon_difficult_on.svg) 初級 |
作業時間 |
12時間以上 |
1
前から興味合ったフルカラーLEDなるもので、時間と共に発色が変化する変光レインボーLEDイルミ(仮)を作ってみました。
2
材料……というか、コアの部分は実はフルカラーLEDではなくコレ。制御用ICのPIC12F683です。
こいつは実売150円程度の癖をして、コレ自体がプログラムを書き込めて実行出来るCPU+メモリで構成されていて、ちょっとしたPCみたいなものです。
ノンプログラムのアナログ回路では構築がかなり難しいギミック(nixi的にはガジェットですかね)も、これだと非常に部品が少なくすみ楽に作れたりします。
3
で、そのPICで何かを動かすときに必要になるプログラムを作るソフトウェアは、米マイクロチップ・テクノロジー社の無料のMPLAB IDE(開発ツール)を使用します。
私は、現時点での最新バージョンMPLAB IDE v8.92を使用してます。32-bit Windowsとなってますが、Win7PROの64Bitでも問題なく動いてます。
4
……とはいえ。私の場合、ソース自体はWindowsのワードパッドで書いてたりします。(笑)
で、以下が今回書いたソースです。ド素人が趣味で書いたものなので、判る人が見たら、無駄が多いとかこれはいかんとか色々突っ込みどころは満載でしょうが、ここに下らん批評は敢えてご勘弁下さい。居ないとは思いますが、もしこんなのでも使いたい人が居ましたら、まあどうぞ使ってやって下さい。
因みに言語はアセンブラです。
; ========================== ここから ==============================
;
; PIC12F683
; フルカラーLED変光イルミ(仮)
;
; 内部クロック(500KHz)
; 全てのピン(6ピン)をデジタルIOで使用
; GP0-2使用
;
; GP0 = R/GP0 = G/GP0 = B
;
LIST P=12f683
#INCLUDE <p12f683.inc>
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BOD_ON & _IESO_OFF& _PWRTE_ON & _INTOSCIO & _MCLRE_OFF
CBLOCK 20h ;変数設定のようなもの。
Big2Small ;新しい色。
Small2Big ;消える色。
Count ;使いまわし。悪い見本。
ENDC
ORG 0
; PICの初期化
INIT
MOVLW 07h
MOVWF CMCON0 ;GP2-0はデジタルIO
BSF STATUS,RP0 ;■バンク1に切替え
CLRF TRISIO ; GP0-5は出力
MOVLW b'0110000' ; CLOCK=500KHz
MOVWF OSCCON
CLRF ANSEL ;デジタルIO(AN機能を使用しない)
BCF STATUS,RP0 ;■バンク0に切替え
; メイン処理
MAIN
; 白→赤
CALL SetBigSmall
White2Red
CALL Red ;赤点燈
CALL Weight1 ;Small2Bigの値分待つ
INCF Small2Big,F
CALL White ;白点燈
CALL Weight2 ;Big2Smallの値分待つ
DECFSZ Big2Small,F
GOTO White2Red
CALL Red ;赤点燈
CALL Weight3
; 赤→緑
CALL SetBigSmall
Red2green
CALL green ;緑点燈
CALL Weight1 ;Small2Bigの値分待つ
INCF Small2Big,F
CALL Red ;赤点燈
CALL Weight2 ;Big2Smallの値分待つ
DECFSZ Big2Small,F
GOTO Red2green
CALL green ;緑点燈
CALL Weight3
; 緑→黄
CALL SetBigSmall
green2yellow
CALL yellow ;黄点燈
CALL Weight1 ;Small2Bigの値分待つ
INCF Small2Big,F
CALL green ;緑点燈
CALL Weight2 ;Big2Smallの値分待つ
DECFSZ Big2Small,F
GOTO green2yellow
CALL yellow ;黄点燈
CALL Weight3
; 黄→青
CALL SetBigSmall
yellow2blue
CALL blue ;青点燈
CALL Weight1 ;Small2Bigの値分待つ
INCF Small2Big,F
CALL yellow ;黄点燈
CALL Weight2 ;Big2Smallの値分待つ
DECFSZ Big2Small,F
GOTO yellow2blue
CALL blue ;青点燈
CALL Weight3
; 青→桃
CALL SetBigSmall
blue2pink
CALL pink ;桃点燈
CALL Weight1 ;Small2Bigの値分待つ
INCF Small2Big,F
CALL blue ;青点燈
CALL Weight2 ;Big2Smallの値分待つ
DECFSZ Big2Small,F
GOTO blue2pink
CALL pink ;桃点燈
CALL Weight3
; 桃→水
CALL SetBigSmall
pink2aqua
CALL aqua ;水点燈
CALL Weight1 ;Small2Bigの値分待つ
INCF Small2Big,F
CALL pink ;桃点燈
CALL Weight2 ;Big2Smallの値分待つ
DECFSZ Big2Small,F
GOTO pink2aqua
CALL aqua ;水点燈
CALL Weight3
; 水→白
CALL SetBigSmall
White2aqua
CALL White ;白点燈
CALL Weight1 ;Small2Bigの値分待つ
INCF Small2Big,F
CALL aqua ;水点燈
CALL Weight2 ;Big2Smallの値分待つ
DECFSZ Big2Small,F
GOTO White2aqua
CALL White ;白点燈
CALL Weight3
; 赤に戻る
GOTO MAIN ;終わらないのが終わり
; サブルーチン
; << Big2SmallとSmall2Bigに初期値入力 >>
SetBigSmall
MOVLW d'254'
MOVWF Big2Small
MOVLW 1
MOVWF Small2Big
RETURN
; << ウエイト1 >> デューティ比 小から大へ
Weight1
MOVF Small2Big,W
MOVWF Count
Weight11 NOP
DECFSZ Count,F ; ループ回数-1して0になったら次の命令をスキップ
GOTO Weight11
RETURN
; << ウエイト2 >> デューティ比 大から小へ
Weight2
MOVF Big2Small,W
MOVWF Count
Weight21 NOP
DECFSZ Count,F ; ループ回数-1して0になったら次の命令をスキップ
GOTO Weight21
RETURN
; << ウエイト3 >> 色の変わり目のタメ
Weight3
MOVLW d'50'
MOVWF Count
Weight31 NOP
DECFSZ Count,F ; ループ回数-1して0になったら次の命令をスキップ
GOTO Weight31
RETURN
;<< LEDカラーの設定 >>
;
; RB2 RB1 RB0
; B G R
; 0 0 0 無光 <= 使わない
; 0 0 1 赤
; 0 1 0 緑
; 0 1 1 黄
; 1 0 0 青
; 1 0 1 桃
; 1 1 0 水
; 1 1 1 白
; << 赤点燈 >>
Red
MOVLW b'001'
MOVWF GPIO
RETURN
; << 緑点燈 >>
green
MOVLW b'010'
MOVWF GPIO
RETURN
; << 黄点燈 >>
yellow
MOVLW b'011'
MOVWF GPIO
RETURN
; << 青点燈 >>
blue
MOVLW b'100'
MOVWF GPIO
RETURN
; << 桃点燈 >>
pink
MOVLW b'101'
MOVWF GPIO
RETURN
; << 水点燈 >>
aqua
MOVLW b'110'
MOVWF GPIO
RETURN
; << 白点燈 >>
White
MOVLW b'111'
MOVWF GPIO
RETURN
END
; =========================== ここまで ===============================
5
書いたソースはMPLAB IDEで16進数データの完全なマシン語にコンパイルした後、焼きソフトでPICに書き込みます。
画像は書き込みソフトです。
6
因みに、書き込み用のハードはこんな感じです。
家にあるのは、結構昔から在るPCのRS-232Cに接続する古いもろ基板タイプのもの(秋月のキット)なのですが、最近ではもっとコンパクト且つ綺麗なケース入りの書き込みハードが販売されているみたいです。
こいつは8PINだけではなく16PINや18PINの石も焼けるし、そもそも自分はこういう感じの剥き出し系が好きなのでこれでまったく不満はないですが、これから買う人はケース入りのを買った方が良いかも。
[PR]Yahoo!ショッピング
入札多数の人気商品!
[PR]Yahoo!オークション
関連コンテンツ
関連整備ピックアップ
関連リンク