15 jours pour comprendre les contrôleurs MIDI - Jour 4

Je règle le problème, rencontré précédement, de la fluctuation de la valeur du potentiomètre.

Le code

L’idée principale est de comparer des moyennes de valeurs, plutôt que des valeurs ponctuelles. Pour faire une moyenne il faut une division. Mais je n’ai pas envie d’introduire de division dans le code si je peux l’éviter, pour le garder le plus rapide possible. C’est pourquoi je me contente de comparer l’addition des deux anciennes valeurs d’un côté, avec l’addition de la valeur courante et de la dernière d’un autre côté (penultimate + last != last + current).

int penultimate = 0;
int last = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int current = analogRead(A0) >> 3;

  if (last != current) {
    if (penultimate + last != last + current) {
      Serial.println(current);
      penultimate = last;
      last = current;
    }
  }

  delay(10);
}

Grâce à cela, les fluctuations sont maintenant très rares.

Références

  1. Le code de cet article est sur github

Cet article fait partie d’une série :

  1. Envoyer une note par le cable MIDI
  2. Lire un potentiomètre
  3. Lire un potentiomètre II
  4. Régler le problème de fluctuation
  5. Envoyer le message Control Change