Arduinoで動く8pinの小さなマイコンATtiny402に温湿度センサー(DHT20,I2C接続)をつなぎ,7segLED(TM1637ドライバー)で表示してみました。
当初はCH32V003につなぐ予定でしたが,,メモリ不足に襲われ,実績のあるATtiny402に変更しました(^^;;;;;。
ATtiny402は4KBのフラッシュと256BのSRAMというメモリ構成です。
![](https://stat.ameba.jp/user_images/20230831/17/pta55/b5/b4/j/o1301066915332218933.jpg?caw=800)
[構成と接続図]
7segLEDは3桁タイプのアノードコモンでセール品(1個40円)です(^^;;;。
上段が温度,下段が湿度で小数第一位まで表示します。温度が零下の場合はマイナス記号と2桁表示にしています。
![](https://stat.ameba.jp/user_images/20230831/17/pta55/e7/da/j/o1200086515332219965.jpg?caw=800)
温湿度センサー(DHT20)はI2C接続で,ATtiny402のデフォルトの対応pinにつなぎます。
LEDドライバーTM1637はI2Cに似たシリアル接続でマイコンと通信します。
アノードコモンに対応して,セグメントの8bitは2個のLEDで共有し,桁を選択するGRIDはそれぞれのアノードに接続します。
![](https://stat.ameba.jp/user_images/20230831/17/pta55/55/47/j/o1216070515332222186.jpg?caw=800)
[プログラム]
プログラムの定義部です。
TM1637ドライバーはセグメントのフォント?データを持っていないので,数字の表示用のデータが必要です。
ATtinyではArduino言語が比較的コンパクトにコンパイルされます。今回の全プログラムでも約3KBに収まり,まだ1KBぐらいは余裕があります。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/de/6d/j/o0758077615332232733.jpg?caw=800)
setupはTM1637のシリアル接続のピン指定と初期化が主です。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/c5/7c/j/o0718048015332235463.jpg?caw=800)
loopの温湿度センサー(DHT20)のI2Cでの読み取り部です。
トリガーをかけて計測し,6バイトのデータを読み取ります。
最初の1バイトはコンディションなので今回は無視しています(^^;;;;;
![](https://stat.ameba.jp/user_images/20230831/18/pta55/6d/f3/j/o0785068615332236911.jpg?caw=800)
温湿度の計算と表示部です。
"float"は使わなくても良い計算方法があるとは思いますが,マニュアル通りの計算式に近づけてみました。(本当にこれで良いのかな?(^^;;;;;)
表示では温度が零下の場合分けがあります。
また小数点として二桁目の第7ビットをONにしています。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/28/aa/j/o0736080215332239598.jpg?caw=800)
LED表示部です。
command2は表示桁の指定とセグメントデータを送り,command3は表示の明るさなどを指定します。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/75/2a/j/o0688049615332243129.jpg?caw=800)
TM1637のシリアル通信部です。
I2Cのように,
・clock がHighの時にDIOをHigh→Lowでスタート
・clock がHighの時にDIOをLow→Highでエンド
信号になります。
その間に8bitデータをLSBから送りますが,最後にクロックをもう一度送ってACKとする必要があるのが注意点ですね。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/87/43/j/o0723064715332244372.jpg?caw=800)
以上,今までにPICAXEのBASIC言語やRP2040のPythonでやってきたことの焼き直しですが,,ATtiny402がかなり使えるのが分かって良かったです(^^)。
ATtiny402は少し値段が上がりましたが,それでも購入時で76円でしたので,センサーはもとより,ちょっと良い電池ボックスよりもお安いですからね(^^;;;;。
当初はCH32V003につなぐ予定でしたが,,メモリ不足に襲われ,実績のあるATtiny402に変更しました(^^;;;;;。
ATtiny402は4KBのフラッシュと256BのSRAMというメモリ構成です。
![](https://stat.ameba.jp/user_images/20230831/17/pta55/b5/b4/j/o1301066915332218933.jpg?caw=800)
[構成と接続図]
7segLEDは3桁タイプのアノードコモンでセール品(1個40円)です(^^;;;。
上段が温度,下段が湿度で小数第一位まで表示します。温度が零下の場合はマイナス記号と2桁表示にしています。
![](https://stat.ameba.jp/user_images/20230831/17/pta55/e7/da/j/o1200086515332219965.jpg?caw=800)
温湿度センサー(DHT20)はI2C接続で,ATtiny402のデフォルトの対応pinにつなぎます。
LEDドライバーTM1637はI2Cに似たシリアル接続でマイコンと通信します。
アノードコモンに対応して,セグメントの8bitは2個のLEDで共有し,桁を選択するGRIDはそれぞれのアノードに接続します。
![](https://stat.ameba.jp/user_images/20230831/17/pta55/55/47/j/o1216070515332222186.jpg?caw=800)
[プログラム]
プログラムの定義部です。
TM1637ドライバーはセグメントのフォント?データを持っていないので,数字の表示用のデータが必要です。
ATtinyではArduino言語が比較的コンパクトにコンパイルされます。今回の全プログラムでも約3KBに収まり,まだ1KBぐらいは余裕があります。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/de/6d/j/o0758077615332232733.jpg?caw=800)
setupはTM1637のシリアル接続のピン指定と初期化が主です。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/c5/7c/j/o0718048015332235463.jpg?caw=800)
loopの温湿度センサー(DHT20)のI2Cでの読み取り部です。
トリガーをかけて計測し,6バイトのデータを読み取ります。
最初の1バイトはコンディションなので今回は無視しています(^^;;;;;
![](https://stat.ameba.jp/user_images/20230831/18/pta55/6d/f3/j/o0785068615332236911.jpg?caw=800)
温湿度の計算と表示部です。
"float"は使わなくても良い計算方法があるとは思いますが,マニュアル通りの計算式に近づけてみました。(本当にこれで良いのかな?(^^;;;;;)
表示では温度が零下の場合分けがあります。
また小数点として二桁目の第7ビットをONにしています。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/28/aa/j/o0736080215332239598.jpg?caw=800)
LED表示部です。
command2は表示桁の指定とセグメントデータを送り,command3は表示の明るさなどを指定します。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/75/2a/j/o0688049615332243129.jpg?caw=800)
TM1637のシリアル通信部です。
I2Cのように,
・clock がHighの時にDIOをHigh→Lowでスタート
・clock がHighの時にDIOをLow→Highでエンド
信号になります。
その間に8bitデータをLSBから送りますが,最後にクロックをもう一度送ってACKとする必要があるのが注意点ですね。
![](https://stat.ameba.jp/user_images/20230831/18/pta55/87/43/j/o0723064715332244372.jpg?caw=800)
以上,今までにPICAXEのBASIC言語やRP2040のPythonでやってきたことの焼き直しですが,,ATtiny402がかなり使えるのが分かって良かったです(^^)。
ATtiny402は少し値段が上がりましたが,それでも購入時で76円でしたので,センサーはもとより,ちょっと良い電池ボックスよりもお安いですからね(^^;;;;。