Aller au contenu


Photo
- - - - -

aide programation CNC


  • Veuillez vous connecter pour répondre
124 réponses à ce sujet

#61 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 09 octobre 2016 - 07:37

2 pin parce qu'il y a un + et un - sinon sur le branchement normal les 2 - sont sur le gnd et les 2 + sur un pin. Le probleme est que je n'arrive pas à configure les switch. Je vais essayer de le faire tourner dans un seul sens. Bonne soiree

#62 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 09 octobre 2016 - 07:49

En principe tu branches PU+ à un pin de l'arduino, par exemple 31, et DR+ à un autre pin de l'adruino, par exemple 29. PU- et DR- sont reliés à la masse (GND) de l'arduino.

Déjà, avec un branchement correct ...

 

Edit : oups, je n'avais pas tout lu :unsure:

Je regarde pour la configuration des switchs, le 6 doit être sur OFF


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#63 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 09 octobre 2016 - 08:09

Oui concernant le branchement j'ai essayer les 2 manières, celle que tu décrit est celle prevu dans mon cablage, je le rebrancherai comme ca (j'avais changer pour les essais) ensuite pour les switch il y a un descriptif dans le lien que j'ai mis mais j'y comprend rien. Ensuite je ne suis pas sur non plus du branchement entre le moteur et le driver. J'ai 4 fils donc 2 par bobines peut tu me dire comment je peut faire pour savoir quelles sont les paires de fils qui vont ensemble avec un testeur je pense. (les branchement actuel sont fait par rapport à une vidéo que j'ai vu).bonne soiree

#64 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 09 octobre 2016 - 08:11

Cet après-midi j'ai vu une autre solution de faire tourner le moteur et quand je regarde ton driver, je me demande si ce ne serait pas mieux.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#65 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 09 octobre 2016 - 08:14

Moi perso je suis ouvert à tous lol, je souhaite juste que ça fonctionne

#66 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 09 octobre 2016 - 08:17

Pour les branchements de ton moteur, j'ai un doute car pour la bobine B, les deux fils seraient inversé : https://fr.aliexpres...oryId=100007155

 

Je vais essayé de t'écrire un petit programme pour tester ça (en fonction de ce que j'ai trouvé cet après-midi.

Je vais aussi te donner la configuration des switchs telle que je pense être correct.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#67 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 09 octobre 2016 - 08:21

Merci beaucoup et en effet à premiere vue j'ai inversé une bobine je fais ça demain.

#68 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 09 octobre 2016 - 08:53

Essaie ce code :

int smDirectionPin = 29; //Direction pin

int smStepPin = 31; //Stepper pin


void setup(){
  /*Sets all pin to output; the microcontroller will send them(the pins) bits, it will not expect to receive any bits from thiese pins.*/
  pinMode(smDirectionPin, OUTPUT);
  pinMode(smStepPin, OUTPUT);


  Serial.begin(9600);
}


void loop(){
  digitalWrite(smDirectionPin, HIGH); //Writes the direction to the EasyDriver DIR pin. (HIGH is clockwise).
  /*Slowly turns the motor 1600 steps*/
  for (int i = 0; i < 1600; i++){
    digitalWrite(smStepPin, HIGH);
    delayMicroseconds(700);
    digitalWrite(smStepPin, LOW);
    delayMicroseconds(700);
  }


  delay(1000); //Pauses for a second (the motor does not need to pause between switching direction, so you can safely remove this)


  digitalWrite(smDirectionPin, LOW); //Writes the direction to the EasyDriver DIR pin. (LOW is counter clockwise).
  /*Turns the motor fast 1600 steps*/
  for (int i = 0; i < 1600; i++){
    digitalWrite(smStepPin, HIGH);
    delayMicroseconds(70);
    digitalWrite(smStepPin, LOW);
    delayMicroseconds(70);
  }


  delay(1000);
}

C'est le code que j'ai trouvé (ici), j'ai remplacé les pin d'origine par ceux indiqué plus haut -> Pulse : 31 et Dir :29.

 

Pour les switch, je mettrais (sans certitude) :

D1 : ON

D2 : ON

D3 : ON

D4 : ON

D5 : OFF

D6 : OFF


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#69 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 09 octobre 2016 - 08:59

Ok merci j'essai ca des demain, sincèrement je ne comprend pas le code, ce code est juste pour les essais c'est bien ca? Car je ne vois pas de commande par rapport au nombre de pas.
Édit: a quoi correspond serial.begin? Bonne soiree

#70 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 09 octobre 2016 - 09:10

C'est ça, c'est juste pour un essai et concernant le serial.begin, je me suis posé la question mais je n'ai pas trouvé de réponse, donc essaies avec et si ça fonctionne essaies sans et tu me diras le résultat.

Ici, le nombre de pas est 1600.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#71 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 10 octobre 2016 - 08:38

bonjour, pour commencer merci a toi levend car ca a l'air de fonctionner mais pas avec le code que tu m'a donner.

voici le resultat du code que tu m'as donner il tourne bien dans un sens mais quand il doit changer de sens le moteur emet un bip.

une video vaut mieux que des explication (img_1599.mov)

 

et quand je rentre le code suivant ca fonctionne bien par contre une chose que je ne comprend pas c'est que je doit mettre +800 ou -800 pour que le moteur effectue un tour complet alors que dans le descriptif (avant setup) je met bien que le moteur fait 200pas, ce n'est pas vraiement genant en sois (enfin je pense) mais je me demande pourquoi (video img_1600.mov)

#include <Stepper.h>
#define NombrePas 200
#define Pulse 12
#define Dir 13
Stepper stepper(NombrePas, Pulse, Dir);
void setup() {
  stepper.setSpeed(400); // put your setup code here, to run once:

}

void loop() {
 stepper.step(+800); // put your main code here, to run repeatedly:
delay(1000);

 stepper.step(-800); // put your main code here, to run repeatedly:
delay(1000);
}

bonne journee.

 

edit: vous remarquerez que j'ai remis le cablage prevu a l'origine.

Fichier(s) joint(s)



#72 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 10 octobre 2016 - 11:27

Tu aurais mis 400, je n'aurais pas été surpris, mais 800 je ne vois pas pourquoi.

As-tu configurer les switchs comme je l'avais indiqué ?

 

Ce serait bien de comprendre pourquoi avant de calculer le nombre de pas nécessaires.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#73 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 10 octobre 2016 - 11:47

oui switch 1 2 3 4 sur on et 5 et 6 sur off 



#74 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 10 octobre 2016 - 04:44

bonjour, bon alors voici mon code pour le deplacement du moteur, ca fonctionne je regarderai demain pour faire une boucle comme tu me le suggere pour faire avancer le moteur pas par pas pour la prise ne compte des fins de course, tu verra que j'ai changer la valeur de conversion d'un pas en mm (je me suis basé sur le fait qu'un tour faisait 800pas) ce qui n'est pas plus mal car plus precis non? ensuite j'ai 2 probleme je n'arrive pas a enregistrer dans l'eeprom, ca ne veut pas prendre en compte, comme c'est la ca fonctionne tres bien il prend en compte la position du moteur mais si je coupe l'alimentation de l'arduino, il repart de 0 je me demande si c'est vraiement un probleme etant donné que le moteur n'a pas de frein donc quand il est hors tension il est libre donc sujet a etre dereglé par contre quand il est sous tension meme a l'arret je n'arrive pas a le tourner a la main ce qui est une bonne chose. si je laisse le code comme ca il me suffirai de ramener le chario a 0 a la main avant de mettre sous tension. ensuite autre probleme je n'arrive pas a faire prendre en compte:

{
  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");
  }

si je le met dans le loop ca plante et si je met dans autre fonction du programe ca ne prend pas en compte.

voici le programe

#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD 

#include <Keypad.h> // inclusion de la librairie pour clavier matriciel 

#include <Stepper.h> // librairie pour moteurs pas à pas

int position_actuelle=0;


// --- Déclaration des constantes ---

//--- Constantes utilisées avec le clavier 4x4

const byte LIGNES = 4; // 4 lignes
const byte COLONNES = 4; //4 colonnes

const int NombrePas=200; // Nombre de pas du moteur 

// --- constantes des broches ---

const int C4=44; //declaration constante de broche 
const int C3=42; //declaration constante de broche 
const int C2=40; //declaration constante de broche 
const int C1=32; //declaration constante de broche 

const int RS=43; //declaration constante de broche 
const int E=51; //declaration constante de broche 

const int D4=45; //declaration constante de broche 
const int D5=47; //declaration constante de broche 
const int D6=49; //declaration constante de broche 
const int D7=53; //declaration constante de broche 

 

const int L4=52; //declaration constante de broche 
const int L3=50; //declaration constante de broche 
const int L2=48; //declaration constante de broche 
const int L1=46; //declaration constante de broche 

// --- Déclaration des variables globales ---

//--- Définition des touches 

char touches[LIGNES][COLONNES] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

// tableaux de lignes et colonnes
byte BrochesLignes[LIGNES] = {L1, L2, L3, L4}; //connexions utilisées pour les broches de lignes du clavier
byte BrochesColonnes[COLONNES] = {C1, C2, C3, C4}; //connexions utilisées pour les broches de colonnes du clavier

char touche; // variable de stockage valeur touche appuyée

long valeur; 

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---

LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// Création d'un objet LiquidCrystal = initialisation LCD en mode 4 bits 


// création d'un objet keypad = initialisation clavier 
Keypad clavier = Keypad( makeKeymap(touches), BrochesLignes, BrochesColonnes, LIGNES, COLONNES );
// les broches de lignes sont automatiquement configurées en ENTREE avec pullup interne activé 
// les broches de colonnes sont automatiquement configurées en SORTIE

Stepper stepper(NombrePas, 12,13);  // crée un objet Stepper pour contrôler le moteur pas à pas
// Pas_1 et Pas_3 commandent la 1ère phase, Pas_2 et Pas_4 la 2ème phase 


//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// --- ici instructions à exécuter au démarrage --- 

lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes 

delay(10); // pause rapide pour laisser temps initialisation

// Test du LCD

lcd.print("BIENVENUE") ; // affiche la chaîne texte - message de test
delay(5000); // pause de 2 secondes

lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10); // pour laisser temps effacer écran

// initialise la vitesse de rotation du moteur pas à pas en tour par minute
stepper.setSpeed(800);  


// les broches de lignes et d'entrée sont configurées automatiquement lors de l'initialisation du clavier 

// ------- Broches en sortie -------  


// ------- Broches en entrée -------  


// ------- Activation du rappel au + interne des broches en entrée si nécessaire -------  


} // fin de la fonction setup()
// ********************************************************************************

//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop(){ // debut de la fonction loop()

// --- ici instructions à exécuter par le programme principal --- 

lcd.setCursor(0,0);
lcd.print("LONGUEUR MM");
lcd.setCursor (0,1);

valeur=SAISIE_LONG();
lcd.setCursor (0,1);
lcd.print(valeur);

 


stepper.step((valeur-position_actuelle)/0.157075); // fait tourner le moteur du nombre pas indiqués - sens + et -
position_actuelle=valeur;


lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(1000); // pour laisser temps effacer écran





// touche = clavier.getKey(); // lecture de la touche appuyée
//if (touche != NO_KEY){ // si une touche a été frappée -- gestion de la touche appuyée 

//} // fin gestion de la touche appuyée 

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

//*************** 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=='A') break; // sort du while si appui sur A
           

           //---- 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;

          

           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 ---

bonne soiree 



#75 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 10 octobre 2016 - 10:13

Ta saisie au clavier est trop longue, tu n'as que 4 chiffres à entrer, pas besoin d'aller jusqu'à 9, je sais, c'est du copier coller pour tester.

 

Autre remarque, comme je te l'ai dis il y a quelques jours il faut pouvoir annuler la saisie, sur le code que je t'ai mis page précédente, la fonction de saisie retournait la valeur saisie ou 'False' si la saisie était annulée.

Aussi, il est inutile de choisir le type 'long' pour la valeur, le type 'unsigned int' est largement suffisant vu que tu va jusqu'à 6000.

 

Maintenant que tu as fait le plus gros boulot pour le moteur pas à pas, je vais essayer de la remettre dans le code que j'ai mis ce weekend.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#76 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 10 octobre 2016 - 10:18

Ok merci je revois a ca demain pour réduire le code et je regarderai pour la saisie false, j'ai essayer tous a l'heure pour annuler la saisie avec # il me semble mais ca ne fonctionnais pas mais je mettais lcd clear je verrai pour false demain. Merci pour ton aide bonne soiree

#77 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 11 octobre 2016 - 12:15

Le code pour le positionnement de la scie mobile :

{                                               // positionnement de la scie mobile
         EEPROM.get(1,PositionActuelle);                // lire position_actuelle dans l'EEPROM
         if (valeur>PositionActuelle)                   // si valeur > position_actuelle
           {
            Deplacement = valeur - PositionActuelle;    // deplacement = valeur - position_actuelle
            NbPas = Déplacement / PAS;                  // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0.157
            do                                          // Tourner de NbPas dans le sens horaire
              {
               stepper.step(1);                     
               i++;
              }while( i<NbPas or FDC1 == LOW);          //FDC1 = fin de course côté 6m
           }
           
         if (valeur>PositionActuelle)                   // si valeur < position_actuelle
           {
            Deplacement = PositionActuelle - valeur;    // deplacement =  position_actuelle – valeur
            NbPas = Déplacement / PAS                   // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0,157
            do                                          // Tourner de NbPas dans le sens antihoraire
              {
               stepper.step(-1);
               i++;
              }while( i<NbPas or FDC2 == LOW);          //FDC1 = fin de course côté 30cm
           }
         EEPROM.put (1,valeur);                         // Ecrire valeur dans l'EEPROM

        }

J'ai ajouté une ligne dans Setup, sinon il n'y aura aucune valeur à lire quand on demande à la position actuelle :

EEPROM.put (1,600); // valeur de la position initiale pour test

En ce qui concerne la lecture et l'écriture dans l'EEPROM, j'ai pris ce que tu avais fait.

 

Ah oui, j'oubliais si tu regardes la fonction que j'ai définit pour les touches, tu verras que je prévois une initialisation, ce qui permettra de redonner la position actuelle de la scie au programme au cas où tu l'aurais déréglé. C'est cette fonction qui mettra la valeur de la position actuelle dans l'EEPROM.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#78 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 11 octobre 2016 - 11:44

bonjour, bon alors j'ai un probleme concernant le bouton tournant en fait si je laisse le code prevu c'est a dire:

 while (digitalRead(BA)==LOW && digitalRead(BM)==LOW)

ca ne fonctionne pas pour que ca fonctionne je doit relier BA et BM a une masse ou au gnd comme si il restais du courrant dans le bouton j'ai donc essayer de changer le code, le voici:

while (digitalRead(BA)!=HIGH && digitalRead(BM)!=HIGH) // interrupteur rotatif sur position Réglage

et la ca fonctionne, j'avais deja le probleme avec les boutons poussoir c'est pourquoi j'ai dut brancher les contact no sur le 5v et le nc sur je gnd afin qu'il y ai toujours un signal qui passe que ce soit gnd ou 5v. je verrai peut etre pour changer le code de la meme maniere pour les poussoirs. ca ne pose pas de probleme?  je ne comprend pas vraiement c'est comme si il y avais une position intermediaire. bonne journee



#79 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 967 messages
  • Gender:Male
  • Location:Anglet

Posté 11 octobre 2016 - 12:14

as tu mis une résistance de pull up ou de pull down au niveau de la broche de ta arduino qui lit la valeur du bouton ? 

( J'ai une page du tome 2 pour les débutant en arduino qui va parler de cela. en attendant ne pas hésiter à lire et à faire des commentaires sur le Tome 1 ) 

 

En attendant je te laisse regarder comment  mettre ta résistance ( 10Kohm ou plus ) et faire un essais ;) 

 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#80 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 148 messages

Posté 11 octobre 2016 - 12:20

bonjour non je n'ai pas mis de resistance, je regarge a ca. merci. bonne journee






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users