#include
<dht.h>
#include
<LiquidCrystal.h>
LiquidCrystal
lcd(12, 11, 5, 4, 3, 2);
dht
DHT;
#define
DHT11_PIN 6
void
setup(){
lcd.begin(16, 2);
}
void
loop()
{
int chk = DHT.read11(DHT11_PIN);
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(DHT.temperature);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Humidity: ");
lcd.print(DHT.humidity);
lcd.print("%");
delay(1000);
}
|
This is the correct output of this sensor.
The picture below show when there is the heat.
Then, below show the confirm coding for Shinyei Particle Sensor.
/*
Connection:
JST Pin 1 (Black Wire) => Arduino GND
JST Pin 3 (Red wire) => Arduino 5VDC
JST Pin 4 (Yellow wire) => Arduino
Digital Pin 8
Green Led connected to Arduino D6
Yellow Led connected to Arduino D7
Red Led connected to Arduino D9
Dust
Sensor possible application:
-
Applications of customer
-
Air quality sensor
-
Dustlessness workshop
-
Cigarette detector
*/
/*
Sensor
is to create Digital (Lo Pulse) output to Particulate Matters (PM). Lo Pulse
Occupancy time (LPO time) is in proportion
to
PM concentration. The output is for PM whose size is around 1 micro meter or
larger. We can use the sensor to detect the dust in clean room.
Minimum
detect particle: 1um
http://www.seeed
studio.com/wiki/Grove_-_Dust_Sensor
Grove - Dust Sensor Demo v1.0
Interface to Shinyei Model PPD42NS Particle
Sensor
Program by Christopher Nafis
Written April 2012
http://www.seeedstudio.com/depot/grove-dust-sensor-p-1050.html
http://www.sca-shinyei.com/pdf/PPD42NS.pdf
*/
#include
<LiquidCrystal.h>
LiquidCrystal
lcd(12, 11, 5, 4, 3, 2);
int
pin = 6;
unsigned
long duration;
unsigned
long starttime;
unsigned
long sampletime_ms = 1000;//sampe 1s ;
unsigned
long lowpulseoccupancy = 0;
float
ratio = 0;
float
concentration = 0;
int
gLed = 6;
int
yLed = 7;
int
rLed = 9;
void
setup() {
lcd.begin(16,2);
pinMode(8,INPUT);
pinMode(gLed,OUTPUT);
pinMode(yLed,OUTPUT);
pinMode(rLed,OUTPUT);
starttime = millis();//get the current
time;
}
void
loop() {
duration = pulseIn(pin, LOW);
lowpulseoccupancy =
lowpulseoccupancy+duration;
if ((millis()-starttime) >
sampletime_ms)//if the sampel time == 30s
{
ratio =
lowpulseoccupancy/(sampletime_ms*10.0);
// Integer percentage 0=>100
concentration =
1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
lcd.print("concentration = ");
lcd.print(concentration);
if (concentration < 1.0) {
lcd.println("It's a smokeless and
dustless environment");
digitalWrite(gLed, HIGH);
digitalWrite(yLed, LOW);
digitalWrite(rLed, LOW);
}
if (concentration > 1.0 &&
concentration < 20000) {
lcd.println("It's probably only you
blowing air to the sensor :)");
digitalWrite(gLed, HIGH);
digitalWrite(yLed, LOW);
digitalWrite(rLed, LOW);
}
if (concentration > 20000 &&
concentration < 315000) {
lcd.println("Smokes from matches
detected!");
digitalWrite(gLed, LOW);
digitalWrite(yLed, HIGH);
digitalWrite(rLed, LOW);
}
if (concentration > 315000) {
lcd.println("Smokes from cigarettes
detected! Or It might be a huge fire! Beware!");
digitalWrite(gLed, LOW);
digitalWrite(yLed, LOW);
digitalWrite(rLed, HIGH);
}
lowpulseoccupancy = 0;
starttime = millis();
}
}
|
I had to modified this coding, so that it will be easier for user to get the data.