• Réalisation des mesures en lumière ambiante.
    Actualisation du "zéro" en saisissant le chiffre 0 dans la barre du moniteur série.
    Affichage de la valeur de l'absorbance chaque seconde.


    int PinLED = 8; // Numéro du pin Alimentation de la LED
    int PinPhotoDiode = A0; // Numéro du pin signal photodiode

    float Son; // Signal proportionnel à l'intensité reçue LED allumée
    float Soff; // Signal proportionnel à l'intensité reçue LED éteinte (fond parasite)
    int Tstab = 10; // temps d'attente pour stabilisation de la LED entre état allumé et eteint
    float Smesure; // Smesure= Son-Soff pour s'affranchir du fond parasite

    float S0 = 500.0; // Signal blanc, valeur intiale arbitraire
    float alpha = 0.05; // pour calculer la moyenne exponentielle
    float A; // Absorbance=-log10(Smesure/S0)

    int TempsEntreAffichage = 1000;
    float TempsAffichageSuivant;

    //--------------------------------------------------------------------------------------------
    void setup() {
       Serial.begin(9600); // Communication avec le moniteur série
       pinMode(PinLED, OUTPUT); // Définition pin connecté à la LED
       pinMode(PinPhotoDiode, INPUT); // Définition pin connecté à la photodiode

       TempsAffichageSuivant = millis() + TempsEntreAffichage;
    }
    //--------------------------------------------------------------------------------------------
    void loop() {

       digitalWrite(PinLED, HIGH); delay(Tstab); //---------- LED allumée -------------
       Son = analogRead(PinPhotoDiode);

       digitalWrite(PinLED, LOW); delay(Tstab); //---------- LED éteinte -------------
       Soff = analogRead(PinPhotoDiode);

       Smesure = alpha * (Son-Soff) + (1 - alpha) * Smesure;

       if (millis() > TempsAffichageSuivant) { // Test pour affichage et frappe clavier
          Serial.print(Son);Serial.print(" ");
          Serial.print(Soff);Serial.print(" > Abs = ");
          Serial.println(log10(S0 / Smesure), 3); // Affiche l'absorbance

          if (Serial.available()) { // Teste si un caractère arrive du terminal
             if (String(Serial.readString()) == "0") { //teste si le caractère est 0
                Serial.println("Mémorisation de la valeur de S0 ");
                S0 = Smesure;
             } // fin de stockageS0
          } // fin du test arrivée d'un caractère
          TempsAffichageSuivant = TempsAffichageSuivant + TempsEntreAffichage;
       } // fin test Affichage
    }

     

     Fichier Arduino à télécharger