Skip to content
Snippets Groups Projects
Select Git revision
  • a33611e2cd0d6533b1400e0b1deaacff7490a225
  • main default protected
2 results

SCD30-6-JUIN-2.ino

Blame
  • SCD30-6-JUIN-2.ino 3.46 KiB
    // Code pour faire fonctionner capteur et les 3 leds ensemble avec les conditions
    #include <Adafruit_SCD30.h>
    #include <SPI.h>
    #include <SD.h>
    #include <Wire.h>
    #include <SPI.h>
    
    Adafruit_SCD30  scd30;
    
    File myFile;
    const int L1 = 7; //rouge
    const int L2 = 3; //jaune
    const int L3 =2 ; //vert
    
    void save_co2() {
      myFile = SD.open("CO2.txt", FILE_WRITE);
    
      myFile.println(scd30.CO2);
      
      myFile.close();
    }
    
    void setup(void) {
      
      pinMode(L1,OUTPUT);
      pinMode(L2,OUTPUT);
      pinMode(L3,OUTPUT);
    
      Serial.begin(115200);
      while (!Serial) delay(10); // will pause Zero, Leonardo, etc until serial console opens
    
      Serial.println("Adafruit SCD30 test!");
    
      // Try to initialize!
      if (!scd30.begin()) {
        Serial.println("Failed to find SCD30 chip");
        while (1) { delay(10); }
      }
      Serial.println("SCD30 Found!");
    
    
      // if (!scd30.setMeasurementInterval(10)){
      //   Serial.println("Failed to set measurement interval");
      //   while(1){ delay(10);}
      // }
      Serial.print("Measurement Interval: "); 
      Serial.print(scd30.getMeasurementInterval()); 
      Serial.println(" seconds");
    
      // Initialisation de la carte SD
      Serial.print("Initializing SD card...");
      if (!SD.begin(10)) {
        Serial.println("initialization failed!");
        digitalWrite(L1,HIGH);
        delay(200);
        digitalWrite(L1,LOW);
        delay(200);
        digitalWrite(L1,HIGH);
        delay(200);
        digitalWrite(L1,LOW);
        delay(200);
        digitalWrite(L1,HIGH);
        delay(200);
        digitalWrite(L1,LOW);
        delay(200);
        digitalWrite(L1,HIGH);
        delay(200);
        digitalWrite(L1,LOW);
        delay(200);
        digitalWrite(L1,HIGH);
        delay(200);
        digitalWrite(L1,LOW);
        delay(200);
        digitalWrite(L1,HIGH);
        delay(200);
        digitalWrite(L1,LOW);
        while (1);
      }
      Serial.println("initialization done.");
      digitalWrite(L3,HIGH);
      delay(200);
      digitalWrite(L3,LOW);
      delay(200);
      digitalWrite(L3,HIGH);
      delay(200);
      digitalWrite(L3,LOW);
      delay(200);
      digitalWrite(L3,HIGH);
      delay(200);
      digitalWrite(L3,LOW);
      delay(200);
      digitalWrite(L3,HIGH);
      delay(200);
      digitalWrite(L3,LOW);
      delay(200);
      digitalWrite(L3,HIGH);
      delay(200);
      digitalWrite(L3,LOW);
      delay(200);
      digitalWrite(L3,HIGH);
      delay(200);
      digitalWrite(L3,LOW);
    
      myFile = SD.open("CO2.txt", FILE_WRITE);
      myFile.println(" ");
      myFile.println("----------- NOUVELLE MESURE -------------");
      myFile.close();
      
    }
    
    void loop() {
      if (scd30.dataReady()){
        Serial.println("Data available!");
    
        if (!scd30.read()){ Serial.println("Error reading sensor data"); return; }
    
        Serial.print("Temperature: ");
        Serial.print(scd30.temperature);
        Serial.println(" degrees C");
        
        Serial.print("Relative Humidity: ");
        Serial.print(scd30.relative_humidity);
        Serial.println(" %");
        
        Serial.print("CO2: ");
        Serial.print(scd30.CO2, 3);
        Serial.println(" ppm");
        Serial.println("");
    
        save_co2();
    
      } else {
        //Serial.println("No data");
      }
    
      delay(100);
    
      //programmation des LEDS
    
      if (scd30.CO2 > 1000){ //rouge
        digitalWrite(L1,HIGH);
        digitalWrite(L2,LOW);
        digitalWrite(L3,LOW);
      }
      else if(scd30.CO2 < 800 and scd30.CO2 > 300) { //vert
        digitalWrite(L1,LOW);
        digitalWrite(L2,LOW);
        digitalWrite(L3,HIGH); 
      }
    
      else if(scd30.CO2 <300) { //stabilisation en attendant la calibration du capteur
        digitalWrite(L1,LOW);
        digitalWrite(L2,LOW);
        digitalWrite(L3,LOW);
        delay(2000);
      }
      else { //jaune
         digitalWrite(L1,LOW);
        digitalWrite(L2,HIGH);
        digitalWrite(L3,LOW);
      }
      
    }