problème d'entrée analogique (Teensy Midi)

bonjour, j’ai pour projet de réaliser un contrôleur midi avec une Teensy 3.2 (Usb type : MIDI) tout marche normalement avec les boutons mais j’ai un signal midi constant dans mon DAW ( ableton live ) dés que je rajoute les potentiomètres ( 10k ). jai fait le test en ne declarant qu’un seul potentiomètres et le problème reste le même.

voici le code :

#include <Bounce.h>


const int channel = 1;


const int controllerA0 = 50; // 

void setup() {
}

int previousA0 = -1;

elapsedMillis msec = 0;

void loop() {

  if (msec >= 20) {
    msec = 0;
    int n0 = analogRead(A0) / 8;

  
    if (n0 != previousA0) {
      usbMIDI.sendControlChange(controllerA0, n0, channel);
      previousA0 = n0;
    }

  }

  
  while (usbMIDI.read()) {

  }
}

/code]

auriez vous une solution SVP

Bonjour

la condition

if (n0 != previousA0)

N'est pas assez restrictive , il faut prendre en compte le bruit inhérent à toute conversion analogique-numérique qui fait que sans action sur le potentiomètre il est normal d'avoir une valeur n0 qui 'change tout le temps'.
c'est probablement visible en envoyant n0 sur le 'traceur série'
Une partie du bruit peut être réduite en mettant un condensateur entre curseur du potentiomètre et masse mais il reste le 'bruit de quantification' . (oscillation du résultat entre deux valeurs numériques)

-> Déclencher l'action si la valeur absolue de la différence entre n0 actuel et n0 précédent dépasse un seuil à déterminer expérimentalement.

quel ligne de codes pourrai rendre plus restrictif ?

es ce qu’un code de ce style serai plus approprié ?

#include <MIDI.h>

const int channel = 1;
int analogValue = 0;
int previousMIDI = 0;
int newMIDI = 0;

void setup(){ 
}

void loop(){
  analogValue = analogRead(A0);
  if (analogValue % 8 == 0 && analogValue / 8 != previousMIDI){
    newMIDI = analogValue / 8;
    usbMIDI.sendControlChange(20, newMIDI, channel);
    previousMIDI = newMIDI;
  }
}/code]

SmaD83:
quel ligne de codes pourrai rendre plus restrictif ?

es ce qu'un code de ce style serai plus approprié ?

Bonjour
inspire toi de ce bout de code qu j'utilise
j'ai réglé l valeur de hystpot à 5

//----------------------- test manipulation potentiomètre 1 envoi CC001

  valp1 = analogRead(p1);
  vhyst = abs(valp1 - oldvalp1); // ecart absolu entre lecture nouvelle et ancienne
  if (vhyst > hystpot) // faire si ecart dépassé
  { // potard modifié avec hysteresis envoi du cc
    mappot = valp1/8; // 0/127
    MIDI.sendControlChange (1, mappot, carte) ;  // envoi CC1 sur canal midi carte avec valeur valp1
    oldvalp1 = valp1; // sauvegarde valeur actuelle dans valeur ancienne
  }

Hello artouste ! merci pour ce bout de code je vais chercher le début en espérant que ca marche !