?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

시간관련 아두이노 코딩 질문이요 ㅠㅠ

페이지 정보

작성자 이정현 메일보내기 이름으로 검색 작성일15-06-14 20:30 조회1,956회 댓글3건

본문

아래가 코드 내용인데요

#include <Time.h>
#include <DHT11.h>
int pin=2;
DHT11 dht11(pin);
int RED=8;
void setup()
{

Serial.begin(9600);
pinMode(RED,OUTPUT);

}

void loop()
{
int sensorValue1 = analogRead(A0);
int sensorValue2 = analogRead(A1);
int err;
float temp, humi;
unsigned long t1;
unsigned long t2;
unsigned long *ptr1;
unsigned long *ptr2;

ptr1=&t1;
 ptr2=&t2;

if((err=dht11.read(humi, temp))==0)
{/*Serial.print("temperature:");
Serial.print(temp);*/
Serial.print(" humidity:");
Serial.print(humi);
if(humi>40)
{
if(sensorValue1>20 )
{
Serial.print("sensorValue1 ");
Serial.println(sensorValue1);
t1= millis();
Serial.print("t1 ");
Serial.println(t1);
Serial.print(" sensorValue2 ");
Serial.println(sensorValue2);

}

if(sensorValue2>20)
{Serial.print(" sensorValue2 ");
Serial.println(sensorValue2);
t2= millis();

Serial.print("t2 ");
Serial.println(t2);
}
if(*ptr2-*ptr1<2000)
{

Serial.println("Too fast");
digitalWrite(RED,HIGH);
delay(3000);
digitalWrite(RED,LOW);
}

}
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}

delay(DHT11_RETRY_DELAY);

 


}

 

압력센서 2개를 이용해서 첫 번째 입력센서에 압력이 입력됐을 때 시간을 t1, 두 번째 입력센서에 압력이 입력됐을 때 시간을 t2라고 했을 때 't2-t1'이 2초보다 작을 때 LED에 불이 들어오게하는 코드인데요. t1을 압력센서1에 압력이 가해졌을 때 현재시간으로 초기화시켰고요, t2를 압력센서2에 압력이 가해졌을 때 현재시간으로 초기화시켰습니다. 저희가 이 코드를 작동시켰을 때 t1과 t2가 정상적으로 출력되지만 동시에 눌렸을 때만 LED에 불이 들어옵니다. 저희는 그 문제의 원인이 t1과 t2의 주소값이 저장되지 않기때문이라고 생각해서 포인터를 사용했는데 컴파일오류가 뜹니다ㅠㅠ!!!

참고로 t2-t1으로 할때도 안되고 저렇게 포인터를 사용 할때도 안되요....

 

댓글목록

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

t1, t2는 loop 함수안에서 선언된 지역변수입니다. 따라서 loop가 한번 끝날때마다 저 지역변수는 삭제되므로 포인터로 저장하면 안됩니다. t1, t2를 loop 함수 밖에 위치시켜서 전역 변수로 만들어 사용하세요.
그런데 이 예제에서는 굳이 포인터를 사용할 필요도 없고 ptr1, 2 변수를 사용할 필요도 없을거 같네요. 그냥 unsigned long 타입의 t1, t2를 전역으로 선언해서 사용하면 될거에요.

이정현님의 댓글

이정현 이름으로 검색 댓글의 댓글 작성일

정말 감사합니다!! 내일 저렇게 해볼게요!
그리고 또 하나 안되는게 있는데
FSR 압력센서가 손으로 누르는 건 센싱을 해서 값을 읽는데
자동차(모형)가 지나가는거에서는 값이 출력이 안되더라구여.. 이건 그냥 센서의 문제인걸까요 ㅠ??