I2Cタイプを使います。理由はこんなところ
- アナログだとノイズもあり精度が出しにくい
- SPIだと貴重なポートを消費する。
IC品番
ADT7410秋月さんで購入しました。参考LINKかこちら
ディフォルトなので13ビットで変換しているはずです。
プログラム例
1 @ARUN'TEMP
50 SWITCH1
100 POKE#700,0,0
110 R=I2CW(#48,#700,1)
115 ?R;" ";
120 R=I2CR(#48,#700,2)
125 ?R;" ";
130 T=PEEK(#700)*256+PEEK(#701)
140 PRINT T/128;".";(T+6)%128*10/128;" ";T
150 WAIT 30
160 GOTO 100
読み取りを128で割ると温度になりますが、IchigoJamでは整数で扱うので小数点以下の表示するためにPRINTが少々複雑になっています。Tが読み取ったデータです。
==追記==
このセンサーは、アドレス設定ができて最大4個を同じ線に接続できます。
とりあえず、A0=A1=Hの場合を追加してみました。
1 @ARUN'TEMP
50 SWITCH1
100 POKE#700,0,0
110 ?I2CW(#48,#700,1);
115 ?I2CR(#48,#702,2);
120 ?I2CW(#4B,#700,1);
125 ?I2CR(#4B,#704,2);" ";
130 T=PEEK(#702)<<8+PEEK(#703):U=PEEK(#704)<<8+PEEK(#705)
135 U=[1]
140 PRINT T/128;".";(T+6)%128*10/128;" ";T;" ";U/128;".";(U+6)%128*10/128;" ";U
150 WAIT 30
160 GOTO 100
--さらに追記--
MixJuiceをつないで、温度をクラウドにUPしてみました。
2 CLS:?"Ambient":UART1
3 'MJ PCT application/json
4 'MJ POST START ambidata.io/api/v2/channels/チャンネルIDを書く/data
5 '{"writeKey":"ライトキーを書く","d1":"#"}
6 'MJ POST END
100 'MAIN
110 P=#C1A
120 gosub1000:A=T
130 gosub600:gosub600:gosub600:gosub600
140 wait120
150 goto 100
600 'TX
610 ifpeek(p)<>asc("'")letP,P+1:goto610
620 P=P+1:ifpeek(P)=asc("#")?A;".";(A+6)%128*10/128;:goto620
630 ifpeek(P)<>0?chr$(peek(P));:goto620
640 ?:return
1000 R=I2CW(#4B,#700,1):R=I2CR(#4B,#702,2)
1010 T=PEEK(#702)<<8+PEEK(#703)
1020 T=T/128
1030 RETURN
----------------
回路
回路図はありませんが、A0、A1をGNDにつないでください。あとは電源とGNDとSCLとSDAをROMカセット接続するソケットにつなげばOKです。
秋月さんで購入するなら基板付きもあるので、そちらが便利かもしれません。
0 件のコメント:
コメントを投稿