unsigned long pulse = 0; // pulse를 0으로 설정합니다.
float ugm3 = 0; // ugm3을 0으로 설정합니다.
int GP2Y1023 = 8; // GP2Y1023를 0으로 설정합니다.
void setup() {
pinMode(GP2Y1023, INPUT); // GP2Y1023를 입력핀으로 설정합니다.
Serial.begin(115200); // 시리얼 모니터를 사용하기 위해 보드레이트를 115200으로 설정합니다.
}
void loop() {
pulse = pulseIn(GP2Y1023, LOW, 20000); // pulse에 GP2Y1023에서 LOW 신호를 받을 때까지 걸리는 시간을 받아옵니다.
ugm3 = pulse2ugm3(pulse); // ugm3를 pulse2ugm3()함수에 pulse를 넣어 반환된 값을 저장합니다.
if (ugm3 > 1) { // ugm3가 1보다 크면 (잡음 방지)
Serial.print(ugm3, 4); // ugm3 변수의 소숫점 4자리수까지 출력합니다.
Serial.println(" ug/m3");
}
delay(100);
}
float pulse2ugm3(unsigned long pulse) {
float value = (pulse - 1400) / 14.0; // pulse에 -1400을 하고 14.0을 나누어 value에 저장합니다.
if (value > 300) { // value가 300보다 크면
value = 0; // value이 0으로 저장합니다.
}
return value; // value 값을 반환합니다.
}
최신댓글