정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

센서 연동 질문있습니다
정현우 | 2016-10-08

제가 프로잭트에있는  http://kocoafab.cc/make/view/647 전기방석

                            http://kocoafab.cc/make/view/216 알람방석

 

두가지 프로잭트를 이용해서 온도조절을하면서 시간이 되면 알람이울리게 만들어보려고했는데  부저가 울리질않고 압력센서가 잘먹질않는거같은데  딜레이 함수위치랑 소스 문제점좀 고쳐주시면 감사하겟습니다.  다른거도 문제있으면 지적좀해주세요 ~~ㅠㅠ 아 그리고 lcd에 온도랑 시간이 표현하려고햇는데  온도값만 표시되고 시간은 아무리해도 나오질않네요  도와주세요~~

 

#include <LiquidCrystal.h>
#include <core_build_options.h>
#include <swRTC.h>

swRTC rtc; 


boolean sit = false;


LiquidCrystal lcd(12,11,5,4,3,2);

int Temperature = A0;
int Mosfet1 = 7 ;
int Mosfet2 = 6 ;
int btnLow1 = 8;
int btnLow2 = 9;
float Val;
float val;
const int tmpLow = 25;
const int tmpHIGH = 30;
int tmpSetting = 0;
int piezo = 10;
void setup()
{
  Serial.begin(9600);
  pinMode(Mosfet1, OUTPUT);
  pinMode(Mosfet2, OUTPUT);
pinMode(btnLow1, INPUT_PULLUP);  
pinMode(btnLow2, INPUT_PULLUP);  

lcd.begin(16,2);
 
  rtc.stopRTC();           
  rtc.setTime(0,0,0);    
  rtc.setDate(1,1,2000);  
  Serial.begin(9600); //시리얼통신 초기화
  pinMode(piezo, OUTPUT); 
}
void loop()
{
  Val = (float)analogRead(Temperature)*5/1024;
  val = 100*(Val-0.5);
 

delay(1000);
  if (digitalRead(btnLow1) == LOW) { 
        tmpSetting = tmpLow;}
  if (digitalRead(btnLow2) == LOW) { 
        tmpSetting = tmpHIGH;}
  if(val<tmpSetting) // 저는 50℃로 설정하여 사용하고 있습니다 이 부분을 원하시는 온도로 변경하시면 됩니다.
  {
      digitalWrite(Mosfet1,HIGH);
      digitalWrite(Mosfet2,HIGH);
    }
   else if((tmpSetting != 0) && (val > tmpSetting))
    {
      digitalWrite(Mosfet1,LOW);
      digitalWrite(Mosfet2,LOW);
    }
lcd.clear();    
lcd.setCursor(0,0);  
lcd.print("Temperature:");
lcd.print(val);
delay(2000);
 
 
 int sensorValue = analogRead(A1); //압력센서에서 값을 읽어온다    
  //압력센서의 Output값이 100이상일 경우 앉은걸로 간주하고 타이머를 시작한다.
  if(sensorValue > 100) {
    Serial.println("sitdown");
    rtc.startRTC(); //rtc시작(시간 측정)
    sit = true;} //앉아있는 상태로 변경
   if(sensorValue > 100 && sit) {
    delay(1000);
    sensorValue = analogRead(A1); //압력센서의 값을 읽어온다
    
    Serial.print(rtc.getMinutes(), DEC);
    Serial.print(":");
    Serial.println(rtc.getSeconds(), DEC);
     if(rtc.getMinutes() == 1) {
      //압력센서의 값이 100이상일 경우 피에조부저를 울린다
      if(sensorValue > 100) {
        lcd.setCursor(0,1);
        lcd.print("standUP!!");
        tone(10,1000,500);
        sensorValue = analogRead(A1);
        lcd.print(????);
  }
      //자리에서 일어났을 경우 피에조부저의 소리를 끄고 rtc를 다시 초기화 시킨다
      Serial.println("INITIALIZE");
    
        rtc.stopRTC();           //정지
        rtc.setTime(0,0,0);    //시간, 분, 초 초기화
        rtc.setDate(1,1,2000);  //일, 월, 년도 초기화  
        sit = false;
        delay(1000);
}}
}

이전글   |    아두이노 WIFI 쉴드를 이용한 실시간 환율 파싱... 2016-10-07
다음글   |    채팅앱 다운로드 2016-10-10