福野泰介の一日一創 - create every day

福井弁でしゃべる無駄に細かい温度計 - お手軽I2C高精度温度センサーADT7410 x AquesTalk x IchigoJam

2018/04/07
#IchigoJam #maker 

秋月電子で500円、誤差0.5度の高精度温度センサーADT7410を使った、福井弁でしゃべる温度計。

有効桁数的には標準の13bitモードで、下一桁表示で十分そうですが、16bitモードにすると分解能が0.0078125度(1/128度)まで細かくなり、0.01度の単位までリアルタイムに変化する様子が楽しめます。

データシート(使用半導体資料)によると標準的な温度化での誤差は0度からマイナス0.2度内に安定して収まっているので、広範囲に使えそうです。

ADT7410、温度算出がとっても楽!

10 R=I2CR(#48,0,#700,2):T=PEEK(#700)<<8|PEEK(#701) 20 ?T>>7 30 WAIT30:GOTO10

16bit(=2byte)データをI2Cで取得して、7bitシフト。整数表示の温度計プログラムのできあがり!

?T>>7;".";T&#7F*10/128

下位7bit分から小数第一位を取り出して表示

5 POKE#700,3,#80:R=I2CW(#48,#700,2) 20 ?T>>7;".";DEC$(T&#7F*100/128+100,2)

16bitモードに設定して小数第二位まで表示もこれだけのプログラムでできちゃいます!
優秀!「ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール: センサ一般 秋月電子通商 電子部品 ネット通販


福井弁でしゃべる温度計にするための部品達
16x2行 AQM1602の大きめ液晶モジュールが変換基板付きで550円!(@秋月電子

数値読み上げが便利な、AquesTalk pico を使って温度をしゃべらせます。

S="tada'imano,kion;wa <NUMK VAL=10.53>do/de'su.":GSB@TALK

標準っぽく(ただいまのきおんは、10.53どです)

S="i'mano kionwa <NUMK VAL=1.53>do/deyo":GSB@TALK

フランクに(いまのきおんは、10.53どだよ)

S="ima'no/o--'-- kion;wano-- <NUMK VAL=10.53>do/yatte--":GSB@TALK

福井弁風?アクセントをいろいろ調整して、オリジナルな読み上げを作ろう!


I2Cで使う3.3V/GND/SDA/SCL、並びを揃えるための治具をコンパクトにはんだづけ


IchigoJamのCN5に差し込んで使います(長ピンソケットを使うと重ねて使う、スタック利用ができて便利!)

全プログラムはこちら
10-60 メインループ、ボタンが押されたら福井弁!
100-110 便利ツール
300-340 AQM1602 小型液晶用ライブラリ
400-410 ADT7410 高精度温度センサー用ライブラリ

10 GSB@LINIT:GSB@TINIT 20 @LOOP:CLS:GSB@TGET:?"@";:GSB@TPUT:?CHR$(1);" ADT7410" 30 GSB@LPOS:S=#900:GSB@LPUT 40 CLT 50 IF BTN() GSB@TTALK:ELSE IF TICK()<60 CONT 60 GOTO@LOOP 100 @TPUT:?T>>7;".";DEC$(T&#7F*100/128+100,2);:RTN 110 @TTALK:?"ima'no/o--'-- kion;wano- <NUMK VAL=";:GSB@TPUT:?">do/yatte--":S=#920:GSB@TALK:WAIT300:RTN 300 @LINIT:LET[0],#38,#39,#14,#70,#56,#6C,#3C,#C,#1:FORI=0TO8:POKE#700,0,[I]:R=I2CW(#3E,#700,2):NEXT 305 POKE#700,0,#48:R=I2CW(#3E,#700,2):POKE#700,#40,#18,#18,7,8,8,8,7,0:R=I2CW(#3E,#700,9):RTN 310 @LPUT:R=I2CW(#3E,S,LEN(S)):RTN 330 @LCLS:POKE#700,0,1:R=I2CW(#3E,#700,2):N=0:RTN 340 @LPOS:POKE#700,0,#80:R=I2CW(#3E,#700,2):N=0:RTN 400 @TINIT:POKE#700,3,#80:R=I2CW(#48,#700,2):RTN 410 @TGET:R=I2CR(#48,0,#700,2):T=PEEK(#700)<<8|PEEK(#701):RTN 600 @TALK:R=I2CR(#2E,#700,1):IF R STOP ELSE IF PEEK(#700)!=ASC(">") CONT 610 R=I2CW(#2E,S,LEN(S)):R=I2CW(#2E,13):RTN

おまけ、時報と合わせて温度を読み上げる風なデモ

110 @TTALK:S="#K":GSB@TALK:?"<NUMK VAL=";:GSB@TPUT:?">do sujaa'taga sitiji'wo osirasesima'su.":S=#920:GSB@TALK:S="#J":GSB@TALK:WAIT300:RTN

links
- しゃべるIchigoJamで、聞くプログラミング - 音声合成版ブラインドプログラミング

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image