Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2018/07/11 09:47:09

MixJuice GET URL : kidspod.club/mj/516

アナログジョイスティック XY補正

ジョイスティックのキャリブレーションを行い変数に保持して別のプログラムに渡すためのテスト。

IN1 に10k캩でプルアップしたスイッチを接続。
ANA5,6(OUT1,2)にアナログジョイスティックを330캩の抵抗を通して接続。

スティクの可動範囲のために上下左右に倒したときに値が0,1023にならないので補正する。
ボタンを押して、値を測定。
中央・左・右・上・下の順でボタンを押して値を測定。
C D 中央のときの値 E F G H 左右上下の値

@JS 数値を計算して、-50~50の値に補正するサブルーチン。

@ST 動作テスト

問題点 ジョイスティックの構造から左上・右上・左下・右下の値が均一でない。

SOURCE CODE

10 'JOYSTICK
20 CLS
30 OUT1,-1:OUT2,-1
40 A=IN(1):?"B:";
50 @BT:B=IN(1):IFA=BGOTO@BT:ELSE?B
60 C=ANA(5):D=ANA(6)
70 ?"C:";C;",";D:GOSUB@WOFF
80 ?"L:";:GSB@WON:E=ANA(5)-C:?E:GSB@WOFF
90 ?"R:";:GSB@WON:F=ANA(5)-C:?F:GSB@WOFF
100 ?"U:";:GSB@WON:G=ANA(6)-D:?G:GSB@WOFF
110 ?"D:";:GSB@WON:H=ANA(6)-D:?H:GSB@WOFF
120 GSB@WON:GOTO@ST
130 @WOFF:IFIN(1)<>BRTNELSEGOTO@WOFF
140 @WON:IFIN(1)=BRTNELSEGOTO@WON
150 @JS:Z=50
160 X=ANA(5)-C
170 IF X<0 THEN X=-50*X/E
180 IF X>0 THEN X=50*X/F
190 Y=ANA(6)-D
200 IF Y<0 THEN Y=-50*Y/G
210 IF Y>0 THEN Y=50*Y/H
220 B=IN(1)
230 RTN
240 @ST:CLS
250 @LP
255 LC32*(X+50)/100,21*(Y+50)/100
256 ?CHR$(0);
260 GSB@JS
265 LC32*(X+50)/100,21*(Y+50)/100
266 ?CHR$(#FA-B);
270 LC0,0:?"(";X;",";Y;"):";B;"      "
280 GOTO@LP

COMMENT

Kidspod運営チーム
Kidspod運営チーム2018/07/13 17:21:12

これはまた有用そうなプログラムですね。逐一キャリブレーションするのは面倒ですが、これがあれば簡単にできそう。