Arduino - enseignement en chimie
Topic outline
-
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 photodiodefloat 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 parasitefloat 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 photodiodeTempsAffichageSuivant = 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'absorbanceif (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
}