// 2 plaques d'aluminium séparées par un isolant mince branchées entre A0 et A2 const int OUT_PIN = A0; //relié à l'armature que l'on ne touche pas const int IN_PIN1 = A1; //relié à l'armature que l'on touche avec le doigt const int IN_PIN2 = A2; //relié à l'armature 2 que l'on touche avec le doigt float Cseuil1 =500; // capacité en dessous de laquelle la DEL 1 jaune doit s'allumer, en pF - à régler float Cseuil2 =300; // capacité en dessous de laquelle la DEL 2 rouge doit s'allumer, en pF - à régler // Pin de connexion du + de la DEL (autre borne de la DEL reliée à GND à travers une résistance de 300 ohm environ int DEL_PIN1 = 7 ; int DEL_PIN2 = 8 ; //La valeur de la capacité interne varie d'une carte à l'autre, l'ajuster avec une capacité connue d'environ 500 pF const float capacite_interne = 27; // la valeur maxiale lue sur IN_PIN correspond à un niveau numérique de 1023 const int tension_max = 1023; void setup() { pinMode(OUT_PIN, OUTPUT); pinMode(DEL_PIN1, OUTPUT); pinMode(DEL_PIN2, OUTPUT); Serial.begin(9600); } void loop() { pinMode(IN_PIN1, INPUT); //IN_PIN passe en entrée pinMode(IN_PIN2, INPUT); //IN_PIN passe en entrée digitalWrite(OUT_PIN, HIGH); //OUT_PIN passe à 5V int valeur_lue1 = analogRead(IN_PIN1); //lecture de la valeur sur IN_PIN int valeur_lue2 = analogRead(IN_PIN2); //lecture de la valeur sur IN_PIN digitalWrite(OUT_PIN, LOW); //OUT_PIN passe à 0V pinMode(IN_PIN1, OUTPUT); //IN_PIN passe en sortie pour effacement jusqu'à la prochaine mesure pinMode(IN_PIN2, OUTPUT); //IN_PIN passe en sortie pour effacement jusqu'à la prochaine mesure //calcul de C à partir de la répartition de tension entre deux condensateurs en série float C1 = (float)valeur_lue1 * capacite_interne / (float)(tension_max - valeur_lue1); float C2 = (float)valeur_lue2 * capacite_interne / (float)(tension_max - valeur_lue2); Serial.print(C1); Serial.print("\t") ; Serial.println(C2) ; if (C1 < Cseuil1) { digitalWrite(DEL_PIN1, HIGH) ; // On alimente la DEL } else { digitalWrite(DEL_PIN1, LOW) ; // On n'alimente pas la DEL } if (C2 < Cseuil2) { digitalWrite(DEL_PIN2, HIGH) ; // On alimente la DEL } else { digitalWrite(DEL_PIN2, LOW) ; // On n'alimente pas la DEL } delay(300); }