Co2_Mon_Ecole/main.cpp
2022-10-14 17:47:20 +02:00

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);
}