持ち歩き用ココナッツに入れたプログラム(pic112) |
ココナッツV3を使った授業もプログラムが進んできて,そろそろ終わりに近づいてきた。
今年は自分の学年で少し余裕もあり,プログラムのアイディアを練る時間もしっかり取ってみた。
プログラムを書くのは難しいにしても,アイディアを出すのはまた別なので,自分では考えつかないようなものもたくさん出た。
そんなアイディアをもらって,今自分の持ち歩き用ココナッツに入れたプログラムはこれです。
とくに,タイマーは入力部分がなかなかしゃれていて,タクトスイッチを押すたびにLEDが増えていき,長押しをするとスタートする。
これは,ココナッツv2時代に当時の生徒も考えてくれたものだが,ようやく自分でもコーディングして形にした。
それを,ラーメンタイマー用はLEDの点灯数×分でアラーム
目覚まし用はLEDの点灯数×時間でエンドレスアラームにした。
残りは,リモコンによる制御とこれも生徒が案を出して一緒に作ったディジタルテルミンを入れてみた。
コードはこんな感じなので,ココナッツv3をお持ちの方はためしてみてください。
;☆プログラムの動作
;●1 スライドスイッチ<on>、プッシュスイッチ<off>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; 入力可能なタイマー1分単位で,終了後音楽(○○さん入力の「マック」)
;
;●2 スライドスイッチ<off>、プッシュスイッチ<off>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; リモコンによる3段階調光
;
;●3 スライドスイッチ<on>、プッシュスイッチ<on>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; 入力可能なタイマー1時間単位で終了後音楽(○○さん入力の「ふたたび」)
;
;●4 スライドスイッチ<off>、プッシュスイッチ<on>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; デジタルテルミン
;
;☆プログラム本体
NA
Q1,1
;=====スイッチの位置判断して分岐先を決める部分(プログラムの先頭)=======
?i=9; ●1 スライドスイッチ<on>、プッシュスイッチ<off>
#=1:
?i=11; ●2 スライドスイッチ<off>、プッシュスイッチ<off>
#=21:
?i=8; ●3 スライドスイッチ<on>、プッシュスイッチ<on>
#=3:
?i=10; ●4 スライドスイッチ<off>、プッシュスイッチ<on>
#=100:
;=====ここから動作の記述============================
;●1 スライドスイッチ<on>、プッシュスイッチ<off>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1:
#:150:
;ここから入力後の処理を記述する。まず点滅してスタート
a=o
o=255
ws1
o=0
ws1
o=a
;ここからカウントダウン後,音楽を鳴らす
13:
wm1 ;1分待つ
?c=1 ;判定【カウンタが1になったか】
#=14: ;1になれば終了後の処理へ
c-1 ;1になっていなければカウンタを1つ減らす。
o>1 ;ビットシフト命令により表示されている数を左に減らす。
o7=0 ;ずれたことにより点灯した7番LEDを消す。
s42
wd3
s0
#=13: ;また次のカウントダウンへ
14:
o=8
vr4
;マックの最後の 113○○
s25
wd2
s27
wd2
s0
wd1
s29
wd2
s0
wd1
s34
wd2
s0
wd1
s32
wd5
s34
wd2
s0
wd3
s32
wd2
s0
wd1
s25
wd1
s0
wd1
s25
wd2
s0
wd5
s0
o=0
.
;●2 スライドスイッチ<off>、プッシュスイッチ<off>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;リモコン3段階調光
21:
o=255
wd5
p1
o=85
wd5
p1
o=0
wd5
p1
#=21:
;●3 スライドスイッチ<on>、プッシュスイッチ<on>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3:
ws1
#:150:
o=0
ws1
o=255
ws1
o=0
33:
wh1 ;1時間待つ
?c=1 ;判定【カウンタが1になったか】
#=34: ;1になれば終了後の処理へ
c-1 ;1になっていなければカウンタを1つ減らす。
#=33: ;また次のカウントダウンへ
34:
o=8
vr4
;ふたたび(千と千尋の神隠しより)113○○
s32
wd6
s39
wd9
s32
wd3
s31
wd6
s39
wd9
s0
wd1
s39
wd3
s41
wd6
s39
wd6
s37
wd6
s39
wd9
s0
wd2
s41
wd3
s43
wd3
s44
wd6
s43
wd6
s41
wd6
s39
wd6
s44
wd6
s48
wd6
s49
wd6
s41
wd3
s43
wd3
s48
wd3
s46
wd3
s44
ws1
s0
ws3
#=34:
;●4 スライドスイッチ<off>、プッシュスイッチ<on>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;ディジタルテルミン
100:
?x>200
#=101:
?x>180
#=102:
?x>160
#=103:
?x>140
#=104:
?x>120
#=105:
?x>100
#=106:
?x>80
101:
s37
o=1
wd2
#=100:
102:
s39
o=2
wd2
#=100:
103:
s41
o=4
wd2
#=100:
104:
s42
o=8
wd2
#=100:
105:
s44
o=16
wd2
#=100:
106:
s46
o=32
wd2
#=100:
;数字を入力するパーツ,サブルーチンとして使うので,呼び出し側からは
;#:150: (#=150:ではない)と呼び出す。入力が終わると呼び出した行の次の行へ戻る。
;「短く押すと数字が増える。長押しで戻る」
150:
c=1 ;最初にカウンタ変数 (c)に1をセットする。
o=c ;それを表示する。(0番LEDを点灯)
151: ;
?i=8 ;判定【タクトスイッチが押されているか】
#=152: ;押されていればカウンタを増やすルーチンへジャンプ
#=151: ;押されていなければまた判定へ
152: ;
wd7 ;0.7秒待つ。(短い押し時間を0.7秒以内に設定)
?i=8 ;判定【タクトスイッチが押されているか】
#:$ ;押されていれば長押しと判断し,入力を抜ける。
c+1 ;押されていなければ,カウンタを1増やす
o<1 ;ビットシフト命令により,表示されている数を右に増やす
o0=1 ;0ビットのみon。これでずらして消えた分を埋める。
#=151: ;長押しされていないので,また判定へ
Q
L
★ここまでがソースになります。