« Arduinoで作ろう(5) 電子サイコロ | トップページ | Arduinoで作ろう(7) I2CのLCD + LM35DZで温度計 »

2018年6月 8日 (金)

Arduinoで作ろう(6) LM35DZで温度計

Arduino6

秋月電子の7セグLED基板を2つ連結して,温度センサLM35DZの温度計を作ってみました。
1の位の7セグLEDのSDOを10の位の7セグLEDのSDIに繋げば2桁にできるんですね。カンタンです。

温度センサLM35DZが出力するアナログ値をA0で読み取り,℃単位に換算した値がtempです。
この値を10で割った整数値temp2が10の位の数字なので,これをまずSPIで7セグLEDに送ります。
んで,次にすかさず tempから10×temp2を引いて得られる1の位の数字をSPIで7セグLEDに送ります。
そうすると,最初に送ったtemp2の値は上の桁に押し上げられて,無事2桁の温度表示ができるわけです。
秋月の7セグLED基板,便利ですなー(・∀・)

スケッチはこちら→20180608.ino

/* 秋月AE-7SEG-BOARD_2桁 + 温度センサLM35DZ */

#include<SPI.h>
#define sck 13
#define latch 10
#define sdi 11
float analogdata;
int temp, temp1, temp2;

const byte digits[10] = {
0b11111100, // 0
0b01100000, // 1
0b11011010, // 2
0b11110010, // 3
0b01100110, // 4
0b10110110, // 5
0b10111110, // 6
0b11100000, // 7
0b11111110, // 8
0b11110110, // 9
};

void setup() {
pinMode(latch, OUTPUT);
pinMode(sck, OUTPUT);
pinMode(sdi, OUTPUT);
SPI.begin();
SPI.setBitOrder(LSBFIRST);
SPI.setDataMode(0);
}

void loop() {
analogdata = analogRead(A0); 
temp = ((5.0 * analogdata) / 1024) * 100;  //温度℃

temp2 = temp / 10;       //10の位
digitalWrite(latch, 0);
SPI.transfer (digits[temp2]);
digitalWrite(latch, 1);

temp1 = temp - temp2 * 10; //1の位
digitalWrite(latch, 0);
SPI.transfer (digits[temp1]);
digitalWrite(latch, 1);

delay(1000);
}

|

« Arduinoで作ろう(5) 電子サイコロ | トップページ | Arduinoで作ろう(7) I2CのLCD + LM35DZで温度計 »

Arduino」カテゴリの記事

トラックバック


この記事へのトラックバック一覧です: Arduinoで作ろう(6) LM35DZで温度計:

« Arduinoで作ろう(5) 電子サイコロ | トップページ | Arduinoで作ろう(7) I2CのLCD + LM35DZで温度計 »