==== Programation ==== Capteur de particules {{ :wiki:projet:bnair:1125px-pm25_uno.png }} Lecture des valeurs du capteur de particules #include //Temperature chip i/o OneWire ds(Thermometer); void setup(){ //initialise the pin serial.begin(9600); //thermometer byte Thermometer = 2; pinMode(Thermometer, INPUT); float ThermometerValue = 0; float ThermometerValueEnable = 22.0; float ThermometerValueDesable = 20.0; //NOX sensor byte NOXSensor = A1; pinMode(NOXSensor, INPUT); int NOXSensorValue = 0; int NOXSensorValueSumm = 0; float NOXSensorValueAverage = 0; float NOXSensorValueTreshold = 400; //COV sensor byte COVSensor = A2; pinMode(COVSensor, INPUT); int COVSensorValue = 0; int COVSensorValueSumm = 0; float COVSensorValueAverage =0; float COVSensorValueTreshold = 400; /* PM sensor PMSensorValue PMSensorValueSumm PMSensorValueAverage PMSensorValueTreshold */ //peletier byte Peletier = 13; pinMode(Peletier, OUTPUT); boolean PeletierStatus = 0; //Bottom Fan byte BotFan = 12; pinMode(BotFan, OUTPUT); boolean BotFanStatus = 0; //Top Fan byte TopFan = 10; pinMode(TopFan, OUTPUT); boolean TopFanStatus = 0; // brumisateur byte Atomizer = 11; pinMode(Atomizer, OUTPUT); boolean AtomizerStatus = 0; int SensorTimer = 0; int ThermometherTimer = 0; int AtomizerTimer = 0; int AtomizerTimeOn = 900000;// 15 minutes int AtomizerTimeOff = 1800000;// 30 minutes byte CompteurValue = 0; } void loop(){ //Record every second COVSensor, NOXSensor, PMSensor. Do the summ over 1 minute. if (SensorTimer-millis()>= 1000) { COVSensorValue = analogRead(COVSensor); NOXSensorValue = analogRead(NOXSensor); //Ici je mettrais la reception du PMSensor if (CompteurValue <= 60){ COVSensorValueSumm += COVSensorValue; NOXSensorValueSumm += NOXSensorValue; //Ici PMSensorValueSumm if (CompteurValue>= 60){ COVSensorValueAverage = COVSensorValueSumm / CompteurValue; NOXSensorValueAverage = NOXSensorValueSumm / CompteurValue; // ici je mettrais la valeur PMSensorValueAverage CompteurValue = 0; } else { CompteurValue++ } } SensorTimer = millis(); // test line serial.print('NOX Value is' + NOXSensorValueAverage); serial.print('COV Value is' + COVSensorValueAverage); } //Check the temperature every two minutes if (ThermometherTimer-millis()>= 120000){ ThermometerValue = getTemp(); ThermometherTimer = millis() } //Activate or deactivate the peletier depending on water's temperature if (ThermometerValue>= ThermometerValueEnable && PeletierStatus == 0){ digitalWrite(Peletier,1); PeletierStatus = 1; } if (ThermometerValue <= ThermometerValueDesable && PeletierStatus == 1){ digitalWrite(Peletier,0); PeletierStatus = 0; } /* //Activate or deactivate the BotFan depending on sensor value and peletier activation if ((PeletierStatus == 1 || COVSensorValueAverage>= COVSensorValueTreshold || NOXSensorValueAverage>= NOXSensorValueTreshold || TopFanStatus == 1) && BotFanStatus== 0){ digitalWrite(BotFan,1); BotFanStatus = 1; } if ((PeletierStatus == 0 && COVSensorValueAverage = PMSensorValueTreshold && TopFanStatus == 0){ digitalWrite(TopFan,1); TopFanStatus = 1; } if (PMSensorValueAverage [[http://www.dfrobot.com/wiki/index.php?title=PM2.5_laser_dust_sensor_SKU:SEN0177|Source]]