Merci pour les réponses
Comment as tu défini valeur ?
Long valeur;
D'ou vient ce prog ?
un exemple fourni par la librairie
Ledcontrol pour l'utilisation de 8 digits 7 segments avec un max 7219
Les valeurs -999999 et +999999 n'ont pas de sens,
C'est la limite fixé pour les règles 999,999mm.
Là tu n'as pas de logique MVC (Modèle, Vue, Contrôle),
Houla, tu vas fort, le programme me paraissait simple.
Montre l'entier du programme,
#include <LedControl.h>
/**********************************************************
7 segments 8 digits mas 7219
Codeur rotatif et Arduino.
http://electroniqueamateur.blogspot.com/2014/08/codeur-rotatif-et-arduino.html
*********************************************************/
#include "LedControl.h"
// MAX72XX connections
int DIN = 12;
int CS = 11;
int CLK = 10;
int NO = 1; // number of MAX72XX devices connected
LedControl lc=LedControl(DIN,CLK,CS,NO);
//codeur
#define PinA 2 // 1ere sortie du codeur
#define PinB 3 // 2e sortie du codeur
volatile boolean mouvement;
volatile boolean up;
long valeur;
// routine déclanchée quand le signal A passe de haut a bas
void routineInterruption () {
if (digitalRead(PinA))
up = digitalRead(PinB);
else
up = !digitalRead(PinB);
mouvement = true;
}
void setup () {
pinMode(PinA,INPUT);
pinMode(PinB,INPUT);
// activation des pullups internes de l'Arduino, si on n'utilise pas de pullups externes.
// digitalWrite (PinA, HIGH);
// digitalWrite (PinB, HIGH);
lc.shutdown(0,false); // The MAX72XX is in power-saving mode on startup
lc.setIntensity(0,4); // set the brightness origine 8
attachInterrupt (0,routineInterruption,FALLING); // interruption sur front descendant
}
void loop () {
if (mouvement) { // on a détecté une rotation du bouton
if (up)
valeur++;
else
valeur--;
mouvement= false;
display ();
}
}
void display() {
// the first parameter is the address of the MAX72XX chip in the daisy chain
int micron = 0;
int centieme = 0;
int dixieme = 0;
int mm = 0;
int cm = 0;
int dm = 0;
boolean negative;
if(valeur < -999999 || valeur > 999999)
return;
if (valeur < 0) {
negative=true;
valeur = valeur * -1;
//print character '-' in the leftmost column
lc.setChar(0,6,'-',false);
}
else {
//print a blank in the sign column
lc.setChar(0,6,' ',false);
}
micron = (valeur % 10);
lc.setDigit(0,0,micron,false);
centieme = (valeur / 10) % 10;
lc.setDigit(0,1,centieme,false);
dixieme = (valeur / 100) % 10;
lc.setDigit(0,2,dixieme,false);
mm = (valeur / 1000) % 10;
lc.setDigit(0,3,mm,true);
cm = (valeur / 10000) % 10;
lc.setDigit(0,4,cm,false);
dm = valeur / 100000;
lc.setDigit(0,5,dm,false);
lc.setDigit(0,7,0,false);
delayMicroseconds(100);
}
ça fait de la longueur sur la page,
Cdlt