Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

手作り「明るさ測定器」を作ってみよう! (前編ーブレッドボードで試運転)

f:id:miraluna:20180127173206j:plain:w80 Mira

ちっちゃなマイクロコンピュータATtiny85光センサセグメント液晶を制御して、「明るさ測定器」を自作しましょう!
(前編)

                          後編は→こちらから


Arduinoを使ってマイクロコンピュータのATtiny85(やっこchen)にプログラム(スケッチ)を書き込み、光センサから明るさを読み取ってセグメント液晶に表示させるガジェットを作りたいと思います。

◆ やっこchenことAVRマイコン「ATtiny85」
     f:id:miraluna:20190421155320j:plain:w200
ArduinoからATtiny85にスケッチを書き込む方法は
こちら→ 🎀ATtiny85のスケッチの書き込み方法と配線🎀

◆ 光センサ
     f:id:miraluna:20190131160650j:plain:w200
初めに使っていた光センサはリニア光センサ[LLS05-A]で、感度が良くて気に入ってたんだけど、つなぎ方を間違えたのかうまく動作しなくなっちゃったの。それで何かのジャンク品からとった光センサを使うことにした。それが上の写真。

◆ 光センサ配線図
f:id:miraluna:20190131222416p:plain
これはArduinoに直接つないで光センサを制御する配線図。光センサから明るさの値を読み取って、値によってLEDを点けたり消したりできるの。今回はLEDではなく、セグメント液晶に値を直接表示させようと思っています。

光センサの使い方とスケッチ、それを使ったおもちゃの記事は
こちら→ 🎀光センサの配線とプログラムとミラの歌🎀

◆ TNセグメント液晶[TS119-5]
f:id:miraluna:20180514184745j:plain
光センサから読み取った明るさの値を表示するセグメント液晶。今回使う液晶はAitendoさんで特売39円で買った「TS119-5」。バックライト付きなのよ。

TS119-5の使い方についての記事は
こちら→ 🎀セグメント液晶「TS119-5」を使う🎀

(∂_∂🎀/ プログラム スケッチ

#include "HT1621.h"//TS119-5制御ライブラリ
HT1621 ht(2,1,0);//液晶との接続は3本
const int in = A3;//光センサ読み取りピン
//const int out = 4;  LEDの制御などに使える(今回は未使用)

void setup() {
Serial.begin(9600);
//pinMode(4,OUTPUT);  LEDなどの接続(今回は未使用)
register uint8_t i;//以下6行 液晶の初期設定
ht.begin();
ht.sendCommand(HT1621::RC256K);
ht.sendCommand(HT1621::BIAS_THIRD_4_COM);
ht.sendCommand(HT1621::SYS_EN);
ht.sendCommand(HT1621::LCD_ON);
for(i=0; i<16; i++)//液晶表示をクリア
ht.write(i,0);
}

void loop() {
int n = analogRead(in);//センサの値を読み取る
Serial.print(n);//スケッチ確認用モニタ表示
char suuji[10]{//セグメントの数字の表示設定
0b11111010,//0
0b00001010,//1
0b10111100,//2
0b10011110,//3
0b01001110,//4
0b11010110,//5
0b11110110,//6
0b10001010,//7
0b11111110,//8
0b11011110,//9
};
int x = n/100;//百の位
int y = (n/10)%10;//十の位
int z = n%10;//一の位
if(x==0){ht.write(5,0b00000000);//百の位が0なら無表示
}else{ht.write(5,suuji[x]);}//百の位表示
if(x==0 && y==0){ht.write(6,0b00000000);//百と十の位が0ならどちらも無表示
}else{ht.write(6,suuji[y]);}//十の位表示
ht.write(7,suuji[z]);//一の位表示
delay(100); //待機時間
}

これが光センサから明るさの値を得て、TNセグメント液晶「TS119-5」に表示させるプログラム。
明るさの単位 ルクスへの変換計算をさせればルクスでの表示もできるけど、この光センサの値がどういうものなのか、パーツによって異なる変換のための係数はいくつなのか、それがはっきりしないから取得した値をそのまま表示させた。ルクスで表示させたところで私にはピンとこないしね。

やっこchenのメモリは8000バイトあるんだけど、このスケッチに使ったメモリは3000バイト。瞳chen(ATtiny13)の容量は1000バイトだから納まらないわね。

スケッチを書き込むときにクロックをみつは(ATmega328)と同じ8MHzにしたんだけど、どうしてか動作が遅くなっちゃう。1秒間に一回明るさを読み取るプログラムが8秒くらいに一回の遅さ。
だからプログラムの待ち時間「delay」を0.1秒(100)に書き換えた。これでなんとか約1秒間に一回表示が更新されるようになったわ。

◆ Arduinoでのスケッチ動作確認
f:id:miraluna:20190212231232j:plain

◆ ATtiny85にスケッチを書き込んでブレッドボードで動作確認
f:id:miraluna:20190212231233j:plain

     🎀 動作確認の動画です  🎀
明るさ測定器 動作確認テスト


今回はプログラムを書いて、それをやっこchenに書き込んで、ブレッドボード上で動作確認をするところまでできました。

次回、後編では実際の配線図「ます目地図」を書いて、はんだごてを手に実装したいと思います。

          🎀 後編へつづく 🎀