Arduino でちょっとした電子工作をした話

お久しぶりです。
今回は Arduino を使って電子工作をしてみたのでそれについて軽くまとめたいと思います。

作ったもの

気温に合わせて LED を光らせる簡易的な気温通知装置


完成したもの f:id:granddaifuku:20200309235744p:plain f:id:granddaifuku:20200309235745p:plain f:id:granddaifuku:20200309235749p:plain f:id:granddaifuku:20200309235754p:plain 上から順に寒い時、少し暖かい時、薄着でも出れるくらいの時、半袖でいいよーって時の色になっています。(これは私見です)


仕組み
arduino の温度センサで気温を計測し、その時の温度に応じて LED の色を変えてあげるだけです。 LED はフルカラーの物を使っていて、アナログに出力することで 0 ~ 255 の離散値で色の濃淡を扱うことができます。

以下にソースコードを貼っておきます。

int R = 9, G = 11, B = 10;
int thermo = 0;
 
void setup() {
  pinMode(R, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(B, OUTPUT);
  Serial.begin(9600);
}
 
void loop() {
  int value = analogRead(thermo);
  double t = temp(value);
  t += 8;
  if (t <= 13) {
     setColor(0, 0, 255);
  } else if (t <= 18) {
    for (int i = 0; i < 64; ++i) setColor(i + 32, i + 150, i + 64); 
  } else if (t <= 22) {
    for (int i = 0; i < 64; ++i) setColor(i + 128, i + 64, 0);
  } else {
    setColor(255, 0, 0);
  }
  Serial.println(t);
}
 
double temp(int v) {
  double value = v / 6.0;
  double volt = 5.0;
  double t = ((volt * value) / 1024) * 100;
 
  return t;
}
 
void setColor(int r, int g, int b) {
  analogWrite(R, r);
  analogWrite(G, g);
  analogWrite(B, b);
}