Numérique Artisal Rendu du 14/11/2024
Merlin Gentien et Lucile Bergeron
L’idée était de faire un tabouret lâchant un soupir plus ou moins prononcé, selon la vitesse à laquelle un individu s’assoit. Plus l’individu s’assoit avec force, donc plus rapidement, plus le volume du “soupir” est élevé. (Et du coup gênant). Nous sommes partis de la mousse contenue normalement dans un tabouret, y ajoutant deux capteurs. L’objectif étant de trouver un code qui calcule le temps mesuré, entre le premier et le deuxième capteur. Le chronomètre commence lorsque le premier capteur est déclenché et s’arrête quand le deuxième capteur est activé.
Schéma global du placement des capteurs.
Des blocs de mousse (formes cylindriques en bleu), découpés, nous servent de structure. Un tissu conducteur (surface hachurée en rouge), nous sert de capteur. Ce tissu est découpé à la taille de la mousse et accolé aux extrémités. (une extrémité du bloc A, les deux extrémités du bloc du milieu B et une extrémité du bloc C). Arduino reçoit l’information d’un capteur lorsque deux surfaces recouvertes de tissu conducteur entrent en contact. La pression exercée de la main permet ce contact par les trous emporte-piècés des couches a et b.
Premier Test :
Essai avec trois blocs de mousse, dont 1 troué, pour vérifier que la pression de la main est suffisante pour déclencher un capteur. Ce dernier caractérisé par la diode LED, qui s’éteint quand Arduino détecte le capteur.
Le code utilisé :
const int cablePin1 = 2; // Pin de détection de contact
const int cablePin2 = 4; // Pin de détection de contact
long counter1;
long counter2;
void setup() {
pinMode(cablePin1, INPUT_PULLUP); // Active la résistance de pull-up
pinMode(cablePin2, INPUT_PULLUP); // Active la résistance de pull-up
Serial.begin(9600);
}
void loop() {
// Vérifie si les câbles sont en contact
if (digitalRead(cablePin1) == LOW) {
counter1 = millis();
// Serial.println("Contact détecté !");
}
if (digitalRead(cablePin2) == LOW) {
counter2 = millis();
// Serial.println("Contact détecté !");
}
else {
// Serial.println("Pas de contact.");
}
int temps = counter2 - counter1;
temps = constrain(temps,0,800);
Serial.println(temps);
// delay(10); // Petit délai pour éviter trop de messages
}
Malheureusement, le programme ne s’execute que si le bouton 1 est désactivé avant l’activation du bouton 2..