Page 2 sur 2

Re: [TUTO] Mesurer la qualité de l'air de votre intérieur

Publié : 28 janv. 2018, 12:58
par Chrominator
Super ton tuto.
J'ai reçu le dernier composant hier, et là ça marche du premier coup.

Un grand merci.

Par ailleurs, il y a quelques affichages hors champs chez moi, je ne sais pas si ça vient de mon matériel ou de ton code.
J'ai modifié un peu ce dernier en conséquence.

Par exemple, le "Chauffe capteur" du code suivant s'affiche tout en bas de l'afficheur, donc on ne voyait pas les secondes s'égrainer :

Code : Tout sélectionner

    display.setCursor(19,20);
    display.println("Chauffe capteur");
    display.setCursor(34,36);
    display.print(i); display.print(" s / 60s");
    delay(1);
En tout cas la conclusion est qu'il faut ouvrir plus que je ne le fais, ce tuto est bien utile. :)

Re: [TUTO] Mesurer la qualité de l'air de votre intérieur

Publié : 01 juin 2018, 19:29
par maxdata
Bonjour, Super le tuto :)

je me suis lancé et j'ai déjà des résultats sur mon domoticz.

j'ai des doutes sur les valeurs car je fait tourné le testeur d'air depuis 3 jours chez moi et il me dit toujours TRÈS MAUVAIS, et j'aimerai savoir si c'est normal ou j'ai fait une coquille quelque part ?

mes résultats
PM2.5= 12.1 µg/m3
PM10 = 13.4 µg/m3

cela est si médiocre que ça pour me dire que c'est très mauvais ?

j'ai essayer de regarder les indicateurs officiels mais j'ai du mal a me repérer.

Merci pour votre aide

Max

Re: [TUTO] Mesurer la qualité de l'air de votre intérieur

Publié : 02 juin 2018, 04:51
par Chrominator
Ton air est BON.

La table des valeurs composant l'indice français ATMO sur le site des Hauts de France :
(les PM2.5 ne sont pas répertoriées dans l'indice ATMO).

Image

Mais aussi sur http://www.respire-asso.org/particules- ... m10-pm-25/:

Valeurs recommandées des particules fines


Objectif de qualité PM10 : 30 µg/m3 en moyenne annuelle.

Valeurs limites pour la protection de la santé humaine pour les PM10 (applicables aux concentrations non liées à des événements naturels) :

50 µg/m3 en moyenne journalière, à ne pas dépasser plus de 35 jours par an ;
40 µg/m3 en moyenne annuelle.

Pour les PM2,5, il n’y a pas de réglementation. L’Union européenne a fixé son objectif de qualité à 20μg/m3 en moyenne sur l’année. Le Grenelle de l’environnement souhaitait arriver à 15μg/m3. L’Organisation Mondiale de la Santé recommande, elle, une valeur de 10 μg/m3.

Re: [TUTO] Mesurer la qualité de l'air de votre intérieur

Publié : 02 juin 2018, 10:59
par maxdata
Merci Chrominator :) c'est plus clair et cela confirme bien que j'ai un pb de sévérité dans le script, faut trouver comment la modifier et c'est pas gagné, je vais essayer et si des âmes charitables pouvait m'aider, je vais regarder ça :

Code : Tout sélectionner

#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <SimpleTimer.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <SPI.h>
#include <Wire.h>



/* D'après le code original de ProjetsDIY : https://projetsdiy.fr
 * Source : https://projetsdiy.fr/calculer-indice-qualite-air-iaq-ciqa-iqa-dsm501-arduino-esp8266/
 * Code adapté par Steph D. pour Easydomoticz : https://easydomoticz.com/forum/viewtopic.php?f=24&t=5412
 * Branchements :

 COTE DSM501A - DE GAUCHE A DROITE :

     1er fil : Inutilisé
     2ème fil : Broche D0 du Wemos
     3ème fil : +5v du Wemos
     4ème fil : Broche D5 du Wemos
     5ème fil : sur le Ground du Wemos


 COTE ECRAN OLED :

     GND : sur le ground du Wemos
     VCC : sur le 3.3V
     SCL : sur la broche D1 du Wemos
     SDA : sur la broche D2 du Wemos
*/

#define DUST_SENSOR_DIGITAL_PIN_PM10  D0        // DSM501 Pin 2 of DSM501 (jaune / Yellow)
#define DUST_SENSOR_DIGITAL_PIN_PM25  D5        // DSM501 Pin 4 (rouge / red)
#define COUNTRY                       0         // 0. France, 1. Europe, 2. USA/China
#define EXCELLENT                     "EXCELLENT"
#define GOOD                          "BON"
#define ACCEPTABLE                    "MOYEN"
#define MODERATE                      "MEDIOCRE"
#define HEAVY                         "MAUVAIS"
#define SEVERE                        "TRES_MAUVAIS"
#define HAZARDOUS                     "DANGEREUX"

#define OLED_RESET -1
Adafruit_SSD1306 display(OLED_RESET);


const char* ssid     = "MONWIFITOPSECRET";      // SSID
const char* password = "MONMOTDEPASSE";      // Password
const char* host = "MONIP";  // IP serveur - Server IP
const int   port = 8080 ;            // Port serveur - Server Port

// NE PLUS RIEN MODIFIER EN DESSOUS DE CETTE LIGNE SAUF LES 3 IDX DOMOTICZ

const int   watchdog = 150000;        // Fréquence du watchdog - Watchdog frequency
unsigned long previousMillis = millis();

HTTPClient http;

unsigned long   duration;
unsigned long   starttime;
unsigned long   endtime;
unsigned long   lowpulseoccupancy = 0;
float           ratio = 0;
unsigned long   SLEEP_TIME    = 5 * 1000;       // Sleep time between reads (in milliseconds)
unsigned long   sampletime_ms = 5 * 60 * 1000;  // Durée de mesure - sample time (ms)

struct structAQI{
  // variable enregistreur - recorder variables
  unsigned long   durationPM10;
  unsigned long   lowpulseoccupancyPM10 = 0;
  unsigned long   durationPM25;
  unsigned long   lowpulseoccupancyPM25 = 0;
  unsigned long   starttime;
  unsigned long   endtime;
  // Sensor AQI data
  float         concentrationPM25 = 0;
  float         concentrationPM10  = 0;
  int           AqiPM10            = -1;
  int           AqiPM25            = -1;
  // Indicateurs AQI - AQI display
  int           AQI                = 0;
  String        AqiString          = "";
  int           AqiColor           = 0;
};
struct structAQI AQI;

SimpleTimer timer;

void updateAQILevel(){
  AQI.AQI = AQI.AqiPM10;
}

void updateAQI() {
  // Actualise les mesures - update measurements
  AQI.endtime = millis();
  float ratio = AQI.lowpulseoccupancyPM10 / (sampletime_ms * 10.0);
  float concentration = 1.1 * pow( ratio, 3) - 3.8 *pow(ratio, 2) + 520 * ratio + 0.62; // using spec sheet curve
  if ( sampletime_ms < 3600000 ) { concentration = concentration * ( sampletime_ms / 3600000.0 ); }
  AQI.lowpulseoccupancyPM10 = 0;
  AQI.concentrationPM10 = concentration;
 
  ratio = AQI.lowpulseoccupancyPM25 / (sampletime_ms * 10.0);
  concentration = 1.1 * pow( ratio, 3) - 3.8 *pow(ratio, 2) + 520 * ratio + 0.62;
  if ( sampletime_ms < 3600000 ) { concentration = concentration * ( sampletime_ms / 3600000.0 ); }
  AQI.lowpulseoccupancyPM25 = 0;
  AQI.concentrationPM25 = concentration;

  Serial.print("Concentrations => PM2.5: "); Serial.print(AQI.concentrationPM25); Serial.print(" | PM10: "); Serial.println(AQI.concentrationPM10);
 
  AQI.starttime = millis();
     
  // Actualise l'AQI de chaque capteur - update AQI for each sensor
  if ( COUNTRY == 0 ) {
    // France
    AQI.AqiPM25 = getATMO( 0, AQI.concentrationPM25 );
    AQI.AqiPM10 = getATMO( 1, AQI.concentrationPM10 );
  } else if ( COUNTRY == 1 ) {
    // Europe
    AQI.AqiPM25 = getACQI( 0, AQI.concentrationPM25 );
    AQI.AqiPM10 = getACQI( 1, AQI.concentrationPM10 );
  } else {
    // USA / China
    AQI.AqiPM25 = getAQI( 0, AQI.concentrationPM25 );
    AQI.AqiPM10 = getAQI( 0, AQI.concentrationPM10 );
  }

  // Actualise l'indice AQI - update AQI index
  updateAQILevel();
  updateAQIDisplay();
 
  Serial.print("AQIs => PM25: "); Serial.print(AQI.AqiPM25); Serial.print(" | PM10: "); Serial.println(AQI.AqiPM10);
  Serial.print(" | AQI: "); Serial.println(AQI.AQI); Serial.print(" | Message: "); Serial.println(AQI.AqiString);
 

}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.print("Connecting to ");
  Serial.println(ssid);

    WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setRotation(2);
  display.display();
  delay(2000);
  display.clearDisplay();

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(37,24);
  display.println("DEMARRAGE");
  display.print("       SYSTEME ");
  display.display();
  delay(2000);
  display.clearDisplay();
 
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(22,20);
  display.print("WiFi CONNECTE!");
  delay(2000);
  display.display();
  display.clearDisplay();

 
  pinMode(DUST_SENSOR_DIGITAL_PIN_PM10,INPUT);
  pinMode(DUST_SENSOR_DIGITAL_PIN_PM25,INPUT);

  // wait 60s for DSM501 to warm up
  for (int i = 1; i <= 60; i++)
  {
    delay(1000); // 1s
    Serial.print(i);
    Serial.println(" s (wait 60s for DSM501 to warm up)");
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(19,20);
    display.println("Chauffe capteur");
    display.setCursor(34,36);
    display.print(i); display.print(" s / 60s");
    delay(1);
    display.display();
    display.clearDisplay();
   
  }
 
  Serial.println("Ready!");
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("CAPTEUR OK");
  display.println("MESURE...");
  display.println("PATIENTEZ");
  delay(2000);
  display.display();
  display.clearDisplay();
 
  AQI.starttime = millis();
  timer.setInterval(sampletime_ms, updateAQI);
}

void loop() {
  AQI.lowpulseoccupancyPM10 += pulseIn(DUST_SENSOR_DIGITAL_PIN_PM10, LOW);
  AQI.lowpulseoccupancyPM25 += pulseIn(DUST_SENSOR_DIGITAL_PIN_PM25, LOW);
 
  timer.run();

unsigned long currentMillis = millis();
 
  if ( currentMillis - previousMillis > watchdog ) {
    previousMillis = currentMillis;
 
    if(WiFi.status() != WL_CONNECTED) {
      Serial.println("WiFi not connected !");
    } else {
      Serial.println("Send data to Domoticz");
     
      float PM10 = (AQI.concentrationPM10);
      float PM25 = (AQI.concentrationPM25);

     
String url = "/json.htm?type=command&param=udevice&idx=1136&nvalue=0&svalue=";
        url += String(PM10);
   
        sendDomoticz(url);

String url2 = "/json.htm?type=command&param=udevice&idx=1137&nvalue=0&svalue=";
        url2 += String(PM25);
   
        sendDomoticz(url2);

String url3 = "/json.htm?type=command&param=udevice&idx=1138&nvalue=0&svalue=";
        url3 += String(AQI.AqiString);
   
        sendDomoticz(url3);

  display.setTextSize(1);
  display.setTextColor(BLACK, WHITE);
  display.setCursor(0,0);
  display.println("     IQA DE STEPH    ");
  display.setTextColor(WHITE);
  display.println("");
  display.print("PM10 = "); display.print(PM10);   display.println(" ug/m3");
  display.println("");
  display.print("PM2.5 = "); display.print(PM25);   display.println(" ug/m3");
  display.println("");
  display.print("AIR : "); display.print(AQI.AqiString);
  delay(1);
  display.display();
  display.clearDisplay();

  }
 }
}

/*
 * Calcul l'indice de qualité de l'air français ATMO
 * Calculate French ATMO AQI indicator
 */
int getATMO( int sensor, float density ){
  if ( sensor == 0 ) { //PM2,5
    if ( density <= 11 ) {
      return 1;
    } else if ( density > 11 && density <= 24 ) {
      return 2;
    } else if ( density > 24 && density <= 36 ) {
      return 3;
    } else if ( density > 36 && density <= 41 ) {
      return 4;
    } else if ( density > 41 && density <= 47 ) {
      return 5;
    } else if ( density > 47 && density <= 53 ) {
      return 6;
    } else if ( density > 53 && density <= 58 ) {
      return 7;
    } else if ( density > 58 && density <= 64 ) {
      return 8;
    } else if ( density > 64 && density <= 69 ) {
      return 9;
    } else {
      return 10;
    }
  } else {
    if ( density <= 6 ) {
      return 1;
    } else if ( density > 6 && density <= 13 ) {
      return 2;
    } else if ( density > 13 && density <= 20 ) {
      return 3;
    } else if ( density > 20 && density <= 27 ) {
      return 4;
    } else if ( density > 27 && density <= 34 ) {
      return 5;
    } else if ( density > 34 && density <= 41 ) {
      return 6;
    } else if ( density > 41 && density <= 49 ) {
      return 7;
    } else if ( density > 49 && density <= 64 ) {
      return 8;
    } else if ( density > 64 && density <= 79 ) {
      return 9;
    } else {
      return 10;
    }
  }
}

void sendDomoticz(String url){
  Serial.print("connecting to ");
  Serial.println(host);
  Serial.print("Requesting URL: ");
  Serial.println(url);
  http.begin(host,port,url);
  int httpCode = http.GET();
    if (httpCode) {
      if (httpCode == 200) {
        String payload = http.getString();
        Serial.println("Domoticz response ");
        Serial.println(payload);
      }
    }
  Serial.println("closing connection");
  http.end();
}

void updateAQIDisplay(){
  /*
   * 1 EXCELLENT                   
   * 2 GOOD                       
   * 3 ACCEPTABLE             
   * 4 MODERATE           
   * 5 HEAVY             
   * 6 SEVERE
   * 7 HAZARDOUS
   */
  if ( COUNTRY == 0 ) {
    // Système ATMO français - French ATMO AQI system
    switch ( AQI.AQI) {
      case 10:
        AQI.AqiString = SEVERE;
        break;
      case 9:
        AQI.AqiString = HEAVY;
        break;
      case 8:
        AQI.AqiString = HEAVY;
        break;
      case 7:
        AQI.AqiString = MODERATE;
        break;
      case 6:
        AQI.AqiString = MODERATE;
        break; 
      case 5:
        AQI.AqiString = ACCEPTABLE;
        break;
      case 4:
        AQI.AqiString = GOOD;
        break;
      case 3:
        AQI.AqiString = GOOD;
        break;
      case 2:
        AQI.AqiString = EXCELLENT;
        break;
      case 1:
        AQI.AqiString = EXCELLENT;
        break;         
      }
  } else if ( COUNTRY == 1 ) {
    // European CAQI
    switch ( AQI.AQI) {
      case 25:
        AQI.AqiString = GOOD;
        break;
      case 50:
        AQI.AqiString = ACCEPTABLE;
        break;
      case 75:
        AQI.AqiString = MODERATE;
        break;
      case 100:
        AQI.AqiString = HEAVY;
        break;       
      default:
        AQI.AqiString = SEVERE;
      }
  } else if ( COUNTRY == 2 ) {
    // USA / CN
    if ( AQI.AQI <= 50 ) {
        AQI.AqiString = GOOD;
    } else if ( AQI.AQI > 50 && AQI.AQI <= 100 ) {
        AQI.AqiString = ACCEPTABLE;
    } else if ( AQI.AQI > 100 && AQI.AQI <= 150 ) {
        AQI.AqiString = MODERATE;
    } else if ( AQI.AQI > 150 && AQI.AQI <= 200 ) {
        AQI.AqiString = HEAVY;
    } else if ( AQI.AQI > 200 && AQI.AQI <= 300 ) {
        AQI.AqiString = SEVERE;
    } else {   
       AQI.AqiString = HAZARDOUS;
    }
  }
}
/*
 * CAQI Européen - European CAQI level
 * source : http://www.airqualitynow.eu/about_indices_definition.php
 */
 
int getACQI( int sensor, float density ){
  if ( sensor == 0 ) {  //PM2,5
    if ( density == 0 ) {
      return 0;
    } else if ( density <= 15 ) {
      return 25 ;
    } else if ( density > 15 && density <= 30 ) {
      return 50;
    } else if ( density > 30 && density <= 55 ) {
      return 75;
    } else if ( density > 55 && density <= 110 ) {
      return 100;
    } else {
      return 150;
    }
  } else {              //PM10
    if ( density == 0 ) {
      return 0;
    } else if ( density <= 25 ) {
      return 25 ;
    } else if ( density > 25 && density <= 50 ) {
      return 50;
    } else if ( density > 50 && density <= 90 ) {
      return 75;
    } else if ( density > 90 && density <= 180 ) {
      return 100;
    } else {
      return 150;
    }
  }
}

/*
 * AQI formula: https://en.wikipedia.org/wiki/Air_Quality_Index#United_States
 * Arduino code https://gist.github.com/nfjinjing/8d63012c18feea3ed04e
 * On line AQI calculator https://www.airnow.gov/index.cfm?action=resources.conc_aqi_calc
 */
float calcAQI(float I_high, float I_low, float C_high, float C_low, float C) {
  return (I_high - I_low) * (C - C_low) / (C_high - C_low) + I_low;
}

int getAQI(int sensor, float density) {
  int d10 = (int)(density * 10);
  if ( sensor == 0 ) {
    if (d10 <= 0) {
      return 0;
    }
    else if(d10 <= 120) {
      return calcAQI(50, 0, 120, 0, d10);
    }
    else if (d10 <= 354) {
      return calcAQI(100, 51, 354, 121, d10);
    }
    else if (d10 <= 554) {
      return calcAQI(150, 101, 554, 355, d10);
    }
    else if (d10 <= 1504) {
      return calcAQI(200, 151, 1504, 555, d10);
    }
    else if (d10 <= 2504) {
      return calcAQI(300, 201, 2504, 1505, d10);
    }
    else if (d10 <= 3504) {
      return calcAQI(400, 301, 3504, 2505, d10);
    }
    else if (d10 <= 5004) {
      return calcAQI(500, 401, 5004, 3505, d10);
    }
    else if (d10 <= 10000) {
      return calcAQI(1000, 501, 10000, 5005, d10);
    }
    else {
      return 1001;
    }
  } else {
    if (d10 <= 0) {
      return 0;
    }
    else if(d10 <= 540) {
      return calcAQI(50, 0, 540, 0, d10);
    }
    else if (d10 <= 1540) {
      return calcAQI(100, 51, 1540, 541, d10);
    }
    else if (d10 <= 2540) {
      return calcAQI(150, 101, 2540, 1541, d10);
    }
    else if (d10 <= 3550) {
      return calcAQI(200, 151, 3550, 2541, d10);
    }
    else if (d10 <= 4250) {
      return calcAQI(300, 201, 4250, 3551, d10);
    }
    else if (d10 <= 5050) {
      return calcAQI(400, 301, 5050, 4251, d10);
    }
    else if (d10 <= 6050) {
      return calcAQI(500, 401, 6050, 5051, d10);
    }
    else {
      return 1001;
    }
  } 
}

Merci encore ;)
MAx

Re: [TUTO] Mesurer la qualité de l'air de votre intérieur

Publié : 01 juil. 2018, 12:08
par domigmau
Bonjour à tous,
je suis débutant dans le domaine et j'adore bidouiller... Merci encore pour ce tutoriel très intéressant.
Néanmoins, je rencontre le problème suivant avec Arduino 1.8.5 qui me donne les erreurs suivantes :

Code : Tout sélectionner

 
 C:\Users\Michaël\Documents\Arduino\qualite_air_juin2018\qualite_air_juin2018.ino: In function 'void setup()':

qualite_air_juin2018:32: error: 'D0' was not declared in this scope

C:\Users\Michaël\Documents\Arduino\qualite_air_juin2018\qualite_air_juin2018.ino:177:11: note: in expansion of macro 'DUST_SENSOR_DIGITAL_PIN_PM10'

qualite_air_juin2018:33: error: 'D5' was not declared in this scope

C:\Users\Michaël\Documents\Arduino\qualite_air_juin2018\qualite_air_juin2018.ino:178:11: note: in expansion of macro 'DUST_SENSOR_DIGITAL_PIN_PM25'

C:\Users\Michaël\Documents\Arduino\qualite_air_juin2018\qualite_air_juin2018.ino: In function 'void loop()':

qualite_air_juin2018:32: error: 'D0' was not declared in this scope

C:\Users\Michaël\Documents\Arduino\qualite_air_juin2018\qualite_air_juin2018.ino:214:40: note: in expansion of macro 'DUST_SENSOR_DIGITAL_PIN_PM10'

qualite_air_juin2018:33: error: 'D5' was not declared in this scope

C:\Users\Michaël\Documents\Arduino\qualite_air_juin2018\qualite_air_juin2018.ino:215:40: note: in expansion of macro 'DUST_SENSOR_DIGITAL_PIN_PM25'

exit status 1
'D0' was not declared in this scope
Les bibliothèques sont à jour.

Pouvez-vous m'aider, s'il vous plait ?
Vous remerciant par avance.

Re: [TUTO] Mesurer la qualité de l'air de votre intérieur

Publié : 21 mars 2019, 23:08
par Weado
Bonjour à tous.

J'ai reçu depuis peu mon DSM501A, hors quand je teste avec ton code, tout se passe bien, jusqu'à que j'ai sur mon écran "CAPTEUR OK, MESURE... PATIENTEZ", mais rien de plus.

Hors, je ne comprends pourquoi cela ne déroule pas le loop.

Pour info, j'ai suivi ton article sur les branchements et code et je m'appuie sur un Nodemcu.

Merci pour votre aide.

Re: [TUTO] Mesurer la qualité de l'air de votre intérieur

Publié : 25 oct. 2019, 08:22
par bonbon
Pour ceux qui sont intéressés par le projet luftdaten (open source, détecteur de particule connecté à monter, pour 22€ de matos, réalisable en 15-20 min) y a un tuto ici (une version française plus détaillée): https://sites.google.com/view/l-air-n-e ... e/detecter

Re: [TUTO] Mesurer la qualité de l'air de votre intérieur

Publié : 21 nov. 2021, 16:37
par Guigui
Bonjour la communauté!


Je viens ici car je sèche au niveau de l'inclusion des librairies


<SimpleTimer.h>
<ESP8266WiFi.h>
<ESP8266HTTPClient.h>
<SPI.h>
<Wire.h>
<Adafruit_GFX.h>
<Adafruit_SSD1306.h>

Quand je les cherches depuis le programme Arduino, il me sort plusieurs possibilités.

Alors j'ai copié le code de chaque fichier .h dans un fichier nom_de_la_librairie.h que j'ai mis a la racine du fichier .ino

Cette partie reste nébuleuse, quand j'essaye de compiler il me sort

Code : Tout sélectionner

Arduino : 1.8.16 (Windows Store 1.8.51.0) (Windows 10), Carte : "LOLIN(WEMOS) D1 mini (clone), 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, DOUT (compatible), 40MHz, 4MB (FS:2MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 921600"
C:\Users\user\Documents\Arduino\Capteur_2\Capteur_2.ino: In function 'void setup()':

Capteur_2:211:45: error: no matching function for call to 'SimpleTimer::setInterval(long unsigned int&, void (&)())'

  211 |   timer.setInterval(sampletime_ms, updateAQI);

      |                                             ^

In file included from C:\Users\user\Documents\Arduino\Capteur_2\Capteur_2.ino:1:

C:\Users\user\Documents\Arduino\libraries\SimpleTimer/SimpleTimer.h:23:10: note: candidate: 'void SimpleTimer::setInterval(uint64_t)'

   23 |     void setInterval(uint64_t interval);

      |          ^~~~~~~~~~~

C:\Users\user\Documents\Arduino\libraries\SimpleTimer/SimpleTimer.h:23:10: note:   candidate expects 1 argument, 2 provided

C:\Users\user\Documents\Arduino\Capteur_2\Capteur_2.ino: In function 'void loop()':

Capteur_2:218:9: error: 'class SimpleTimer' has no member named 'run'

  218 |   timer.run();

      |         ^~~

exit status 1

no matching function for call to 'SimpleTimer::setInterval(long unsigned int&, void (&)())'


Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
Autre point, il est dit dans le tuto que je doit modifier le fichier Adafruit_SSD1306.h mais à quel niveau ?

Je suis perdu à l'aide !