Deux bandes de papier aluminium permettent d'allumer l’une ou l’autre de deux DEL lorsque on les touche.
Il est nécessaire d’ajuster les valeurs des capacités seuil afin de faire marcher le montage.
Code à téléverser
// 2+1 plaques d'aluminium séparées par un isolant mince branchées en A0, A1 et A2
const int OUT_PIN = A0; //relié à l'armature inférieure
const int IN_PIN1 = A1; //relié à l'une des armatures supérieures
const int IN_PIN2 = A2; //relié à l'autre de armature supérieure
float Cseuil1 =150; // capacité en dessous de laquelle la DEL 1 doit s'allumer, en pF - à régler
float Cseuil2 =300; // capacité en dessous de laquelle la DEL 2 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);
}