上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- -- l スポンサー広告 l top
前のタッチパネルを動かしてから、指タッチをあきらめるならペンにADCを付けて5線式回路にすればバッファなしでもいけるはずだな、と思っていたのですが、4線タッチ式でない単なる抵抗膜はaitendoにも置いてないし、何か身近で良いものないかな、と考えていたところ、カーボン→炭→墨汁乾かせばいけるのではないかな?と思いつきまして、

こどもパソコンichigojam向けだし、夏休み工作っぽいし。ということで暇を見て実験してみました。



 多少でも反応すればよいか程度に考えていたのですが、乾いた墨汁は案外良い抵抗範囲で(数百~1KΩ、これはAitendoのタッチパネルと似通った値です。)思ったよりはペンとして動きましたので、動画をアップしました。



 回路図は以下です。今回の物はバッファもいらず、ichigojamの機能だけで制御できます。


「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">




ichigojamソフトは以下です。

10 CLS
20 GOSUB 100
25 IF INKEY()=32 CLS
26 LC 0,0:?"ANA-X =";A;" ANA-Y =";B;" ";
30 IF (X<0)OR(Y<0) GOTO 20
40 LC X,Y:?CHR$(1);
60 GOTO 20
100 OUT1,1:OUT2,1:OUT3,0:OUT4,0
110 X=ANA():A=X
120 IF (X<400)OR(X>800) X=-1 ELSE X=X-400:X=X*31/(800-400)
150 OUT1,1:OUT2,0:OUT3,1:OUT4,0
160 Y=ANA():B=Y
170 IF (Y<400)OR(Y>650) Y=-1 ELSE Y=Y-400:Y=Y*23/(650-400)
180 RETURN


※お使いになる場合、抵抗膜によって値が違うと思われます。このソフトを走らせると、上の方にX,Yの生ANA値が見えますので、ペンを動かしながらその値を控えておいて、120行と170行に入れれば調整できます。
120行の800、400の代りに右端、左端のXの値、170行の650,400に上端、下端のYの値をいれます。
 
簡単に原理を説明します。
下の図がX座標の読み取り時です。左の2端子に3.3V、右2端子に0Vを与えます。
こうすると右から左に向けて電圧が徐々にあがりますので、BTN端子に付けたペンを当てるとその位置の電圧によってX座標がわかります。


下の図がY座標の読み取り時です。上の説明の左右を上下に置き換えて読んでください。

 
それではまたです。




スポンサーサイト
2015.08.14 Fri l ICHIGOJAM l コメント (1) l top
暑い日が続きますね。今日少しだけ時間ができたのでICHIGOJAMタッチパネルアダプタの回路図を入れてみました。

回路図にすると配線が多いようですが、バッファIC1個だけの簡単な回路です。
R1とR2は「タッチしていない時」を検出するためのプルアップ抵抗です。

うっかりしてましたが回路図中の74125は74HC125です。普通の74125(今時売ってない?)5V用ですが、この回路は3.3VなのでHCまたは他シリーズで3.3Vに対応した石が必要です。


簡単に動作を説明してみます。

もうひとつうっかりですが、以下の説明図及び文で、「オン」とは0Vを与えること(OUT命令で0)、「オフ」とは3.3Vを与えること(OUT命令で1)です。これは74HC125の制御入力がアクティブロー(0Vでオン)なのでこうなっています。



style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">




■下がX座標を検出する時の操作です。


X側の74HC125をオンにしてます。こうすると、X側は抵抗膜の両端に3.3Vと0Vを繋いだ状態となり、その間の電圧はX座標に比例して異なります。
Y側の74HC125をオフにしてます。こうすると、Y側はフロートになり、タッチしていないと100KΩ抵抗でプルアップされているだけになります。このときタッチしないでY側の電圧を見るとプルアップで3.3Vになります。

タッチすると、Y側の抵抗膜がX側に触れますので、Y側の電圧はX側に触れた位置(X座標)の電圧となります。プルアップ抵抗の抵抗膜の抵抗より非常に大きいので、このときは影響は無視できます。こうしてY側に繋がっているBTNピンをANA命令で読むことでX座標を読むことができます。



■次がY座標を検出する時の操作です。


X側の74HC125をオフにし、Y側の74HC125をオンにしてます。あとは上の説明をX,Y入れ替えてみていただけば良いと思います。

■プログラムについて
操作は全てICHIGOJAMのプログラムが行っています。OUT命令でX,Yを交互にオン、オフし、ANA命令で反対側の電圧を見ます。
タッチされているかどうかは、X座標、Y座標の両方の大きさで見ています。ANAの値が両方とも3.3V近く(800ないし900以上)になっていればプルアップの値でタッチされていない、どちらかがそれ未満ならタッチされてる、と判断して画面座標に変換します。
前回と同じものですが、ICHIGOJAMソースをコピーします。


10 CLS:LC28,0:?"CLS";
20 GOSUB 300
25 LC 0,0:?"x=";X;".";"y=";y;" ";
35 WAIT 1
40 IF X>0 AND Y>0 THEN GOSUB 200
45 IF X>50 AND Y<4 THEN GOTO 10
50 GOTO 20
195 '**********************
196 ' SEMIGRAPHIC ROUTINES
197 '**********************
200 '=== PSET X,Y ===
205 Z=(X&1)+(Y&1)*2:W=X/2:V=Y/2:LC W,V:? CHR$(VPEEK(W,V)|(1<< Z)|#80):RETURN
290 '**********************
295 ' TABLET ROUTINE
297 '**********************
300 OUT1,0:OUT2,1
310 Y=ANA(2):IFY>800 THEN Y=-1ELSE Y=(Y-170)*48/(800-190)
320 OUT1,1:OUT2,0
330 X=ANA(0):IFX>900 THEN X=-1 ELSE X=(900-X)*31/(450-85)
340 RETURN

 
■補足
74HC125を使っている理由は、読み取る側の反対側を切り離してフロートにする必要があるためです。フロートにしないでドライブしたままだと、その電圧にひっぱられてタッチした反対側の電圧を読むことができません。今のICHIGOJAMのOUT端子はオン、又はオフの2状態で、フロートという状態がないのでフロートにできる74HC125を使っています。
 
しかし、ICHIGOJAMのベースとなっているLPC1114はデバイスの能力としてはIOをフロートにもできるので、今後ICHIGOJAMのファームウェアバージョンアップでフロートもできるようになれば、74HC125なしでさらにシンプルにできる可能性が有ります。

 
今日も暑いのでこのくらいで。

それではまたです。

2015.08.09 Sun l ICHIGOJAM l コメント (0) l top
本業多忙のため、だいぶ間が空いてしまいました。今日は夕方から時間が取れたので、ichigojamにつける抵抗膜型タブレットを動かしてみました。

当初はPIC32MXを使って色々と凝ったことをするつもりだったのですが、良く考えたらichigojamはADコンバータもIOも持っていいて、簡単に制御できるので、ichigojamに繋いで自分でやらせれば良いことに気付き、早速基板化してみました。
部品はコネクタとバッファIC1個だけでできます。



動きはこちらをご覧ください。チャタリング対策など入れていないので時々誤認識しているみたいですね。
時間ができたら改良しないと。

「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">






ichigojamのソフトは以下です。今回は外付けマイコンを使っていないので、ソフトはほんとにこれだけで動きます。
ichigojamのANA,OUT命令秀逸です。

10 CLS:LC28,0:?"CLS";
20 GOSUB 300
25 LC 0,0:?"x=";X;".";"y=";y;" ";
35 WAIT 1
40 IF X>0 AND Y>0 THEN GOSUB 200
45 IF X>50 AND Y<4 THEN GOTO 10
50 GOTO 20
195 '**********************
196 ' SEMIGRAPHIC ROUTINES
197 '**********************
200 '=== PSET X,Y ===
205 Z=(X&1)+(Y&1)*2:W=X/2:V=Y/2:LC W,V:? CHR$(VPEEK(W,V)|(1<< Z)|#80):RETURN
290 '**********************
295 ' TABLET ROUTINE
297 '**********************
300 OUT1,0:OUT2,1
310 Y=ANA(2):IFY>800 THEN Y=-1ELSE Y=(Y-170)*48/(800-190)
320 OUT1,1:OUT2,0
330 X=ANA(0):IFX>900 THEN X=-1 ELSE X=(900-X)*31/(450-85)
340 RETURN


回路も実に簡単なのでタッチパネル操作の解説と合わせて書きたかったのですが、今日は遅いのでここまでです。
(Aitendoのコネクタにはんだ不良が有って、その解析で時間取られてしまいました。。。)

次回時間ができたらもう少し改良と、回路アップします。

それではまたです。


2015.08.02 Sun l 未分類 l コメント (0) l top
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。