Aller au contenu


Contenu de nouss08

Il y a 146 élément(s) pour nouss08 (recherche limitée depuis 25-avril 13)



#109638 branchement sirene sur alarme

Posté par nouss08 sur 14 mai 2020 - 07:07 dans Electronique

bonsoir, déjà merci de ta réponse, désolé d'avoir tardé à répondre. oui en effet je les ai relié a la masse mais ca ne fonctionnais pas. je suis allé au magasin auto du coin chercher un relais type claxon, ca a l'air de mieux aller (j'ai juste testé vite fais j'avais que 5 min lol. pour info:

- j'ai retirer tous les ponts

- relié SP et GND de l'alarme a la bobine du relais

- sur "l'interipteur" du relais relié AF et +12V du transfo

- relié -12v de la sirène a - 12v du transfo

- relié +N de la sirène a + 12v du transfo

 

dans ce cas l'alarme sonne 1/4 de seconde quand j'arme l'alarme au lieux d'emettre un "simple bip

alors que quand je relie le +N de la sirène au SP de l'alarme et le -12V au GND de l'alarme elle emmet bien un simple bip mais ne fonctionne pas lors du declanchement de l'alarme et quand je branche la batterie, la meme le bip d'armement ne se fait meme pas. et dans tous les cas, si la baterie n'est pas branchée le flash ne fonctionne pas. c'est vraiement pas simple (en tous cas pour moi). bonne soiree a tous    




#109568 branchement sirene sur alarme

Posté par nouss08 sur 13 mai 2020 - 09:18 dans Electronique

bonjour a tous je vient solicité votre aide, je possede une centrale alarme etiger s4 et viens d'acheter une sirene exterieur Bentel Neka et je rencontre des problemes pour la cablé voici ce que j'ai fait dites moi si j'ai commis des erreurs et en meme temps me guider vers une solution s'il vous plait.

- j'ai relié au negatif les bornes AS, ASG, FT, G, F, A de la sirene

- j'ai relié la borne +N de la sirene au + d'un transfo 12v

- j'ai relie le borne - de la sirene au - de mon transfo

- j'ai retiré le petit cavalier P de la sirene pour inverser la polarité de la borne AF

- j'ai relié la borne AF de la sirene a la borne SP de la centrale 

pour l'alimentation de la sirene j'ai aussi essayé sans utiliser le transfo en connectant les bornes VCC et GND de la centrale aux bornes +N et - de la sirene et l'effet est le meme.

avec ce branchement la sirene sonne non-stop, si je relie AF au gnd elle arrête j'ai donc essayé un pont entre SP et GND la, la sirene ne sonne plus du tout meme en cas de declanchement de l'alarme. j'en deduit 2 chose la borne SP n'est pas reliée au GND au repos et suivant la notice si je comprend bien la borne SP n'est pas assez puissante.

 

alors je pense que la solution serait un relais mais la j'ai besoin de vous (quel relais et comment cabler)

et dans ce cas il y aurai 2 solutions:

 

- lorsque la borne SP de la centrale envois une impulsion au relais le relais se ferme et envois le courant venant soit le la borne VCC de ma centrale ou du +12v de mon transfo vers la borne AF de la sirene mais dans ce cas le relais devrai etre en contact avec le -12V en etant ouvert et le + 12v en etant fermé.

 

- la deuxieme solution serait de retirer tous les pontages, remettre le cavalier P et poser un relais normalement ouvert qui lorsqu'il recoit une impulsion de la Borne SP de la centrale, il se ferme et envois le - de mon transfo a la borne AF de la centrale. solution qui je pense est la plus simple  

 

vous trouverez ci joint les notices pouvez vous m'aider SVP j'espere avoir ete clair dans mes explications. bonne journee a tous

 

   

 

Fichier(s) joint(s)




#78959 aide programation CNC

Posté par nouss08 sur 08 février 2017 - 09:42 dans Programmation

aussi concernant la librairie accelstepper, j'ai effectuer quelques modif a mon code mais je ne suis pas sur d'avoir bien tous compris, je vous met les morceau de code que j'ai modifier, pouvez vous jeter un œil s'il vous plait? je ne l'ai pas encore essayer car la machine se situe maintenant dans mon entrepot a plusieurs km de chez moi et je n'y ai pas internet donc je prefere deja essayer d'avoir le moins d'erreur. merci a tous.

donc deja si j'ai bien compris, comme j'ai fait le code lors du deplacement du moteur, le moteur vas demarer a une vitesse de 50pas/sec et augmenter de 50pas/sec jusqu'à atteindre la vitesse max de 400pas/sec c'est bien ca? je vous met juste les extrais modifier, si il vous faut l'ensemble dite le moi et je le mettrai.

 

partie avant la fonction setup:

#include <AccelStepper.h>
#include <MultiStepper.h>

AccelStepper stepper(1, 12,13);

partie setup:

stepper.setMaxSpeed(400);
stepper.setAcceleration(50);  

partie loop deplacement :

{                             // positionnement de la scie mobile
 

         EEPROM.get(1,position_actuelle);                // lire position_actuelle dans l'EEPROM
         if (valeur>position_actuelle && valeur<valeur_maxi)                  // si valeur > position_actuelle
           {
            Deplacement = valeur - position_actuelle;    // deplacement = valeur - position_actuelle
            NbPas = Deplacement / PAS;                  // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0.149
            do                                          // Tourner de NbPas dans le sens horaire
              {if(digitalRead(FDC2)== LOW)
               stepper.move(1);                     
               i++;
              }while(i<NbPas);          //FDC1 = fin de course côté 6m
           }
           
           
         if (valeur<position_actuelle && valeur>decalage_depart )                   // si valeur < position_actuelle
           {
            Deplacement = position_actuelle - valeur;    // deplacement =  position_actuelle – valeur
            NbPas = Deplacement / PAS;                   // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0,149
            do                                          // Tourner de NbPas dans le sens antihoraire
              {if(digitalRead(FDC1)== LOW)
               stepper.move(-1);
               i++;
              }while( i<NbPas);          //FDC1 = fin de course côté 30cm
           }
           if (valeur>decalage_depart && valeur<valeur_maxi)
         EEPROM.put (1,valeur);                         // Ecrire valeur dans l'EEPROM
          }

partie loop ettalonage:

{
 do                                          // Tourner de NbPas dans le sens antihoraire
              {
                longueur_etalonnage=(3199*PAS)+ decalage_depart; 
               stepper.move(-1);
               i++;
              }while(digitalRead(FDC1)== LOW) ;    //retour a 0 du chariot
              delay(3000);
              stepper.moveTo(3199); // avance du chariot de 1m
              
              EEPROM.put (1,(longueur_etalonnage)); //enregistrement position dans eeprom
              delay(3000);
               lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("etalonnage");
    lcd.setCursor(0,1);
    lcd.print("termine");
    delay(3000);
    lcd.clear();
                
}

merci d'avance. bonne journée




#78958 aide programation CNC

Posté par nouss08 sur 08 février 2017 - 08:26 dans Programmation

bonjour, concernant le branchement: la fin de course est branchée en NF, un fil vas au gnd de l'arduino et l'autre sur un pin de l'arduino. concernant le code le voici:

 EEPROM.get(1,position_actuelle);                // lire position_actuelle dans l'EEPROM
         if (valeur>position_actuelle && valeur<valeur_maxi)                  // si valeur > position_actuelle
           {
            Deplacement = valeur - position_actuelle;    // deplacement = valeur - position_actuelle
            NbPas = Deplacement / PAS;                  // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0.149
            do                                          // Tourner de NbPas dans le sens horaire
              {if(digitalRead(FDC2)== LOW)
               stepper.step(1);                     
               i++;
              }while(i<NbPas);          //FDC1 = fin de course côté 6m
           }

bonne journee




#78936 aide programation CNC

Posté par nouss08 sur 07 février 2017 - 01:28 dans Programmation

Bonjour non il n'y a pas de résistance, oui l'arduino met environ 1s à réagir et non je n'ai pas mesurer la tension



#78934 aide programation CNC

Posté par nouss08 sur 07 février 2017 - 12:57 dans Programmation

Rebonjour a tous, bon alors le probleme des fin de course est réglé, en tous cas pour celui situé au début (50cm) donc l'étalonnage fonctionne bien. Par contre j'ai dût shunter celui situé à 6ml car au départ j'avais passer du fil 0,75 ca ne fonctionnais pas, j'ai donc repasser du fil 0,25 il me semble et le soucis est que l'arduino met environ 1s à arrêter le moteur existe t'il une solution? Bonne journée



#78926 aide programation CNC

Posté par nouss08 sur 07 février 2017 - 09:20 dans Programmation

merci, je vois que la nouvelle video n'est pas passer hier, la voici. bonne journée

Fichier joint  IMG_1694.MOV   7,41 Mo   59 téléchargement(s)




#78920 aide programation CNC

Posté par nouss08 sur 07 février 2017 - 12:23 dans Programmation

Je vais essayer de voir à ca merci. Et ca ralentis aussi plutôt qu'un arrêt brusque. Bonne soirée



#78913 aide programation CNC

Posté par nouss08 sur 06 février 2017 - 10:07 dans Programmation

Bonsoir à tous, voici une nouvelle vidéo en situation, je doit dire que je suis comptent malgré quelques petit probleme récurants, par contre j'aimerai savoir si il est possible d'effectuer un démarrage et arrêt progressifs car je trouve que le moteur de sacré "coups de bélier". Bonne soirée



#78853 aide programation CNC

Posté par nouss08 sur 04 février 2017 - 09:01 dans Programmation

LOL, je m'en suis rendu compte une fois les photos publiées 😜



#78850 aide programation CNC

Posté par nouss08 sur 04 février 2017 - 07:04 dans Programmation

bonjour a tous voici des photos et video de la scie elle est presque terminée.  :yahoo:  :crigon_02:  merci pour votre aide mais ce n'est pas fini, j'ai un petit souci pour le code de l'etalonage, pour rappeler ce que la scie doit faire c'est revenir jusqu'à la fin de course au debut et positionner la scie a 1m (donc avance de 50cm dans mon cas car la fin de course est a 50cm) et le souci est que lorsque je lance l'etalonage, la scie donne un simple accoup vers l'arriere et avance de 50cm, ce n'a pas l'air d'etre un probleme de fin de course car quand je me met en position reglage et que je fait reculer la scie ca fonctionne et la fin de course aussi car quan j'appuis sur la fin de course le chariot s'arrete bien. pouvez vous m'aider s'il vous plait? sinon pour la precision du charios, j'ai une precision de 0.5mm sur 5.3m c'est pas mal je trouve. bonne soiree a tous.

 

voici le bout de code:

if(touche=='*'){ // etalonnage longueur

    {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("etalonnage");
    lcd.setCursor(0,1);
    lcd.print("en cour");
{
 do                                          // Tourner de NbPas dans le sens antihoraire
              {
                longueur_etalonnage=(3185*PAS)+ decalage_depart;
               stepper.step(+1);
               i++;
              }while(digitalRead(FDC1)== HIGH) ;    //retour a 0 du chariot
              delay(3000);
              stepper.step(-3185); // avance du chariot de 1m
              EEPROM.put (1,(longueur_etalonnage)); //enregistrement position dans eeprom
              delay(3000);
               lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("etalonnage");
    lcd.setCursor(0,1);
    lcd.print("termine");
    delay(3000);
    lcd.clear();
                
}
    }

Fichier joint  IMG_1686.MOV   7,69 Mo   54 téléchargement(s)

IMG_1688.JPG

IMG_1689.JPG




#77183 aide programation CNC

Posté par nouss08 sur 14 décembre 2016 - 01:42 dans Programmation

bonjour a tous, me revoilà après près d'un mois d'absence, je n'ai pas beaucoup de temps en ce moment pour bosser sur mon projet. j'ai quand même réussi a le trouver pour monter les vérins sur la première scie. voici la vidéo.

Fichier joint  IMG_1637.MOV   2,64 Mo   64 téléchargement(s)




#76111 machine a commande numerique

Posté par nouss08 sur 06 novembre 2016 - 11:08 dans Machines de fabrication

Bonsoir mon arrêt d'urgence n'a qu'un contact mais je ne sais plus si c'est no ou nf si tu as besoin de savoir je peut te le dire demain. Et il n'est pas branché sur l'arduino. Bonne soiree



#76046 machine a commande numerique

Posté par nouss08 sur 04 novembre 2016 - 08:31 dans Machines de fabrication

Ca ne doit pas être tres évident a refaire un maquette comme ca de plus quand on fait avec les moyens du bord. En tous cas merci pour ton aide. Bonne soiree



#76041 aide programation CNC

Posté par nouss08 sur 04 novembre 2016 - 09:24 dans Programmation

bonjour levent, tien les voici:

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 

et il y a ca qui va avec:

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

bonne journée et merci




#75703 aide programation CNC

Posté par nouss08 sur 28 octobre 2016 - 09:29 dans Programmation

Merci pour ton aide.;)



#75700 aide programation CNC

Posté par nouss08 sur 28 octobre 2016 - 09:15 dans Programmation

;) il y a des fois comme ca ou il ne faut pas chercher lol. En tous cas merci, je n'ai encore pu rien faire cette semaine, la semaine prochaine je ne sais pas trop non plus, j'espère reussir a avancer un peut... Bonne soiree



#75697 aide programation CNC

Posté par nouss08 sur 28 octobre 2016 - 09:08 dans Programmation

Bonsoir, je sais que j'ai télécharger certaine librairies mais te dire lesquelles... Je ne sais plus, mais je crois que jeu pas en faisait partie. Bonne soiree



#75586 aide programation CNC

Posté par nouss08 sur 25 octobre 2016 - 04:20 dans Programmation

bonjour, desolé de repondre seulement maintenant mais en effet c'est bizare car moi quand je compile je n'est aucune erreur. peut etre un probleme avec ta librairie. bonne soiree




#75387 aide programation CNC

Posté par nouss08 sur 20 octobre 2016 - 06:00 dans Programmation

bonsoir je suis desolé je n'ai vraiement pas beaucoup de temps ces jours ci, comme promis levend tu trouvera ci joins le dernier code complet. merci beaucoup pour ton aide. bonne soiree

#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

#include <EEPROM.h>
int decalage_depart=300;
int valeur_maxi=6000;

int longueur_etalonnage;
long i=0;
long position_actuelle=0;
long Deplacement;
long NbPas; 

const float PAS = 0.149;


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

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


#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 (){ 
  pinMode(PDR,INPUT_PULLUP); // poussoir deplacement recul
  pinMode(PDA,INPUT_PULLUP); // poussoir deplacement avance
  pinMode(PD,INPUT_PULLUP); // poussoir desserrage
  pinMode(PS,INPUT_PULLUP); // poussoir serrage 
  pinMode(PR2,INPUT_PULLUP); // poussoir scie 2 recul
  pinMode(PAV2,INPUT_PULLUP); // poussoir scie 2 avance
  pinMode(PM2,INPUT_PULLUP); // poussoir scie 2 montée
  pinMode(PDE2,INPUT_PULLUP); // poussoir scie 2 descente
  pinMode(PR1,INPUT_PULLUP); // poussoir scie 1 recul
  pinMode(PAV1,INPUT_PULLUP); // poussoir scie 1 avance
  pinMode(PM1,INPUT_PULLUP); // poussoir scie 1 montée
  pinMode(PDE1,INPUT_PULLUP); // poussoir scie 1 descente
  pinMode(BM,INPUT_PULLUP); // bouton manuel
  pinMode(BA,INPUT_PULLUP); // bouton auto
  pinMode(FDC1,INPUT_PULLUP); // capteur fin de course 1
  pinMode(FDC2,INPUT_PULLUP); // capteur fin de course 2
  pinMode(P,INPUT_PULLUP); // 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

  digitalWrite(P,HIGH);
  digitalWrite(FDC2,HIGH);
  digitalWrite(FDC1,HIGH);
  digitalWrite(PDE2, HIGH);       
  digitalWrite(PM2,HIGH);
  digitalWrite(PDR,HIGH);
  digitalWrite(PDA,HIGH);
  digitalWrite(PD,HIGH);
  digitalWrite(PS,HIGH);
  digitalWrite (PM1,HIGH);
  digitalWrite(PDE1,HIGH);
  digitalWrite(PAV2,HIGH);
  digitalWrite(PR2,HIGH);
  digitalWrite(PR1,HIGH);
  digitalWrite(PAV1,HIGH);
  digitalWrite(BM,HIGH);
  digitalWrite(BA,HIGH);

 digitalWrite (VD1,HIGH);
  digitalWrite (VM1,HIGH);
  digitalWrite (VA1,HIGH);
  digitalWrite (VR1,HIGH);
  digitalWrite (VD2,HIGH);
  digitalWrite (VM2,HIGH);
  digitalWrite (VA2,HIGH);
  digitalWrite (VR2,HIGH);
  digitalWrite (VS,HIGH);
  digitalWrite (VD,HIGH);

  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(300);  
 
}



void loop(){
  
//******************************* MODE MANUEL***************************************
   while (digitalRead(BM)==LOW && digitalRead(BA)==HIGH) //interrupteur rotatif position manuel
{
  
  
    if (digitalRead(PDE2)==LOW)    // poussoir descente scie 2
 digitalWrite(VD2,LOW); // verin descente scie 2
 else 
 digitalWrite (VD2,HIGH);
  
   
   
 if (digitalRead(PDE1)==LOW)    // poussoir descente scie 1
 digitalWrite(VD1,LOW); // verin descente scie 1
 else 
 digitalWrite (VD1,HIGH);
  

      
 if (digitalRead(PM1)==LOW)    // poussoir montée scie 1
 digitalWrite(VM1,LOW); // verin montée scie 1
 else 
 digitalWrite (VM1,HIGH);
   

  
 if (digitalRead(PM2)==LOW)    // poussoir montée scie 2
 digitalWrite(VM2,LOW); // verin montée scie 2
 else 
 digitalWrite (VM2,HIGH);
   

     
 if (digitalRead(PR2)==LOW)    // poussoir recul scie 2
 digitalWrite(VR2,LOW); // verin recul scie 2
 else 
 digitalWrite (VR2,HIGH);
   

  
 if (digitalRead(PR1)==LOW)    // poussoir recul scie 1
 digitalWrite(VR1,LOW); // verin recul scie 1
 else 
 digitalWrite (VR1,HIGH);
   

  
 if (digitalRead(PAV1)==LOW)    // poussoir avance scie 1
 digitalWrite(VA1,LOW); // verin avance scie 1
 else 
 digitalWrite (VA1,HIGH);
   

     
 if (digitalRead(PAV2)==LOW)    // poussoir avance scie 2
 digitalWrite(VA2,LOW); // verin avance scie 2
 else 
 digitalWrite (VA2,HIGH);


  if (digitalRead(PD)==LOW)    // poussoir desserage
 {{digitalWrite(VD,LOW);digitalWrite(VS,HIGH);} // verin desserage
 delay(6000);
 digitalWrite(VD,HIGH);}



   if (digitalRead(PS)==LOW)    // poussoir serage
 {digitalWrite(VS,LOW);digitalWrite(VD,HIGH);} // verin serage


}
              
               





//*********************************** MODE AUTO**********************************

while (digitalRead(BA)==LOW && digitalRead(BM)==HIGH) // interrupteur rotatif sur position auto
 {
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("mode auto");
  delay(50);

  
  if (digitalRead(P)==HIGH) //appuis sur interupteur poussoir pedale
    {
      {lcd.setCursor(0,1);
  lcd.print("decoupe en cour");}
  
     digitalWrite(VS,LOW); // serrage
     delay(3000);
     digitalWrite(VA1,LOW); // avance scie 1
     digitalWrite(VA2,LOW); // avance scie 2
     delay (3000);
     digitalWrite(VD1,LOW); // descente scie 1
     digitalWrite(VD2,LOW); // descente scie 2
     delay (6000);
     digitalWrite(VA1,HIGH); // arret avance scie 1
     digitalWrite(VA2,HIGH); // arret avance scie 2
     digitalWrite(VR1,LOW); // recul scie 1
     digitalWrite(VR2,LOW); // recul scie 2
     delay (6000);
     digitalWrite(VD1,HIGH); // arret descente scie 1
     digitalWrite(VD2,HIGH); // arret descente scie 2
     digitalWrite(VM1,LOW); // montée scie 1
     digitalWrite(VM2,LOW); // montée scie 2
     delay (3000);
     digitalWrite(VR1,HIGH); // arret recul scie 1
     digitalWrite(VR2,HIGH); // arret recul scie 2
     digitalWrite(VM1,HIGH); // arret montée scie 1
     digitalWrite(VM2,HIGH); // arret montée scie 2
     delay (1000);
     digitalWrite(VS,HIGH); // arret serrage
     digitalWrite(VD,LOW); // desserrage
     delay (5000);
     digitalWrite(VD,HIGH); // arret desserrage 
     delay (3000);

     {lcd.setCursor(0,1);
  lcd.print("recuperer piece");
  delay(5000);
  lcd.clear();}
    }
 }

 //****************************mode reglage*************************

 
while (digitalRead(BA)==HIGH && digitalRead(BM)==HIGH) // interrupteur rotatif sur position Réglage
{
lcd.clear();
lcd.print("mode reglage");
delay(50);
touche = clavier.getKey();



  
  if(touche=='B') // Demande de changement de longueur
    {
     lcd.clear();
     lcd.print(valeur);lcd.setCursor(0,0);
     lcd.print("longueur mm");
    lcd.setCursor (0,1);
     valeur = SAISIE_LONG();
     


 
 
{                             // positionnement de la scie mobile
 

         EEPROM.get(1,position_actuelle);                // lire position_actuelle dans l'EEPROM
         if (valeur>position_actuelle && valeur<valeur_maxi)                  // si valeur > position_actuelle
           {
            Deplacement = valeur - position_actuelle;    // deplacement = valeur - position_actuelle
            NbPas = Deplacement / PAS;                  // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0.149
            do                                          // Tourner de NbPas dans le sens horaire
              {if(digitalRead(FDC2)== HIGH)
               stepper.step(1);                     
               i++;
              }while(i<NbPas);          //FDC1 = fin de course côté 6m
           }
           
           
         if (valeur<position_actuelle && valeur>decalage_depart )                   // si valeur < position_actuelle
           {
            Deplacement = position_actuelle - valeur;    // deplacement =  position_actuelle – valeur
            NbPas = Deplacement / PAS;                   // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0,149
            do                                          // Tourner de NbPas dans le sens antihoraire
              {if(digitalRead(FDC1)== HIGH)
               stepper.step(-1);
               i++;
              }while( i<NbPas);          //FDC1 = fin de course côté 30cm
           }
           if (valeur>decalage_depart && valeur<valeur_maxi)
         EEPROM.put (1,valeur);                         // Ecrire valeur dans l'EEPROM
          }
 
    
 


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

    
    if(touche=='C') // Demande de changement de délais        
    {
lcd.setCursor(0,0);
     lcd.print("Non autorisee:");
     delay (1000);
    }// fin if touche C

    

if(touche=='*'){ // etalonnage longueur

    {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("etalonnage");
    lcd.setCursor(0,1);
    lcd.print("en cour");
{
 do                                          // Tourner de NbPas dans le sens antihoraire
              {
                longueur_etalonnage=(4698*PAS)+ decalage_depart;
               stepper.step(-1);
               i++;
              }while(digitalRead(FDC1)== HIGH) ;    //retour a 0 du chariot
              delay(3000);
              stepper.step(+4698); // avance du chariot de 1m
              EEPROM.put (1,(longueur_etalonnage)); //enregistrement position dans eeprom
              delay(3000);
               lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("etalonnage");
    lcd.setCursor(0,1);
    lcd.print("termine");
    delay(3000);
    lcd.clear();
                
}
    }   
    
}

 } //fin while bouton tournant




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

//*************** Autres Fonctions du programme *************

unsigned int 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<5) { // 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


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



#75267 aide programation CNC

Posté par nouss08 sur 17 octobre 2016 - 08:07 dans Programmation

Bonsoir, je n'ai pas pu beaucoup travailler dessus ce week end ni aujourd'hui et à mon avis très peu cette semaine aussi, j'essai de remettre le code en entier demain. Merci pour ton aide. Bonne soirée.



#75101 aide programation CNC

Posté par nouss08 sur 15 octobre 2016 - 07:32 dans Programmation

Bonjour, merci de ta réponse, oui mon code prend bien en compte les fin de course, en fait les 2 codes fonctionne très bien ainsi que celui de * j'ai verifier ce que l'eeprom enregistrai en le faisant s'afficher sur le lcd pour verifier et c'est bon. Quand je fais se déplacer le moteur et que j'appuie sur un fin de course le moteur s'arrête immédiatement le seul bémol est que si un fin de couse est activé la valeur enregistre est celle qui a été tape sur le clavier, donc si jamais un fin de couse est active un re étalonnage doit être refait derriere ce n'est pas vraiement un problème car comme tu dis si un fin de course est active c'est qu'il y a un probleme de toute façon car il seront en dehors de la plage de mesure autorisée. Je regarderai pour le ";". Et donc oui j'ai créé les variables maxi et mini avant la boucle setup, pareil pour "i=0" comme le code est fait la plage de mesure fonctionne, le moteur ne va pas en dessous de 300 ni au dessus de 600 et ce n'est pas enregistrer dans l'eeprom si la valeur est incorrecte. Et oui j'aimerai l'avertir sur le lcd mais dès que je rajoute la ligne de code mon code ne fonctionne plus je doit regarder a ca. J'ai déjà passer 4h hier à trouver un probleme car mon moteur ne voulais pas se deplacer si la différence de valeur étais suppeeieur a 5000mm et en fait s'etais une variable de type int qui devais être long mais j'ai trouvé bonne journee



#75084 aide programation CNC

Posté par nouss08 sur 14 octobre 2016 - 12:07 dans Programmation

bonjour, merci de ta reponse, j te rassure mon pc m'a fait la meme chose il y a 2 ou 3 jours  :crazy:  :angry22:. concernant ton code je ne sais pas ce qui ne va pas j'ai tout essayer: changer "HIGH" par LOW" remplacer "or" par "&&" ... et ca ne veut rien savoir ce ne prend pas les fin de course. dit moi si je me trompe mais l'un ou l'autre code font la meme chose non? car de toute facon la longueur enregistrée n'est pas le deplacement du moteur mais la valeur tapé sur le clavier.

pour le touche * je vient de modifier la premiere ligne (encore grillé pour le copier coller mdr) qu'en pense tu?

if(touche=='*'){ // etalonnage longueur

    {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("etalonnage");
    lcd.setCursor(0,1);
    lcd.print("en cour");
{
 do                                          // Tourner de NbPas dans le sens antihoraire
              {
                longueur_etalonnage=(4698*PAS)+ decalage_depart;
               stepper.step(-1);
               i++;
              }while(digitalRead(FDC1)== HIGH) ;    //retour a 30 du chariot
              delay(3000);
              stepper.step(+4698); // avance du chariot de 70cmm
              EEPROM.put (1,(longueur_etalonnage)); //enregistrement position dans eeprom
              delay(3000);
               lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("etalonnage");
    lcd.setCursor(0,1);
    lcd.print("termine");
    delay(3000);
    lcd.clear();
                
}
    }   

bonne journée

 

edit: j'ai aussi modifier le code de deplacement afin de tenir compte des valeurs maxi et mini, ca fonctionne mais je n'arrive encore pas a le faire afficher sur l'ecran, et concernant les fin de course je n'arrive pas a trouver la solution sur ce code ca fonctionne mais si jamais j'attein un fin de course il faut reetaloner, et je n'arrive pas a faire marcher ton code. en attendant voici le nouveau code.

{                             // positionnement de la scie mobile
 

         EEPROM.get(1,position_actuelle);                // lire position_actuelle dans l'EEPROM
         if (valeur>position_actuelle && valeur<valeur_maxi)                  // si valeur > position_actuelle
           {
            Deplacement = valeur - position_actuelle;    // deplacement = valeur - position_actuelle
            NbPas = Deplacement / PAS;                  // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0.149
            do                                          // Tourner de NbPas dans le sens horaire
              {if(digitalRead(FDC2)== HIGH)
               stepper.step(1);                     
               i++;
              }while(i<NbPas);          //FDC1 = fin de course côté 6m
           }
           
           
         if (valeur<position_actuelle && valeur>decalage_depart )                   // si valeur < position_actuelle
           {
            Deplacement = position_actuelle - valeur;    // deplacement =  position_actuelle – valeur
            NbPas = Deplacement / PAS;                   // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0,149
            do                                          // Tourner de NbPas dans le sens antihoraire
              {if(digitalRead(FDC1)== HIGH)
               stepper.step(-1);
               i++;
              }while( i<NbPas);          //FDC1 = fin de course côté 30cm
           }
           if (valeur>decalage_depart && valeur<valeur_maxi)
         EEPROM.put (1,valeur);                         // Ecrire valeur dans l'EEPROM
          }
 



#75012 aide programation CNC

Posté par nouss08 sur 12 octobre 2016 - 03:41 dans Programmation

et pour le calibrage de longueur je pensais a ca, j'ai essayer et ca a l'air de fonctionner.

  if(touche=='*') // Demande de changement de délais
    {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("calibrage");
    lcd.setCursor(0,1);
    lcd.print("en cour");
{
 do                                          // Tourner de NbPas dans le sens antihoraire
              {
               stepper.step(-1);
               i++;
              }while(digitalRead(FDC1)== HIGH) ;    //retour a 0 du chariot
              delay(3000);
              stepper.step(+6370); // avance du chariot de 1m
              EEPROM.put (1,6370); //enregistrement position dans eeprom
              delay(3000);
               lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("calibrage");
    lcd.setCursor(0,1);
    lcd.print("termine");
    delay(3000);
                  
}
    }



#75002 aide programation CNC

Posté par nouss08 sur 12 octobre 2016 - 11:23 dans Programmation

ok merci, si tu peut regarder je vient de faire un petit edit

 

je vient de modifier ton code pour les fin de course et ca fonctionne qu'en pense tu?

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