bonjour a tous, levend c'est normal que tu ne trouvais pas, j'avais oublier un bout de code mdr, voici le nouveau code, je doit avouer que c'est un copier/coller ( http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertMoteursPAPGotoClavierLcd)j'ai essayer de comprendre quand meme, a prioris pas de probleme pour les chiffre. par contre la ou je me pose des question c'est:
- dan ma loop j'ai mis ce code:
if(touche=='#') lcd.clear();else lcd.print(touche);
et je me demande si ca efface bien ce qui a ete tapé et que l'arduino n'en tiendra plus compte ou si c'est simplement effecer de l'ecran mais toujour dand l'arduino.
- deuxieme chose je voudrai utiliser la touche A pour valider la mesure et donc envoyer la consigne au moteur,
while ((touche=='A') && (digitalRead(FDC1)==LOW) && (digitalRead(FDC2)==LOW) )
{
if (valeur < 300);
else (lcd.clear());
lcd.setCursor(0,5);
lcd.print ("ERREUR");
lcd.setCursor(1,2);
lcd.print ("long mini 300");
}
{
if (valeur > 6000);
else (lcd.clear());
lcd.setCursor(0,5);
lcd.print ("ERREUR");
lcd.setCursor(1,2);
lcd.print ("long max 6000");
}
}
{
stepper.step((EEPROM.get(1,valeur)/0.628) - NBpas);
EEPROM.put (1,valeur);
}
mais dois je faire autre chose car dans le code de gestion d'appuis des touche du clavier il y a ca:
//---- calcul valeur numériques autres touches
if (touche_long=='A') touche_long=10;
if (touche_long=='B') touche_long=11;
if (touche_long=='C') touche_long=12;
if (touche_long=='D') touche_long=13;
a mon avis a la place de 10 je doit mettre autre chose mais quoi?
je vous met le code entier si vous pouvez jeter un oeuil svp. bonne journee
#include <EEPROM.h>
#include <Stepper.h>
#define NombrePas 200
#define Pulse 12
#define Dir 13
Stepper stepper(NombrePas, Pulse, Dir);
#include <Keypad.h>
const byte LIGNES = 4;
const byte COLONNES = 4;
#define C1 32
#define C2 40
#define C3 42
#define C4 44
#define L1 46
#define L2 48
#define L3 50
#define L4 52
char touches [LIGNES][COLONNES] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte BrochesLignes[LIGNES] = {L1, L2, L3, L4};
byte BrochesColonnes[COLONNES] = {C1, C2, C3, C4};
char touche;
long valeur;
#define NBpas valeur/0.628
Keypad clavier = Keypad (makeKeymap(touches), BrochesLignes, BrochesColonnes, LIGNES, COLONNES );
#include <LiquidCrystal.h>
#define RS 53
#define E 51
#define D4 49
#define D5 47
#define D6 45
#define D7 47
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
#define PDR 14 // poussoir deplacement recul
#define PDA 15 // poussoir deplacement avance
#define PD 16 // poussoir desserrage
#define PS 17 // poussoir serrage
#define PR2 18 // poussoir scie 2 recul
#define PAV2 19 // poussoir scie 2 avance
#define PM2 20 // poussoir scie 2 montée
#define PDE2 21 // poussoir scie 2 descente
#define PR1 23 // poussoir scie 1 recul
#define PAV1 25 // poussoir scie 1 avance
#define PM1 27 // poussoir scie 1 montée
#define PDE1 29 // poussoir scie 1 descente
#define BM 31 // bouton manuel
#define BA 33 // bouton auto
#define FDC1 39 // capteur fin de course 1
#define FDC2 41 // capteur fin de course 2
#define P 37 // pedale
#define VD1 2 // verin scie 1 dessente
#define VM1 3 // verin scie 1 montée
#define VA1 4 // verin scie 1 avance
#define VR1 5 // verin scie 1 recul
#define VD2 6 // verin scie 2 descente
#define VM2 7 // verin scie 2 montée
#define VA2 8 // verin scie 2 avance
#define VR2 9 // verin scie 2 recul
#define VS 10 // verin serrage
#define VD 11 // verin desserage
void setup (){
lcd.begin(16,2);
delay(10);
lcd.setCursor(0,0);
lcd.print("bienvenue");
delay (5000);
lcd.clear();
delay(10);
stepper.setSpeed(477);
pinMode(PDR,INPUT); // poussoir deplacement recul
pinMode(PDA,INPUT); // poussoir deplacement avance
pinMode(PD,INPUT); // poussoir desserrage
pinMode(PS,INPUT); // poussoir serrage
pinMode(PR2,INPUT); // poussoir scie 2 recul
pinMode(PAV2,INPUT); // poussoir scie 2 avance
pinMode(PM2,INPUT); // poussoir scie 2 montée
pinMode(PDE2,INPUT); // poussoir scie 2 descente
pinMode(PR1,INPUT); // poussoir scie 1 recul
pinMode(PAV1,INPUT); // poussoir scie 1 avance
pinMode(PM1,INPUT); // poussoir scie 1 montée
pinMode(PDE1,INPUT); // poussoir scie 1 descente
pinMode(BM,INPUT); // bouton manuel
pinMode(BA,INPUT); // bouton auto
pinMode(FDC1,INPUT); // capteur fin de course 1
pinMode(FDC2,INPUT); // capteur fin de course 2
pinMode(P,INPUT); // pedale
pinMode(VD1,OUTPUT); // verin scie 1 dessente
pinMode(VM1,OUTPUT); // verin scie 1 montée
pinMode(VA1,OUTPUT); // verin scie 1 avance
pinMode(VR1,OUTPUT); // verin scie 1 recul
pinMode(VD2,OUTPUT); // verin scie 2 descente
pinMode(VM2,OUTPUT); // verin scie 2 montée
pinMode(VA2,OUTPUT); // verin scie 2 avance
pinMode(VR2,OUTPUT); // verin scie 2 recul
pinMode(VS,OUTPUT); // verin serrage
pinMode(VD,OUTPUT); // verin desserage
}
void loop(){
valeur=SAISIE_LONG();
touche = clavier.getKey();
if (touche !=NO_KEY)
if(touche=='#') lcd.clear();else lcd.print(touche);
lcd.setCursor(0,0);
lcd.print("LONGUEUR MM");
lcd.setCursor (0,1);
lcd.print(valeur);
{
while ((touche=='A') && (digitalRead(FDC1)==LOW) && (digitalRead(FDC2)==LOW) )
{
if (valeur < 300);
else (lcd.clear());
lcd.setCursor(0,5);
lcd.print ("ERREUR");
lcd.setCursor(1,2);
lcd.print ("long mini 300");
}
{
if (valeur > 6000);
else (lcd.clear());
lcd.setCursor(0,5);
lcd.print ("ERREUR");
lcd.setCursor(1,2);
lcd.print ("long max 6000");
}
}
{
stepper.step((EEPROM.get(1,valeur)/0.628) - NBpas);
EEPROM.put (1,valeur);
}
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("decoupe en cour");
lcd.setCursor (0,1);
lcd.print(valeur);
}
{
{
while (digitalRead(BA)==HIGH && digitalRead(BM)==LOW) // interupteur rotatif sur position auto
if (digitalRead(P)==HIGH) //appuis sur interupteur poussoir pedale
digitalWrite(VS,HIGH); // serrage
delay(1000);
}
{
digitalWrite(VA1,HIGH); // avance scie 1
digitalWrite(VA2,HIGH); // avance scie 2
delay (1000);
}
{
digitalWrite(VD1,HIGH); // descente scie 1
digitalWrite(VD2,HIGH); // descente scie 2
delay (1000);
}
{
digitalWrite(VA1,LOW); // arret avance scie 1
digitalWrite(VA2,LOW); // arret avance scie 2
digitalWrite(VR1,HIGH); // recul scie 1
digitalWrite(VR2,HIGH); // recul scie 2
delay (1000);
}
{
digitalWrite(VD1,LOW); // arret descente scie 1
digitalWrite(VD2,LOW); // arret descente scie 2
digitalWrite(VM1,HIGH); // montée scie 1
digitalWrite(VM2,HIGH); // montée scie 2
delay (1000);
}
{
digitalWrite(VR1,LOW); // arret recul scie 1
digitalWrite(VR2,LOW); // arret recul scie 2
digitalWrite(VM1,LOW); // arret montée scie 1
digitalWrite(VM2,LOW); // arret montée scie 2
delay (1000);
}
{
digitalWrite(VS,LOW); // arret serrage
digitalWrite(VD,HIGH); // desserrage
delay (1000);
}
{
digitalWrite(VD,LOW); // arret desserrage
delay (1000);
}
}
{
{
while (digitalRead(BM)==HIGH && digitalRead(BA)==LOW){ //interupteur rotatif position manuel
}
{
{
if (digitalRead(PAV1)==HIGH) // poussoir avance scie 1
digitalWrite(VA1,HIGH); // verin avance scie 1
else
digitalWrite(VA1,LOW); // verin avance scie 1
}
{
if (digitalRead(PAV2)==HIGH) // poussoir avance scie 2
digitalWrite(VA2,HIGH); // verin avance scie 2
else
digitalWrite(VA2,LOW); // verin avance scie 2
}
{
if (digitalRead(PR1)==HIGH) // poussoir recul scie 1
digitalWrite(VR1,HIGH); // verin recul scie 1
else
digitalWrite(VR1,LOW); // verin recul scie 1
}
{
if (digitalRead(PR2)==HIGH) // poussoir recul scie 2
digitalWrite(VR2,HIGH); // verin recul scie 2
else
digitalWrite(VR2,LOW); // verin recul scie 2
}
{
if (digitalRead(PDE1)==HIGH) // poussoir descente scie 1
digitalWrite(VD1,HIGH); // verin descente scie 1
else
digitalWrite(VD1,LOW); // verin descente scie 1
}
{
if (digitalRead(PDE2)==HIGH) // poussoir descente scie 2
digitalWrite(VD2,HIGH); // verin descente scie 1
else
digitalWrite(VD2,LOW); // verin descente scie 1
}
{
if (digitalRead(PM1)==HIGH) // poussoir montée scie 1
digitalWrite(VM1,HIGH); // verin montée scie 1
else
digitalWrite(VM1,LOW); // verin montée scie 1
}
{
if (digitalRead(PM2)==HIGH) // poussoir monté scie 2
digitalWrite(VM2,HIGH); // verin monté scie 2
else
digitalWrite(VM2,LOW); // verin monté scie 2
}
{
if (digitalRead(PS)==HIGH){ // bouton serrage
digitalWrite(VS,HIGH); // verin de serrage
digitalWrite(VD,LOW); // verin desserrage
}
}
{
if (digitalRead(PD)==HIGH) // bouton de desserage
digitalWrite(VD,HIGH); // verin de desserage
digitalWrite(VS,LOW); // verin serrage
}
}
}
{
if ((digitalRead(BM)==HIGH && digitalRead(BA)==HIGH)or(digitalRead(BM)==LOW && digitalRead(BA)==LOW))
lcd.setCursor (2,0);
lcd.print("Defaut bouton");
lcd.setCursor (3,1);
lcd.print("Manu/Auto");
}
}
}
//*************** Autres Fonctions du programme *************
long SAISIE_LONG (){ // fonction qui renvoie une valeur long signé (32bits)
//---- variables locales utilisées dans la fonction
long saisie_long[11]={0,0,0,0,0,0,0,0,0,0,0}; // crée un tableau de variables pour saisir valeur - long maxi = 10 chiffres + signe
char compt_touche; // variable de comptage du nombre de touches saisies
long nombre_saisi; // variable de calcul du nombre saisi
//float valeurf; // variable de caclul de la valeur convertie
char touche_long; // variable locale pour valeur touche appuyée de 0 à 15
//---- initialisation des variables utilisées ----
compt_touche=0; // aucune touche saisie au démarrage
nombre_saisi=0; // initialise la variable
//-------- initialisation curseur --------
//// mode clignotant
//------ gestion appui touche sur clavier
while (compt_touche<11) { // tant que pas appuis maxi = 11 touches pour long + signe (valeur maxi=+2 147 483 647)
touche_long= clavier.getKey(); // lecture de la touche appuyée
if (touche_long!= NO_KEY){ // si une touche a été frappée -- gestion de la touche appuyée
lcd.print(touche_long); // debug
if (compt_touche==0) { // au premier passage
if (touche_long=='*') { // si appui signe -
saisie_long[10]=-1; // mémorise -1 dans le 11ème caractère
continue; // poursuit while comme si pas de premier passage
}
else {
if (saisie_long[10]==0)saisie_long[10]=1; // mémorise le signe + dans le 11ème caractère si pas déjà à -1
}
} // fin if compt_touche==0
if (touche_long=='#') break; // sort du while si appui sur #
//---- calcul valeur numérique touches 0 à 9 (3ères lignes x 3ères colonnes)
//--- à partir lignes colonnes ---
for (byte i=0;i<3;i++) {
for (byte j=0; j<3;j++){
if (touche_long==touches[i][j]) touche_long=(j+1)+(i*3);//calcul de la valeur numérique
}
}
//---- à patir valeur ascii ---
// touche 0
if (touche_long=='0') touche_long=0;
//---- calcul valeur numériques autres touches
if (touche_long=='A') touche_long=10;
if (touche_long=='B') touche_long=11;
if (touche_long=='C') touche_long=12;
if (touche_long=='D') touche_long=13;
saisie_long[compt_touche]=touche_long; //enregistre le caractère dans tableau code_saisi
compt_touche=compt_touche+1; // on incrémente la variable compt qui mémorise le nombre de caractères saisis
//delay ()
} //---- fin gestion appui clavier
}// fin du While = fin de la lecture du clavier
//--------- calcul valeur saisie en fonction du nombre de chiffres saisis et x signe (saisie_long[10]) ---------
if (compt_touche==0)nombre_saisi=0; // si aucun chiffre saisi
if (compt_touche==1)nombre_saisi=(saisie_long[0]); // si 1 seul chiffre saisi
if (compt_touche==2)nombre_saisi=(saisie_long[0]*10)+(saisie_long[1]*1); // si 2 chiffres saisi
if (compt_touche==3)nombre_saisi=(saisie_long[0]*100)+(saisie_long[1]*10)+(saisie_long[2]*1); // si 3 chiffres saisi
if (compt_touche==4)nombre_saisi=(saisie_long[0]*1000)+(saisie_long[1]*100)+(saisie_long[2]*10)+(saisie_long[3]*1); // si 4 chiffres saisi
if (compt_touche==5)nombre_saisi=(saisie_long[0]*10000)+(saisie_long[1]*1000)+(saisie_long[2]*100)+(saisie_long[3]*10)+(saisie_long[4]*1); // si 5 chiffres saisi
if (compt_touche==6)nombre_saisi=(saisie_long[0]*100000)+(saisie_long[1]*10000)+(saisie_long[2]*1000)+(saisie_long[3]*100)+(saisie_long[4]*10)+(saisie_long[5]*1); // si 6 chiffres saisi
if (compt_touche==7)nombre_saisi=(saisie_long[0]*1000000)+(saisie_long[1]*100000)+(saisie_long[2]*10000)+(saisie_long[3]*1000)+(saisie_long[4]*100)+(saisie_long[4]*10)+(saisie_long[5]*1); // si 6 chiffres saisi
if (compt_touche==8)nombre_saisi=(saisie_long[0]*10000000)+(saisie_long[1]*1000000)+(saisie_long[2]*100000)+(saisie_long[3]*10000)+(saisie_long[4]*1000)+(saisie_long[5]*100)+(saisie_long[6]*10)+(saisie_long[7]*1); // si 7 chiffres saisi
if (compt_touche==9)nombre_saisi=(saisie_long[0]*100000000)+(saisie_long[1]*10000000)+(saisie_long[2]*1000000)+(saisie_long[3]*100000)+(saisie_long[4]*10000)+(saisie_long[5]*1000)+(saisie_long[6]*100)+(saisie_long[7]*10)+(saisie_long[8]*1); // si 8 chiffres saisi
if (compt_touche==10)nombre_saisi=(saisie_long[0]*1000000000)+(saisie_long[1]*100000000)+(saisie_long[2]*10000000)+(saisie_long[3]*1000000)+(saisie_long[4]*100000)+(saisie_long[5]*10000)+(saisie_long[6]*1000)+(saisie_long[7]*100)+(saisie_long[8]*10)+(saisie_long[9]*1); // si 9 chiffres saisi
//Serial.println(int(saisie_long[10])); // debug - affiche signe
nombre_saisi=nombre_saisi*long(saisie_long[10]); // prise en compte du signe
//------ à réaliser en sortie de lecture du clavier ----
compt_touche=0; // réinitialise le nombre de touche saisies
//-------- initialisation curseur --------
//// désactive mode clignotant
//----- renvoi de la valeur saisie ----
return (nombre_saisi); // renvoie la valeur - sortie de la fonction
}
// --- Fin programme ---