Stap 7: Stap zeven
Monteer de lucht kwaliteit controle sensor (scherpe GP2Y1010) met Arduino.
De verbinding-instructie wordt geïllustreerd in de afbeelding.
Het is een lucht-sensor op basis van de deeltjes reflectie, waardoor de kwaliteit van de lucht een zichtbaar meting. Je gewoon lezen en analyseren van de spanning terug voedt en elke netspanningsvoltage overeenkomt met een specifieke partikel dichtheid.
De code voor het verwerken van de spanning-feedback is hieronder.
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
int measurePin = A0; Stof-sensor verbinden met pin van de Arduino A0
int ledPower = 2; 3 led sluitpinnetjes van stof sensor verbinden met Arduino D2
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
int i = 0;
zweven voMeasured = 0;
zweven voMeasuredReal = 0;
zweven voMeasuredLast = 123.0;
zweven calcVoltage = 0;
zweven dustDensity = 0;
LiquidCrystal_I2C lcd(0x27,16,2); 0x27 het LCD-adres instelt voor een 16 tekens en 2 regelig display
VOID Setup {}
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
pinMode(A0,INPUT);
LCD.init(); initialiseren van het LCD-scherm
LCD.init();
LCD.backlight();
LCD.Home();
}
void loop {}
0 - 5V toegewezen aan 0 - 1023 integerwaarden
calcVoltage = voMeasured/5.0*5.5;
dustDensity = 0.17 * calcVoltage - 0.1;
digitalWrite(ledPower,LOW); macht op de LED
delayMicroseconds(samplingTime);
voMeasured=analogRead(measurePin); luiden naar de waarde van de stof via pin 5 op de sensor
voMeasuredReal = voMeasured;
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH); het uitschakelen van de LED
soepele lawaai
voMeasured = voMeasuredLast + (voMeasured-voMeasuredLast) / 10.0;
if(voMeasured<150)
dustDensity=0.15*(voMeasured-130.0);
anders if(voMeasured<160)
dustDensity=3+1.7*(voMeasured-150.0);
else if (voMeasured < 220)
dustDensity = 5 * (voMeasured-150,0);
anders
dustDensity = voMeasured-220.0;
Als (dustDensity < 0) dustDensity = 0,0;
Als (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);
Als (ik < = 30)delay(1000);
anders vertragen (5000);
// i++;
Als (ik > 1024) ik = 31;