Projet Control module

trimarco232:
Bonjour,
essaye avec pinMode (10, OUTPUT); au lieu de pinMode (10, HIGH);
je ne sais pas si cela résout le problème, mais en tous cas c'est d'avantage correct

Hi,
Je vais tester ça, merci.

edit:
J'ai essayé même résultat 0V en sortie de pin(10)

Test:

void setup() {
  pinMode (10, HIGH); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
  Serial2.begin(9600);
}

--------------------------------------

void setup() {
  digitalWrite (10, HIGH); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
  Serial2.begin(9600);
}
--------------------------------------

void setup() {
  pinMode (10, OUTPUT); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
  Serial2.begin(9600);
}

--------------------------------------

void setup() {
  digitalWrite (10, OUTPUT); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
  Serial2.begin(9600);
}

--------------------------------------

trimarco232:
il faudrait justifier ton affichage à droite, donc mettre des espaces selon le nombre de chiffres
cela doit certainement se trouver dans la biblipthèque

J'ai trouvé ça "myGLCD.printNumI(valeur , 130, 185, 3, '0');" ça à résolue le décalage et ça retourne à zéro si pas de valeur.
J'ai éssayé les espaces, car je souhaite que ça reste sur fond noir si pas de valeur mais ça me dessine un truc bizarre surement à cause du printNimI.

édit:
J'ai rajouté un "if (valeur > 9999) {}" qui améliore pas mal le truc mais ne l'évite pas complètement.

Une partie du programme :

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

void loop () {

  while (Serial.available() > 0) {
    int inByte = Serial.read(); // lire un premier caractère

// filtrer : il doit etre une lettre majuscule
    if (inByte >= 'A') {
      int valeur = Serial.parseInt();

      // traitement
      switch (inByte) {
        case 'R':
          if (valeur > 0) {
            myGLCD.setFont(SevenSegNumFont);
            myGLCD.setColor(87, 255, 45);
            myGLCD.setBackColor(0, 0, 0);
            myGLCD.printNumI(valeur, 100, 85, 4, '0');
            // controle eventuel de la valeur
            Serial.print("RPM : "); Serial.println(valeur);
            if (valeur > 9999) {}
          }
          break;
      }
} //end loop

void Zero4()
{
  int valeur = 0;
  myGLCD.setFont(SevenSegNumFont);
  myGLCD.setColor(87, 255, 45);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.printNumI(valeur, 100, 85, 4, '0');
}

trimarco232:
il semble que le problème survint quand tu as déplacé le curseur rapidement vers la gauche : peux-tu confirmer que cela fonctionne bien quand le déplacement ne se fait pas trop vite ?

donc oui cela survient seulement avec beaucoup de données, 5/10 données par secondes passe bien sans erreurs, mais je n'ai pas trouvé le moyen de limiter avec la réception de données pour éviter la surcharge.

J'ai même rajouté un flux sur le logiciel VS qui envoie les 3 données simultanément, ça marche bien selon la limite qu'elle peut gérer.

J'ai pas trouvé de limitation que ce soit du coté logiciel que coté arduino.