BASIC4MCU | 질문게시판 | Button 눌렀을 당시에 값저장
페이지 정보
작성자 콩zz 작성일2020-01-14 09:36 조회29,414회 댓글4건본문
온도센서의 데이터 값을 시리얼로 받다가
버튼을 눌렀을 때 바로 그 즉시 나온 온도값을 저장할 수 있을까요?
#define BUTTON 6
float Low;
float Fast;
float Lowrate;
float Fastrate;
float V1, R1, KT1, cT1;
float V2, R2, KT2, cT2;
float V3, R3, KT3, cT3;
float V4, R4, KT4, cT4;
int a, b, c, d;
unsigned long Temp_pre_time = 0 ;
unsigned long Temp_cur_time = 0 ;const int Temp_duration = 1000;
int val = 0;
int old_val=0;
int state = 0;
void setup() {
// put your setup code here, to run once:
pinMode(BUTTON,INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long Temp_cur_time = millis();if (Temp_cur_time - Temp_pre_time >= Temp_duration)
{
Temp_pre_time = Temp_cur_time;
a = analogRead(A0);
V1 = a * 5 / 1024.0 ; // 센서 값을 전압 값으로 변경
R1 =((5.0*10000.0)/V1)-10000.0; // 써미스터의 저항
KT1 = 1.0/((1.0/(273.15+25.0))+(1.0/3435.0)*log(R1/10000.0)); // 절대온도
cT1 = KT1 - 273.15; // 상대온도
b = analogRead(A1);
V2 = b * 5 / 1024.0 ;
R2 =((5.0*10000.0)/V2)-10000.0;
KT2 = 1.0/((1.0/(273.15+25.0))+(1.0/3435.0)*log(R2/10000.0));
cT2 = KT2 - 273.15;
c = analogRead(A2);
V3 = c * 5 / 1024.0 ;
R3 =((5.0*10000.0)/V3)-10000.0;
KT3 = 1.0/((1.0/(273.15+25.0))+(1.0/3435.0)*log(R3/10000.0));
cT3 = KT3 - 273.15;
val = digitalRead(BUTTON);if((val==HIGH) && (old_val ==LOW))
{
state = 1- state ;
delay(1000);
}
old_val = val;
if (state ==1){
}
댓글 4
조회수 29,414master님의 댓글
master 작성일
val = digitalRead(BUTTON);
if((val==HIGH) && (old_val ==LOW)){
state = 1- state ;
// 여기에서 온도값을 저장하세요
delay(1000);
}
콩zz님의 댓글
콩zz 작성일버튼을 눌렀을 즉시에 나오는 하나의 값만 저장할 순 없나요?
master님의 댓글
master 작성일
저 if()문은 버튼 누를 시 1회만 실행 됩니다.
여러개가 저장되든가요? 하나만 저장하세요
콩zz님의 댓글
콩zz 작성일
#define BUTTON 6
#define LED 13
float Low;
float Fast;
float Lowrate;
float Fastrate;
float V1, R1, KT1, cT1;
float V2, R2, KT2, cT2;
float V3, R3, KT3, cT3;
float V4, R4, KT4, cT4;
int a, b, c, d;
unsigned long Temp_pre_time = 0 ;
unsigned long Temp_cur_time = 0 ;
const int Temp_duration = 1000;
int val = 0;
int old_val=0;
int state = 0;
void setup() {
// put your setup code here, to run once:
pinMode(BUTTON,INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long Temp_cur_time = millis();
if (Temp_cur_time - Temp_pre_time >= Temp_duration)
{
Temp_pre_time = Temp_cur_time;
}
a = analogRead(A0);
V1 = a * 5 / 1024.0 ; // 센서 값을 전압 값으로 변경
R1 =((5.0*10000.0)/V1)-10000.0; // 써미스터의 저항
KT1 = 1.0/((1.0/(273.15+25.0))+(1.0/3435.0)*log(R1/10000.0)); // 절대온도
cT1 = KT1 - 273.15; // 상대온도
b = analogRead(A1);
V2 = b * 5 / 1024.0 ;
R2 =((5.0*10000.0)/V2)-10000.0;
KT2 = 1.0/((1.0/(273.15+25.0))+(1.0/3435.0)*log(R2/10000.0));
cT2 = KT2 - 273.15;
c = analogRead(A2);
V3 = c * 5 / 1024.0 ;
R3 =((5.0*10000.0)/V3)-10000.0;
KT3 = 1.0/((1.0/(273.15+25.0))+(1.0/3435.0)*log(R3/10000.0));
cT3 = KT3 - 273.15;
val = digitalRead(BUTTON);
if((val==HIGH) && (old_val ==LOW))
{
state = 1- state ;
Serial.println(reset);
delay(1000);
}
old_val = val;
if (state ==1){
digitalWrite(LED,HIGH);
Serial.println("on");
delay(500);
} else {
digitalWrite(LED,LOW);
Serial.println("off");
delay(500);
}