Arduino Micro で室温計を作った
以前購入した、Arduino Micro を持て余していたので、ブレッドボード上で簡単な室温計を作りました。
使った部品
- Arduino Micro
- 青色 7セグメント LED: Linkman GEM5361A (カソード・3桁)
- IC 温度センサ: LM35DZ
- ブレッドボード
- ジャンバワイヤ
7セグメント LED
2013.02 に購入して、こちらも肥やしになっていた、GEM5361A を使用しましたが、現在、購入元の マルツパーツ館 WebShop でも取り扱っておらず、検索しても、情報がなく、自分で調べました。
こんな感じになってます。
7セグメントライブラリ
7セグメント実装には Arduino 本家サイトからリンクされていた Seven Segment Display Library を使いました。
元々のコードは、4桁向けに実装されており、桁数を変えるにはヘッダを修正するという謎仕様のため、以下の様に変更しました。
index a799d65..5fdcf68 100755
--- a/SevSeg/SevSeg.h
+++ b/SevSeg/SevSeg.h
@@ -12,7 +12,7 @@
#include "WProgram.h"
#endif
-#define NUM_DIGITS 3
+#define NUM_DIGITS 4
class SevSeg
{
@@ -49,3 +49,4 @@ private:
};
#endif
実装コード
#include <SevSeg.h>
const int SENSOR_PIN = A0;
const int UPDATER_INTERVAL = 1000;
SevSeg sevseg;
unsigned long timer;
void setup() {
Serial.begin(9600);
sevseg.Begin(0, 13, 4, 3, 100, 6, 2, 9, 11, 12, 5, 8, 10);
sevseg.Brightness(90);
timer = millis();
}
void loop() {
sevseg.PrintOutput();
unsigned long mils = millis();
if (mils - timer >= UPDATER_INTERVAL) {
timer = mils;
int value = analogRead(SENSOR_PIN);
int templature = map(value, 0, 205, 0, 10000);
Serial.println(templature);
sevseg.NewNum(templature,(byte) 2);
}
}
ライブラリ含めこちらのリポジトリで管理しています。 ngs/arduino-thermometer