'안녕하세요'님이 쓰신글 ------------------------------------ >
C 코드로 센서 구동 중입니다.
include
#include
#include
void main(){
mraa_gpio_context gpio;
mraa_aio_context aio;
int delayTime=280;
int delayTime2=40;
float offTime=9680;
float value=0;
float voltage=0;
float dust=0;
aio=mraa_aio_init(0);
gpio=mraa_gpio_init(8);
mraa_gpio_dir(gpio, MRAA_GPIO_OUT);
while(1){
mraa_gpio_write(gpio,0);
usleep(delayTime);
value=mraa_aio_read(aio);
usleep(delayTime2);
mraa_gpio_write(gpio,1);
usleep(offTime);
voltage =(value * 5000/1024);
dust =(0.2 * voltage);
printf("Voltage : %fn", voltage);
printf("Dust Density : %fn", dust);
sleep(1);
}
}
구동 결과입니다.
Voltage : 234.375000
Dust Density : 46.875000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 24.414062
Dust Density : 4.882812
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 0.000000
Dust Density : 0.000000
Voltage : 4.882812
Dust Density : 0.976562
Voltage : 0.000000
Dust Density : 0.000000
/////////////////////////////////////////////////////////
1. 데이터 시트를 바탕으로 딜레이를 주어 코드를 작성하여 구동하였지만 정상적인 결과가 아닌것 같습니다.
2. 그리고 LED 핀을 연결하지 않고 하여도 값이 출력됩니다.
3. 혹시 외부에 저항과 커패시터를 연결하여야 하나요?
4. 결과 값에 대해 보정이 따로 필요한가요?
------------------------------------
1. 데이터 시트가 아닌 Waveshare에서 제공하는 소스 코드를 사용하여 보시는 것을 추천드립니다.
http://www.waveshare.com/wiki/Dust_Sensor
위 링크에서 Resources부분에 Code를 다운로드하시면 됩니다.
2. 아날로그 데이터핀만 연결하여도 값은 출력됩니다.
3, 4번의 경우에는 저희도 전문적인 엔지니어가 아니여서 정확하게 잘 모르겠네요