【 아두이노 센서#15】 TC74 센서 & 74HC595 응용회로 실습
지난 시간 I2C 통신 방식을 이용하는 LCD에 TC74 온도 센서의 온도 값을 표시해 보았다.(TC74 to i2c LCD강좌 보기☜)
이번 시간은 지난시간 활용 했던 시프트 레지스터(74HC595)를 이용해서 TC74센서의 온도 값을 레벨미터 형태로 표시해볼 것이다.
▶ 선수 학습 :
1. 시프트 레지스터 실습 강좌보기클릭☜
2. TC74온도 센서 활용하기1 강좌보기클릭☜
▶ 실습에 사용되는 온도센서 자료 ( TC74 )
《 DIP 타입 》
▶ 실습 목표 :
1. TC74 센서의 온도 값을 8bit 레벨값(LED)으로 표시할 수 있다.
2. 시프트 레지스터를 온도센서와 결합해보는 활용법을 익힐 수 있다.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 프로그램 코드 및 설명 :
/* l2C 온도 센서 값을 읽어 LED 막대 그래프로 표시 하기 */
#include <Wire.h> // I2C 라이브러리 삽입
const int SER=8;
const int LATCH=9; // LATCH 핀과 LATCH 상수 정의
const int CLK=10; // Clock 핀과 CLK 상수 정의
int temp_address=72; // 제조회사 제공 고정값
int vals[8]={1,3,7,15,31,63,127,255}; //그래프로 표시할 LED배열선언
void setup() {
Serial.begin(9600);
lcd.begin(); lcd.clear();
Wire.begin(); // I2C Wire 객체 시작
pinMode(SER, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(CLK, OUTPUT);
}
void loop() {
Wire.beginTransmission(temp_address); // I2C 센서와 통신 개시
Wire.write(0); //센서의 0번 레지스터를 읽겠다는 명령(쓰기모드)
Wire.endTransmission(); // 전송 완료(0값 전송 종료)
Wire.requestFrom(temp_address, 1); // 1바이트 값을 읽음
while(Wire.available()==0); // 응답이 올 때까지 대기
int c=Wire.read(); // 온도를 읽어 변수 c에 저장
int f=round(c*9.0/5.0 +32.0);
int graph=map(c, 24, 31, 0,7); // 그래프 패턴 설정
graph=constrain(graph,0,7);
digitalWrite(LATCH, LOW); // LATCH에 LOW 입력
shiftOut(SER, CLK, MSBFIRST, vals[graph]); // 데이터 전송
digitalWrite(LATCH, HIGH); // LATCH에 HIGH 입력
Serial.print(c);
Serial.print("C, ");
Serial.print(f);
Serial.println("F. ");
delay(500);
}
1. 온도가 올라갈수록 LED 레벨이 높아지도록 프로그래밍 한다.
▶ 실행 결과 :
(영상은 고화질로 설정하고 전체화면으로 보세요)
▶ 아두이노 파일(다운) :
I2C 스캐너 프로그램 :
'아두이노 > 2. 아두이노센서' 카테고리의 다른 글
【 아두이노 센서#17】 DHT11 온·습도 센서 다루기 #1 (0) | 2018.12.28 |
---|---|
【 아두이노 센서#16】 TC74 센서 & 74HC595 with I2C LCD (0) | 2018.12.27 |
【 아두이노 센서#14】 TC74 온도센서값 RGB & LCD로 출력하기 (0) | 2018.12.21 |
【 아두이노 센서#13】 TC74 온도센서 활용하기 1 (0) | 2018.12.20 |
【 아두이노 센서#12】 시프트레지스터 Bit(연산자)제어 실습 (0) | 2018.12.19 |