Paso 7: Paso siete
Montar el aire control sensor de la calidad (SHARP GP2Y1010) con Arduino.
La instrucción de conexión se ilustra en la figura.
Es un sensor de aire basado en la reflexión de las partículas, que hace que la calidad del aire una visible medida. Simplemente leer y analizar la tensión alimenta nuevamente y cada voltaje corresponde a una densidad específica de la partícula.
El código de manipulación de la realimentación de tensión está por debajo.
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
int measurePin = A0; Conectar sensor de polvo al pin Arduino A0
ledPower int = 2; Conectar 3 pines del controlador led del sensor de polvo a Arduino D2
int samplingTime = 280;
deltaTime int = 40;
int Sueñotiempo = 9680;
int i = 0;
Float voMeasured = 0;
Float voMeasuredReal = 0;
Float voMeasuredLast = 123,0;
Float calcVoltage = 0;
Float dustDensity = 0;
Lcd(0x27,16,2) de LiquidCrystal_I2C; configurar la dirección de LCD a 0x27 para un 16 caracteres y 2 línea de la pantalla
void setup() {}
Serial.Begin(9600);
pinMode(ledPower,OUTPUT);
pinMode(A0,INPUT);
LCD.init(); inicializar el lcd
LCD.init();
LCD.Backlight();
LCD.Home();
}
void loop() {}
Número entero valores de 0 - 5V asignada a 0 - 1023
calcVoltage = voMeasured/5.0*5.5;
dustDensity = 0.17 * calcVoltage - 0.1;
digitalWrite(ledPower,LOW); potencia en el LED
delayMicroseconds(samplingTime);
voMeasured=analogRead(measurePin); leer el valor del polvo vía pin 5 en el sensor
voMeasuredReal = voMeasured;
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH); Apagar el LED
ruido suave
voMeasured = voMeasuredLast + (voMeasured-voMeasuredLast) / 10.0;
if(voMeasured<150)
dustDensity=0.15*(voMeasured-130.0);
otro if(voMeasured<160)
dustDensity=3+1.7*(voMeasured-150.0);
else if (voMeasured < 220)
dustDensity = 5 * (voMeasured-150.0);
otra cosa
dustDensity = voMeasured-220.0;
Si (dustDensity < 0) dustDensity = 0.0;
Si (dustDensity > 600) dustDensity = 600.0;
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print("asy-02012317-Seu");
lcd.setCursor (0, 1);
LCD.Print ("PM2.5");
lcd.setCursor (10, 1);
LCD.Print(dustDensity);
voMeasuredLast = voMeasured;
Delay(2000);
delayMicroseconds(sleepTime);
Si (i < = 30)delay(1000);
otro retraso (5000);
// i++;
Si (i > 1024) i = 31;