学習RPN電卓

Ichigojamとの接続例

(分圧回路でプログラミング)

CN3(IN2,VCC,GND)端子を、IchigoJamのIN2,VCC,GND端子にそれぞれ接続します。
MODE(SW21)スイッチは[Jam]側にします。
※[RESET]ボタン、[ON]ボタン、およびLCDモジュールはIchigoJamでは使用しません。

このサンプルプログラムは、サブルーチンコールした時に押されていたキーに応じて、次の変数に値を返します

 変数 A :押していたテンキーのアナログ値
 変数 K :変数Aの範囲に応じた、0~20,99の値


10 GSB@KEYPAD_SCAN: ?A,K: WAIT30: CONT
10000 @KEYPAD_SCAN
10010 A=ANA(2)

10020 IF A>1013 K=99:RTN
10030 IF A<300 K=A/30 ELSE K=A/77+6
10040 IF A>897 K=A/39-5
10050 RTN

押されたキー変数A(アナログ値)変数K
BS0~20
÷30~351
×60~692
103~1193
+160~1635
+/-215~2207
3285~2929
6351~36110
9434~44611
8509~52312
5589~60513
2657~67614
.729~75115
0791~81916
1850~88017
4897~93418
7940~97419
ENTER983~101320
non1014~102399

a.電卓キー入力編

Ichigojamプログラムにて、逆ポーランド記法の計算を実行します。
カーソルが点滅している個所がキーから式を入力する箇所です。
“>”の欄に、直前に入力した式を表示します。

RPN電卓を接続していれば、RPN電卓のテンキーを使用します(自動的に切り替えます)

RPN電卓を接続していなければ、IchigoJamのキーボードを使用します

10 ‘HONDA CALCULATOR V1.2 2021/9/4 TEAM IchigoJam HOKKAIDO
20 VIDEO1:CLS:CLV:VIDEO3:LC0,0,1:V=#9C0
30 IF ANA(2)>1013 M=1

40 @MAIN
50 CLS
60 ?STR$(#C04,16)
70 ?”T:”;T
80 ?”Z:”;Z
90 ?”Y:”;Y
100 ?”—–“
110 ?”X:”;X
120 ?”—–“
130 ?:?:?”>”;STR&(V):?CHR$(30,30,30,30)

140 IF M GSB@KEYPAD ELSE GSB@KEYBOARD
150 IF LEN(S) L=LEN(S)-1 ELSE S=V:IF LEN(S) CONT ELSE GOTO@MAIN
160 E=0:COPY V,S,16
170 FOR I=0 TO L
180 U=ASC(S+I)
190 IF U>47 AND U<58 E=E*10+U-48:F=1:IF I!=L GOTO@NEXT
200 IF F GSB@PUSH
210 IF U=42 Y=Y*X:GSB@POP
220 IF U=43 Y=Y+X:GSB@POP
230 IF U=45 Y=Y-X:GSB@POP
240 IF U=47 Y=Y/X:GSB@POP
250 IF U=64 X=-X
260 @NEXT:NEXT
270 GOTO@MAIN

1000 @PUSH
1010 T=Z:Z=Y:Y=X:X=E:E=0:F=0:RTN

2000 @POP
2010 X=Y:Y=Z:Z=T:T=0:RTN

3000 @KEYBOARD
3010 POKE#1003,1,34:INPUT S:RTN

4000 @KEYPAD
4010 S=#900+POS()
4020 LET[0],8,47,42,45,-1,43,-1,64,-1,51,54,57,56,53,50,46,48,49,52,55,0
4030 @LOOP:A=ANA(2):IF A>1013 CONT
4040 IF A<300 K=A/30 ELSE K=A/77+6
4050 IF A>897 K=A/39-5
4060 IF ANA(2)<1023 CONT
4070 ?CHR$([K]);
4080 IF [K] GOTO@LOOP
4090 RTN


※100行目と120行目のキャラクタ文字は、Alt+Shift+Hを5回押して入力する