Arduino Micro で室温計を作った

以前購入した、Arduino Micro を持て余していたので、ブレッドボード上で簡単な室温計を作りました。

使った部品

  • Arduino Micro
  • 青色 7セグメント LED: Linkman GEM5361A (カソード・3桁)
  • IC 温度センサ: LM35DZ
  • ブレッドボード
  • ジャンバワイヤ

7セグメント LED

2013.02 に購入して、こちらも肥やしになっていた、GEM5361A を使用しましたが、現在、購入元の マルツパーツ館 WebShop でも取り扱っておらず、検索しても、情報がなく、自分で調べました。

こんな感じになってます。

GEM5361A

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

comments powered by Disqus