1) Pour la fonction makey
sensorValue = analogRead(sensorPin);
for (k=0;k<10; k++){
values[k] = values[k+1]; }
values[9] = sensorValue;
resistivite = 0;
for (k=0; k<10; k++) {
resistivite = resistivite + values [k]; }
Serial.println(resistivite);
Explication : on définit la valeur de la varaible "sensorValue" comme étant ce que l'on lit sur la broche analogique où sensorPin est affectée (donc ici A0).
On crée une fonction for, où la variable "k" est initialisée à la valeur 0, et où si elle est inférieure à 10, elle est incrémentée (augmentée) de 1 en 1.
On y stocke dans le tableau "values" les valeurs de la variable "k", chaque cellule du tableau
prenant la valeur suivante de "k".
La dernière cellule du tableau, la cellule 9, prendra la valeur de la variable "sensorValue, donc de ce que la carte détecte sur la broche A0.
On initialise la variable "resistivite" à 0.
On relance la boucle for pour déterminer la valeur de la variable "resistivite".
La variable "resistivite" aura comme valeur "resistivite" + la valeur présente dans les cellules
du tableau "values".
On affiche dans le moniteur série la valeur de la variable "resistivite". Plus la valeur est basse, plus l'objet est conducteur. Lorsqu’on fait toucher les 2 pinces crocos, le courant passe
normalement, il n'y a pas de résistance la valeur de la variable "resistivite" est à 0.
Dans mon cas, lorsque rien ne touche les pinces crocos, donc seul l'air ambiant fait passer
l'électricité entre les 2 pinces, le moniteur série affiche une valeur d'environ 10 200.
Si je touche les 2 pinces crocos, donc seul mon corps sert de conducteur, "resistivite" est à
environ 3600, pour d'autres personnes l'ayant testé, cela varie entre 2200 et 3700.
Dans le cas d'un dessin fait à la mine de crayon gris (graphite) la valeur de "resistivite" est un peu moins de 5000, une banane également testée tourne entre 5000 et 6000. Il faudra donc peut être modifier la valeur dans la condition if en fonction de l’objet à « cliquer ».
2) Pour la led et le servomoteur
if (resistivite < 5000){
digitalWrite(ledPin, HIGH);
}
if (resistivite < 5000){
monservo.write(90);
delay(500);
monservo.write(0);
}
else{
digitalWrite(ledPin, LOW);
}
Explication : si la valeur de la variable "resistivite" est inférieure à 5000 (cette valeur peut être changée pour améliorer la sensibilité), alors on allume la led.
De même, si la valeur de la variable "resistive" est inférieur à 5000, on positionne le servo à
l’angle choisit ici 90°.
On crée un délai de 2 secondes avant de refaire la boucle. Attention durant ce délai la led
reste allumée.
On repositionne le servomoteur à l’angle choisit ici à 90°.
Sinon, c'est à dire que la valeur de la variable "resistive" est supérieure à 5000, on éteint la led.