BASIC4MCU | 질문게시판 | 시리얼모니터값 이상
페이지 정보
작성자 비공개 작성일2018-06-11 01:29 조회7,812회 댓글0건본문
제 스타일의 코드를 업로드 했을 때는 첫번째 시리얼 모니터 사진이고
int dust_sensor1 = A0; // 미세먼지센서1 핀 번호
int dust_sensor2 = A1; // 미세먼지센서2 핀 번호
float dust_value1 = 0; // 센서1에서 입력받은 미세먼지 값
float dust_value2 = 0; // 센서2에서 입력받은 미세먼지 값
float dust_density_ug1 = 0; // 센서1의 ug/m^3 값을 계산
float dust_density_ug2 = 0; // 센서2의 ug/m^3 값을 계산int sensor_led1 = 12; // 미세먼지센서1 안에 있는 적외선 led 핀 번호
int sensor_led2 = 13; // 미세먼지센서2 안에 있는 적외선 led 핀 번호
int sampling = 280; // 적외선 led를 키고, 센서값을 읽어들여 미세먼지를 측정하는 샘플링 시간
int waiting = 40;
float stop_time = 9680; // 센서를 구동하지 않는 시간
void setup(){
Serial.begin(9600); // 시리얼 모니터 시작, 속도는 9600
pinMode(sensor_led1,OUTPUT); // 센서1의 적외선 led를 출력으로 설정
pinMode(sensor_led2,OUTPUT); // 센서2의 적외선 led를 출력으로 설정
}
void loop(){
digitalWrite(sensor_led1, LOW); // LED 켜기
delayMicroseconds(sampling); // 샘플링해주는 시간dust_value1 = analogRead(dust_sensor1); // 센서 값 읽어오기
delayMicroseconds(waiting); // 너무 많은 데이터 입력을 피해주기 위해 잠시 멈춰주는 시간digitalWrite(sensor_led1, HIGH); // LED 끄기
delayMicroseconds(stop_time); // LED 끄고 대기dust_density_ug1 = (0.17 * (dust_value1 * (5.0 / 1024)) - 0.1) * 1000; // 미세먼지농도 값 계산
digitalWrite(sensor_led2, LOW); // LED 켜기
delayMicroseconds(sampling); // 샘플링해주는 시간dust_value2 = analogRead(dust_sensor2); // 센서 값 읽어오기
delayMicroseconds(waiting); // 너무 많은 데이터 입력을 피해주기 위해 잠시 멈춰주는 시간digitalWrite(sensor_led2, HIGH); // LED 끄기
delayMicroseconds(stop_time); // LED 끄고 대기dust_density_ug2 = (0.17 * (dust_value2 * (5.0 / 1024)) - 0.1) * 1000; // 미세먼지농도 값 계산
Serial.print("\n Dust Density1 [ug/m^3]: "); // 시리얼 모니터에 미세먼지농도 값 출력
Serial.print(dust_density_ug1);
Serial.print("\t Dust Density2 [ug/m^3]: "); // 시리얼 모니터에 미세먼지농도 값 출력
Serial.print(dust_density_ug2);
delay(2000);
}
master님이 알려주신 코드를 업로드했을 때는 두번째 시리얼 모니터 사진입니다.
int dust_sensor1=A0, dust_sensor2=A1; // 미세먼지 아날로그 출력
int sensor_led1=12, sensor_led2=13; // 미세먼지 적외선 led
//
void setup(){
Serial.begin(9600);
pinMode(sensor_led1,OUTPUT); // 미세먼지 적외선 led
}
//
void loop(){
float adc;
digitalWrite(sensor_led1,LOW); delayMicroseconds( 280); // LED 켜기 // 샘플링해주는 시간
adc=analogRead(dust_sensor1); delayMicroseconds( 40); // 센서 값 읽어오기
digitalWrite(sensor_led1,HIGH); delayMicroseconds(9680); // LED 끄고 대기
float dustug1=(0.17*(adc*(5.0/1023.0))-0.1)*1000.0; // 미세먼지 값 계산 ug/m^3
Serial.print("\n Dust1 Density[ug/m3]: "); Serial.print(dustug1); // 시리얼 모니터에 미세먼지 값 출력
//
digitalWrite(sensor_led2,LOW); delayMicroseconds( 280); // LED 켜기 // 샘플링해주는 시간
adc=analogRead(dust_sensor2); delayMicroseconds( 40); // 센서 값 읽어오기
digitalWrite(sensor_led2,HIGH); delayMicroseconds(9680); // LED 끄고 대기
float dustug2=(0.17*(adc*(5.0/1023.0))-0.1)*1000.0; // 미세먼지 값 계산 ug/m^3
Serial.print("\t Dust2 Density[ug/m3]: "); Serial.print(dustug2); // 시리얼 모니터에 미세먼지 값 출력
//
delay(2000);
}
둘다 시리얼 모니터에서 첫번째줄 측정값이 마이너스가 나오고
두번째줄 부터는 dust1에서만 계속 마이너스값이 나오는데 뭐가 문제일까요ㅜㅜ?
댓글 0
조회수 7,812등록된 댓글이 없습니다.