Merci,
skywodd: je suis une quiche en anglais , mais j'ai compris quand même (en gros).
jean-francois: j'avais dans l'idée d'utiliser millis().
Il me manquer les conditions de teste, j'en été rester à de simples "If" (en paquet).
Je me suis écrit une version avec les switch case, ... il ma parut très long.
Alors après réflexion j'ai peut-être trouver plus compacte en changeant un brin l'usage.
Le résultat incrémente -1 en pression simple et jusqu'à 4 fois -5 en pression longue de 500ms au delà il incrémente avec un multiple de 5 (ex: -1, -5, -5, -5, -5, -25, -30, -35 ..). Après relâchement il teste, si la valeur est négative il remet à zéro.
Voyez vous même si quelque chose choque ...
Note : j'utilise le notepad++, donc normal si il y a des fautes
// lecture de freq1 minima
if (analogRead(pin_freq1) <= 400 && etat == false){
freq[0]--; temps = millis();
// incremente plus rapidement si...
while(analogRead(pin_freq1) <= 400){
tempo = millis() - temps
teste_temps = tempo - (int(tempo / 1000); // incremente a chaque 500 ms, max.4 fois
if (teste_temps == 500 && increment <= 4){
increment++; freq[0] = freq[0] - 5; }
else if (teste_temps == 500 && increment >= 5){
freq[0] = freq[0] - (5 * increment); increment++; }// increment avec acceleration 25,30,35,40,45...
else if (teste_temps == 510){
// rafraichi un affichage LCD eventuellement
}
}
increment = 0; etat = true;
}
if (freq[0] <= 0){freq[0] = 1; }