Intervalle de temps d'un évènement ?

Bonjour,

Je m’embrouille avec les while loops et les soustractions à base de millis, impossible d’arriver à quelque chose.

L’objectif c’est tout simplement de mesurer l’intervalle de temps pendant lequel un morceau de métal est touché en utilisant la librairie CapacitiveSensor de Paul Badger. Si cet intervalle est < à une valeur x alors faire ceci …
Il y a deux valeurs seuils (disons 100 et 3000) qui représentent la valeur de la résistance touché/non touché.

J’insert le sketch basique fourni avec la librairie car je me suis énervé et j’ai supprimé celui que j’ai tenté de construire par dessus. :-[

Merci

#include <CapacitiveSensor.h>

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


CapacitiveSensor   cs_4_2 = CapacitiveSensor(4,2);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired

void setup()                    
{
   cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1 - just as an example
   Serial.begin(9600);
}

void loop()                    
{
    long start = millis();
    long total1 =  cs_4_2.capacitiveSensor(30);

    Serial.print(millis() - start);        // check on performance in milliseconds
    Serial.print("\t");                    // tab character for debug windown spacing

    Serial.print(total1);                  // print sensor output 1
    Serial.print("\t");

    delay(10);                             // arbitrary delay to limit data to serial port 
}

une bonne question à vous poser: est-ce qu'il y a des rebonds comme dans un bouton?

(et sinon regardez comment on gère un bouton... il doit y avoir des milliers de tutos pour voir le temps d'appui)

L’IDE propose un truc intéressant : le traceur série (menu Outils > traceur série ou CTRL MAJ L). Ca permet de faire des choses comme ça

(https://www.carnetdumaker.net)

Avec ça tu peux trouver tes seuils et voir comment la mesure évolue en fonction de la manière dont tu touches ton senseur. Supposons que la valeur augmente ou reste à peu près constante pendant que tu touches.
L’idée de ce que tu veux faire est la suivante : dès que la valeur mesurée entre dans une gamme de valeurs autour du seuil de détection :

if (abs(total1-seuil) < tolerance)

tu lances le chrono :

unsigned long time = millis();

Si la valeur mesurée sort de la gamme de mesure, tu arrêtes le chrono et tu calcules la durée :

duree = millis()-time;

Ensuite tu testes cette durée et tu lances les actions qui en dépendent…