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.