83 lines
2.2 KiB
C++
83 lines
2.2 KiB
C++
/*
|
|
Mesure du taux de CO2, de la température et de l'humidité avec le capteur Sensirion SCD30
|
|
Affichage de ces mesures dans le moniteur série
|
|
Leds verte, orange et rouge s'allument en fonction du taux de CO2
|
|
Led verte allumée => taux de CO2 < 800
|
|
Led orange allumée => 800 < taux de CO2 < 1000
|
|
Led verte allumée => 1000 < taux de CO2
|
|
*/
|
|
|
|
/*Appel des bibliothèques*/
|
|
#include <Wire.h>
|
|
#include "SparkFun_SCD30_Arduino_Library.h"
|
|
|
|
/*Déclaration des variables pour les leds rouge, orange et verte*/
|
|
int ledR =5;
|
|
int ledO =18;
|
|
int ledV =19;
|
|
|
|
/*Déclaration des variables pour les mesures*/
|
|
int taux_co2;
|
|
float temperature;
|
|
float humidite;
|
|
|
|
/*Création de l'objet "airSensor" avec la bibliothèque SCD30*/
|
|
SCD30 airSensor;
|
|
|
|
void setup()
|
|
{
|
|
/*Initialisations du moniteur série et de la connexion avec le capteur*/
|
|
Serial.begin(9600);
|
|
Wire.begin();
|
|
if (airSensor.begin() == false)
|
|
{
|
|
Serial.println("Air sensor not detected. Please check wiring. Freezing...");
|
|
while (1);
|
|
}
|
|
|
|
/*Configuration des broches des leds*/
|
|
pinMode(ledR, OUTPUT);
|
|
pinMode(ledO, OUTPUT);
|
|
pinMode(ledV, OUTPUT);
|
|
}
|
|
|
|
|
|
void loop()
|
|
{
|
|
if (airSensor.dataAvailable()) //"Si le capteur fonctionne, alors ..."
|
|
{
|
|
/*Prises de mesures et attributions dans les variables*/
|
|
taux_co2 = airSensor.getCO2();
|
|
temperature = airSensor.getTemperature();
|
|
humidite = airSensor.getHumidity();
|
|
|
|
/*Affichage sur le moniteur série*/
|
|
Serial.print("co2(ppm):");
|
|
Serial.print(taux_co2);
|
|
Serial.print(" temp(C):");
|
|
Serial.print(temperature);
|
|
Serial.print(" humidité(%):");
|
|
Serial.println(humidite);
|
|
|
|
/*Allumage des leds en fonction du taux de CO2*/
|
|
if (taux_co2 < 800)
|
|
{
|
|
digitalWrite(ledV,HIGH);
|
|
digitalWrite(ledO,LOW);
|
|
digitalWrite(ledR,LOW);
|
|
}
|
|
else if (taux_co2 >= 800 && taux_co2 < 1000)
|
|
{
|
|
digitalWrite(ledV,LOW);
|
|
digitalWrite(ledO,HIGH);
|
|
digitalWrite(ledR,LOW);
|
|
}
|
|
else if (taux_co2 >= 1000)
|
|
{
|
|
digitalWrite(ledV,LOW);
|
|
digitalWrite(ledO,LOW);
|
|
digitalWrite(ledR,HIGH);
|
|
}
|
|
}
|
|
delay(500);
|
|
} |