BASIC4MCU | 질문게시판 | 답변 : 아두이노 LM35 FSR
페이지 정보
작성자 master 작성일2018-06-28 17:56 조회11,438회 댓글3건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2064
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-28 오후 5:59:59// by Ok-Hyun Park//#include <SoftwareSerial.h>SoftwareSerial BTSerial(2,3);int lm35Pin=A0;const int FSR_PIN=A1; // 압력센서//const float VCC=4.98;const float R_DIV=3230.0;//int temperature,reading;int fsrADC,yn=0,yn_1=0; // 온도센서 필터코드unsigned long prev_time=0,current_time;float fsrV,fsrR,force,fsrG;//int inPin=7; // 리드스위치int ledPin=13;int val=1;//byte data=0;//void setup(){Serial.begin(9600);BTSerial.begin(9600);pinMode(inPin,INPUT);pinMode(ledPin,OUTPUT);}//void loop(){val=digitalRead(inPin);TEMP(); // LM35(온도센서)FSR(); // MFSR-R18(압력센서)if(BTSerial.available()){ data=BTSerial.read(); }if(val==0){digitalWrite(ledPin,1);//if(data=='q'){BTSerial.print("s"); BTSerial.print(temperature);BTSerial.print("\ta"); BTSerial.println(int(force/10));}if(data=='w'){BTSerial.print("s"); BTSerial.print(0);BTSerial.print("a"); BTSerial.println(0);}delay(250);} else if(val==1){digitalWrite(ledPin,0);}}//void TEMP(){current_time=millis();//if((current_time-prev_time)>1000){ prev_time=current_time;reading=analogRead(lm35Pin);reading=analogRead(lm35Pin);reading=analogRead(lm35Pin);temperature=reading*500.0/1023.0;yn=0.99*yn_1+0.01*temperature;yn_1=yn;}}//void FSR(){fsrADC=analogRead(FSR_PIN);fsrV=fsrADC*VCC/1023.0;fsrR=R_DIV*(VCC/fsrV-1.0);fsrG=1.0/fsrR;//if(fsrR<=600){ force=(fsrG-0.00075)/0.00000032639; }else{ force=fsrG/0.000000642857; }}
이 소스로 돌려보시고
온도값이 정상인지 체크해보세요
댓글 3
조회수 11,438카라멜님의 댓글
카라멜 작성일온도만 볼때는 제대로 나오는데, 저번에 도와주셨을때 문제처럼 압력센서가 눌리면 온도값이 바뀌네요.. ㅠㅠ
master님의 댓글
master
조금 수정했으니 다시 해보세요
카라멜님의 댓글
비공개
잘 작동됩니다!! 정말 감사합니다 ㅠㅠㅠ