Sketch per pilotare motore passo passo non mi funziona

Ciao a tutti, sono alle prime armi, si noterà dal tipo di codice che ho scritto, sicuramente ci saranno migliorie da fare e soprattutto troverete cosa ho sbagliato nello scriverlo che non me lo fa funzionare.
Vi spiego cosa devo fare con questo progetto.
Uso un Arduino Mega
Devo pilotare un driver per un motore passo passo (DM556) che mi azioni uno stepper nema 34 con il quale movimento l'asse X di una fresa hobbistica che ho a casa.
Per il funzionamento ho previsto un joystick con contatti NO per spostarmi a DX o SX, volendo potrei anche usare quello di arduino analogico, ma per iniziare e farlo più semplice come programmazione ho scelto questo.
Ho due finecorsa che metterò sulla tavola lungo l'asse X per interrompere il funzionamento quando raggiunge uno dei due limiti, questi sono microswitch NC in modo che se si dovesse tranciare il cavo o dovessi avere qualche problema mi si ferma il moto e non causi danni.
Ho un pulsante per avanzamento veloce (con un suo trimmer per regolare la velocità) e un trimmer per la velocità di base soggetta ai due interruttori presenti sul joystick.
Come uscite ho: 3 led, uno di stato come power on e 2 per indicare la direzione, i 3 pin per il driver dello stepper ENA,DIR,PUL.
Gli ingressi li ho settati come PULLUP così uso sempre il riferimento a massa
Quando faccio partire il mio sketch mi dà il messaggio Ready che c'è nella fase di setup, ma poi non riesco a far funzionare nulla.
allego lo sketch.

int puls_sx = 3;       //pulsante controller SX
int puls_dx = 4;       //pulsante controller DX
int ena = 5;           //ENA stepper Driver
int dir = 6;           //DIR stepper Driver
int pul = 7;           //PUL stepper Driver
int rapid = 8;         //Pulsante rapido
int potS = A0;         //Potenziometro velocità normale
int potR = A1;         //Potenziometro velocità Rapida
int fcsx = 10;         //Fine corsa SX NC
int fcdx = 11;         //Fine corsa DX NC
int ledSx = 12;        //Led direzione SX
int ledDx = 13;        //Led direzione DX
int buzzer = 9;        // Buzzer segnalazioni acustiche
int power_on = 2;       //led stato acceso


long currentMicros = 0;
long previousMicros = 0;
long delay_Micros = 0;

void setup() {

  Serial.begin(9600);
  pinMode(puls_sx, INPUT_PULLUP);
  pinMode(puls_dx, INPUT_PULLUP);
  pinMode(ena, OUTPUT);
  pinMode(dir, OUTPUT);
  pinMode(pul, OUTPUT);
  pinMode(potS, INPUT);
  pinMode(potR, INPUT);
  pinMode(fcsx, INPUT_PULLUP);
  pinMode(fcdx, INPUT_PULLUP);
  pinMode(ledSx, OUTPUT);
  pinMode(ledDx, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(power_on, OUTPUT);
  
  digitalWrite(power_on, LOW);
  digitalWrite(ledSx,LOW);
  digitalWrite(ledDx,LOW);
  delay(200);
  digitalWrite(ledSx, HIGH);
  digitalWrite(ledDx, HIGH);
  Serial.println ("Ready");
  delay(1000);
  digitalWrite(ledSx, LOW);
  digitalWrite(ledDx, LOW);
  tone(1, 1000, 600);



}

void tone_err() {
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
}


/*

void direz() {
  

  if (puls_sx == LOW) { //funziona a SX
    if (fcsx == LOW) {
      digitalWrite(ledSx, HIGH);
      digitalWrite(dir, HIGH);
      digitalWrite(ena, HIGH);
      tone(4, 800, 300);
      Serial.print("sinistra");
     
    }

    else  {   if (fcsx == HIGH)   {      //finecorsa sx aperto blocco movimento
      digitalWrite(ledSx, LOW); {
        digitalWrite(ena, LOW);
        Serial.print("finecorsa sinistra");
        tone_err();
      }
    }

  }
  }


 if (puls_dx == LOW){
    if (fcdx == LOW){ //funziona a dx
      digitalWrite(ledDx, LOW);
      digitalWrite(dir, LOW);
      digitalWrite(ena, HIGH);
      Serial.print("Destra");
      tone(4, 800, 300);
      
    }

    else {  //(fcdx = HIGH); finecorsa dx aperto blocco movimento
      digitalWrite(ledDx, HIGH); {
        digitalWrite(ena, LOW);
        Serial.print("finecorsa destra");
        tone_err();
      }
    }

  }
  if (puls_dx && puls_sx==LOW){
    digitalWrite(ena,LOW);
  }
 }
*/
void start() {
  currentMicros = micros();



  if (digitalRead(rapid)==HIGH) { //se puls rapid non premuto
    delay_Micros = map(analogRead(potS), 0, 1024, 50000, 1000); //legge velocita potS
    if (currentMicros - previousMicros >= delay_Micros)
    {
      previousMicros = currentMicros;
      digitalWrite(pul, HIGH);
      delayMicroseconds(100); //impostare il valore
      digitalWrite(pul, LOW);
    }

  }
  else (digitalRead(rapid)==LOW);{ //se premo rapid
    delay_Micros = map(analogRead(potR), 0, 1024, 1000, 300); //legge velocità potR

    if (currentMicros - previousMicros >= delay_Micros)
    {
      previousMicros = currentMicros;
      digitalWrite(pul, HIGH);
      delayMicroseconds(100); //impostare valore
      digitalWrite(pul, LOW);
      
    }

  }




}

void loop() {
if (puls_sx == LOW) { //funziona a SX
    if (fcsx == LOW) {
      digitalWrite(ledSx, HIGH);
      digitalWrite(dir, HIGH);
      digitalWrite(ena, HIGH);
      tone(4, 800, 300);
      Serial.print("sinistra");
      start();
     
    }

    else  {   if (fcsx == HIGH)   {      //finecorsa sx aperto blocco movimento
      digitalWrite(ledSx, LOW); {
        digitalWrite(ena, LOW);
        Serial.print("finecorsa sinistra");
        tone_err();
      }
    }

  }
  }


 if (puls_dx == LOW){
    if (fcdx == LOW){ //funziona a dx
      digitalWrite(ledDx, LOW);
      digitalWrite(dir, LOW);
      digitalWrite(ena, HIGH);
      Serial.print("Destra");
      tone(4, 800, 300);
      start();
      
    }

    else {  //(fcdx = HIGH); finecorsa dx aperto blocco movimento
      digitalWrite(ledDx, HIGH); {
        digitalWrite(ena, LOW);
        Serial.print("finecorsa destra");
        tone_err();
      }
    }

  }
  if (puls_dx && puls_sx==LOW){
    digitalWrite(ena,LOW);
  }
 }

 //start();

ciao.
cominciamo con:

  • non leggi mai lo stato del pulsante
  • confronti il pin del pulsante invece dello stato
  • l’ultimo if ha un problema: per usare 2 condizioni legate da AND devi mettere entrambi i confronti (tipo if ((puls_dx==LOW) && (puls_sx==LOW)) che è comunque sbagliata perché puls_sx e puls_dx sono i pin e non lo stato dei pulsanti)

Grazie mille, ora guardo ed in effetti da tonto non ho fatto la lettura del pulsante!!! che fesso.

Ciao rieccomi dopo le prove, effettivamente da uomo alle prime armi avevo dimenticato la lettura dello stato.
Ora mi funziona tutto tranne la regolazione delle velocità e l'avanzamento rapido che ho inserito nel void start(). non capisco cosa stia sbagliando...
spero ancora in un vostro aiuto, così se riesco a fare questi poi passo allo step successivo di integrare anche un display con lettura delle velocità e indicazione di movimento, ma questo lo farò dopo, prima devo capire i miei attuali errori.
Nota aggiuntiva, ho appena controllato i potenziometri e funzionano correttamente, ai pin A0 e A1 le tensioni variano da 0 a 5V.
ho inserito nello sketch la lettura dei valori analogici sulle porte A0 e A1
ho modificato per prova i pin dei LED portandoli su 22 e 23 perchè mi blinkavano in modo strano ma ora risolto.


int puls_sx = 3;       //pulsante controller SX
int puls_dx = 4;       //pulsante controller DX
int ena = 5;           //ENA stepper Driver
int dir = 6;           //DIR stepper Driver
int pul = 7;           //PUL stepper Driver
int rapid = 8;         //Pulsante rapido
int potS = A0;         //Potenziometro velocità normale
int potR = A1;         //Potenziometro velocità Rapida
int fcsx = 10;         //Fine corsa SX NC
int fcdx = 11;         //Fine corsa DX NC
int ledSx = 22;        //Led direzione SX
int ledDx = 23;        //Led direzione DX
int buzzer = 9;        // Buzzer segnalazioni acustiche
int power_on = 2;       //led stato acceso

int val_p_sx =1;
int val_p_dx =1;
int val_fcsx =0;
int val_fcdx =0;
int val_potS =0;
int val_potR =0;
long currentMicros = 0;
long previousMicros = 0;
long delay_Micros = 0;

void setup() {

  Serial.begin(9600);
  pinMode(puls_sx, INPUT_PULLUP);
  pinMode(puls_dx, INPUT_PULLUP);
  pinMode(ena, OUTPUT);
  pinMode(dir, OUTPUT);
  pinMode(pul, OUTPUT);
  pinMode(potS, INPUT);
  pinMode(potR, INPUT);
  pinMode(fcsx, INPUT_PULLUP);
  pinMode(fcdx, INPUT_PULLUP);
  pinMode(ledSx, OUTPUT);
  pinMode(ledDx, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(power_on, OUTPUT);
  
  digitalWrite(power_on, LOW);
  digitalWrite(ledSx,LOW);
  digitalWrite(ledDx,LOW);
  delay(200);
  digitalWrite(ledSx, HIGH);
  digitalWrite(ledDx, HIGH);
  Serial.println ("Ready");
  delay(1000);
  digitalWrite(ledSx, LOW);
  digitalWrite(ledDx, LOW);
  tone(1, 1000, 600);
  val_potS = analogRead(potS);
  Serial.println(val_potS);
  delay(1000);
  val_potR = analogRead(potR);
  Serial.println(val_potR);
  delay(1000);



}

void tone_err() {
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
}



void start() {
  currentMicros = micros();



  if (digitalRead(rapid)==1) { //se puls rapid non premuto
    delay_Micros = map(analogRead(val_potS), 0, 1024, 10000, 1000); //leggo velocita potS
    if (currentMicros - previousMicros >= delay_Micros)
    {
      previousMicros = currentMicros;
      digitalWrite(pul, HIGH);
      delayMicroseconds(20); 
      digitalWrite(pul, LOW);
    }

  }
  else (digitalRead(rapid)==0);{ //se premo rapid
    delay_Micros = map(analogRead(val_potR), 0, 1024, 1000, 300); //leggo potR

    if (currentMicros - previousMicros >= delay_Micros)
    {
      previousMicros = currentMicros;
      digitalWrite(pul, HIGH);
      delayMicroseconds(20); 
      digitalWrite(pul, LOW);
      
    }

  }




}

  

void loop() {
 val_p_sx = digitalRead(puls_sx);
 val_p_dx = digitalRead(puls_dx);
 val_fcsx = digitalRead(fcsx);
 val_fcdx = digitalRead(fcdx);
if ((val_p_sx == 0)&&(val_p_dx==1)) { //funziona a SX
    if (val_fcsx == 0) {
      digitalWrite(ledSx, HIGH);
      digitalWrite(dir, HIGH);
      digitalWrite(ena, HIGH);
      Serial.println("sinistra");
        start();
     
    }

    else  {   if (val_fcsx == 1)   {      //finecorsa sx aperto blocco movimento
      digitalWrite(ledSx, LOW); {
        digitalWrite(ena, LOW);
        Serial.println("finecorsa sinistra");
        tone_err();
       
      }
    }

  }
  }


 if ((val_p_dx == 0)&&(val_p_sx==1)){
    if (val_fcdx == 0){                   //funziona a dx
      digitalWrite(ledDx, HIGH);
      digitalWrite(dir, LOW);
      digitalWrite(ena, HIGH);
      Serial.println("Destra");
          start();
      
    }

    else {  if(val_fcdx == 1); {                  //finecorsa dx aperto blocco movimento
      digitalWrite(ledDx, LOW); {
        digitalWrite(ena, LOW);
        Serial.println("finecorsa destra");
        tone_err();
       
      }
    }

  }
 }
  if ((val_p_dx==0) && (val_p_sx==0)){
    digitalWrite(ena, LOW);
    Serial.println("Stop 1");
  }
   if ((val_p_dx==1) && (val_p_sx==1)){
     digitalWrite(ena, LOW);
     Serial.println("Stop 2");
  }
 }

 

Ciao rieccomi, riguardando lo sketch ho notato 2 errori, non prendo in considerazione il pulsante "rapid " che ho definito come Pin ma non come pinMode (input) ma non leggo il valore. domani riprovo lo sketch e vediamo se gli errori sono questi, ora non ho qui sottomano tutto l'impianto montato.

Invece di scrivere
int puls_sx = 3;
per i valori che non cambiano mai, costanti, utilizza
#define puls_sx 3
e via di seguito utilizzi meno memoria.

Grazie mille Arco_500, ho imparato un'altra cosa nuova.

sono riuscito a far funzionare il tutto, ho un limite ma credo sia dovuto al driver, dico questo perchè anche cambiando alimentatore o motore ho lo stesso difetto, l'altro motore è sempre un nema 34 ma da 0,2A invece che da 6A di assorbimento

non riesco ad andare oltre ai 2 giri al secondo con il motore quindi 120giri/minuto a vuoto con alimentatore da 24V 10A e driver DM556.
il motore si blocca e vibra tutto. se invece scendo come frequenza di PUL diventa bello silenzioso e fluido.

lo sketch lo posto domani, al momento lo ho su una chiavetta in un altro posto.

ecco come promesso lo sketch che sembra funzionare.
Purtroppo non capisco se è il driver che mi rompe le scatole e non mi fa andare più di tanto il motore oppure se c'è qualche altro problema.



#define puls_sx 3      //pulsante controller SX
#define puls_dx 4      //pulsante controller DX
#define ena 5           //ENA stepper Driver
#define dir 6           //DIR stepper Driver
#define pul 7           //PUL stepper Driver
#define rapid 8         //Pulsante rapido
#define potS A0         //Potenziometro velocità normale
#define potR A1         //Potenziometro velocità Rapida
#define fcsx 10         //Fine corsa SX NC
#define fcdx 11         //Fine corsa DX NC
#define ledSx 22        //Led direzione SX
#define ledDx 23        //Led direzione DX
#define buzzer 9        // Buzzer segnalazioni acustiche
#define power_on 2       //led stato acceso

int val_p_sx =0;
int val_p_dx =0;
int val_fcsx =0;
int val_fcdx =0;
int val_potS =0;
int val_potR =0;
int val_rapid =0;
long delay_MicrosS = 0;
long delay_MicrosR = 0;

void setup() {

  Serial.begin(9600);
  pinMode(puls_sx, INPUT_PULLUP);
  pinMode(puls_dx, INPUT_PULLUP);
  pinMode(ena, OUTPUT);
  pinMode(dir, OUTPUT);
  pinMode(pul, OUTPUT);
  pinMode(potS, INPUT);
  pinMode(potR, INPUT);
  pinMode(fcsx, INPUT_PULLUP);
  pinMode(fcdx, INPUT_PULLUP);
  pinMode(ledSx, OUTPUT);
  pinMode(ledDx, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(power_on, OUTPUT);
  pinMode(rapid, INPUT);
  
  digitalWrite(power_on, LOW);
  digitalWrite(ledSx,LOW);
  digitalWrite(ledDx,LOW);
  delay(200);
  digitalWrite(ledSx, HIGH);
  digitalWrite(ledDx, HIGH);
  Serial.println ("Ready");
  delay(1000);
  digitalWrite(ledSx, LOW);
  digitalWrite(ledDx, LOW);
  tone(1, 1000, 600);
 /* val_potS = analogRead(potS);
  Serial.println(val_potS);
  delay(1000);
  val_potR = analogRead(potR);
  Serial.println(val_potR); */
  delay(1000);



}

void tone_err() {
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  Serial.println("Tono Errore");
}



void start() {
  

  if (digitalRead(val_rapid)==1) { //se puls rapid non premuto
    delay_MicrosS = map(analogRead(potS), 0, 1024, 1000, 10000); //leggo velocita potS
    
    {
      delay_MicrosS;
      digitalWrite(pul, HIGH);
      delayMicroseconds(20); 
      digitalWrite(pul, LOW);
    }

  }
  else if(digitalRead(val_rapid)==0) { //se premo rapid
    delay_MicrosR = map(analogRead(val_potR), 0, 1024, 1500, 30000); //leggo potR

   
    {
      delay_MicrosR;
      digitalWrite(pul, HIGH);
      delayMicroseconds(10); 
      digitalWrite(pul, LOW);
      
    }

  }




}

  

void loop() {
 val_p_sx = digitalRead(puls_sx);
 val_p_dx = digitalRead(puls_dx);
 val_fcsx = digitalRead(fcsx);
 val_fcdx = digitalRead(fcdx);
 val_rapid = digitalRead(rapid);
 val_potR = digitalRead(potR);
 val_potS = digitalRead(potS);

 
if ((val_p_sx == 0)&&(val_p_dx==1)) { //funziona a SX
    if (val_fcsx == 0) {
      digitalWrite(ledSx, HIGH);
      digitalWrite(dir, HIGH);
      digitalWrite(ena, HIGH);
     // Serial.println("sinistra");
        start();
     
    }

    else  {   if (val_fcsx == 1)   {      //finecorsa sx aperto blocco movimento
      digitalWrite(ledSx, LOW); {
        digitalWrite(ena, LOW);
        Serial.println("finecorsa sinistra");
        tone_err();
       
      }
    }

  }
  }


 if ((val_p_dx == 0)&&(val_p_sx==1)){
    if (val_fcdx == 0){                   //funziona a dx
      digitalWrite(ledDx, HIGH);
      digitalWrite(dir, LOW);
      digitalWrite(ena, HIGH);
    //  Serial.println("Destra");
          start();
      
    }

    else {  if(val_fcdx == 1); {                  //finecorsa dx aperto blocco movimento
      digitalWrite(ledDx, LOW); {
        digitalWrite(ena, LOW);
        Serial.println("finecorsa destra");
        tone_err();
       
      }
    }

  }
 }
  if ((val_p_dx==0) && (val_p_sx==0)){
    digitalWrite(ena, LOW);
 //   Serial.println("Stop 1");
  }
   if ((val_p_dx==1) && (val_p_sx==1)){
     digitalWrite(ena, LOW);
  //   Serial.println("Stop 2");
  }
 }

sgrunt!!! no non mi va ancora, sbaglio qualcosa... domani studio ancora un po'

oramai me la faccio e me la conto!

comunque sono riuscito dopo prove^n a trovare i vari problemi che non mi facevano andare lo sketch.
dopo lo posto, ora mi è sorto un nuovo problema ma credo si possa risolvere con una libreria se non erro, devo documentarmi.
In pratica funziona tutto quello che voglio fargli fare ma se parto con un alto numero di impulsi al driver, il motore resta bloccato, credo debba utilizzare la libreria accel_stepper o qualcosa del genere.
se qualcuno ha qualche idea migliore o anzi mi suggerisce anche come ottimizzare lo sketch gliene sarei grato.

#define puls_sx 3      //pulsante controller SX
#define puls_dx 4      //pulsante controller DX
#define ena 5           //ENA stepper Driver
#define dir 6           //DIR stepper Driver
#define pul 7           //PUL stepper Driver
#define rapid 8         //Pulsante rapido
#define potS A0         //Potenziometro velocità normale
#define potR A1         //Potenziometro velocità Rapida
#define fcsx 10         //Fine corsa SX NC
#define fcdx 11         //Fine corsa DX NC
#define ledSx 22        //Led direzione SX
#define ledDx 23        //Led direzione DX
#define buzzer 9        // Buzzer segnalazioni acustiche
#define power_on 2       //led stato acceso

int val_p_sx =0;
int val_p_dx =0;
int val_fcsx =0;
int val_fcdx =0;
int val_potS =0;
int val_potR =0;
int val_rapid =0;
long delay_MicrosS = 0;
long delay_MicrosR = 0;

void setup() {

  Serial.begin(9600);
  pinMode(puls_sx, INPUT_PULLUP);
  pinMode(puls_dx, INPUT_PULLUP);
  pinMode(ena, OUTPUT);
  pinMode(dir, OUTPUT);
  pinMode(pul, OUTPUT);
  pinMode(potS, INPUT);
  pinMode(potR, INPUT);
  pinMode(fcsx, INPUT_PULLUP);
  pinMode(fcdx, INPUT_PULLUP);
  pinMode(ledSx, OUTPUT);
  pinMode(ledDx, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(power_on, OUTPUT);
  pinMode(rapid, INPUT_PULLUP);
  
  digitalWrite(power_on, LOW);
  digitalWrite(ledSx,LOW);
  digitalWrite(ledDx,LOW);
  delay(200);
  digitalWrite(ledSx, HIGH);
  digitalWrite(ledDx, HIGH);
  Serial.println ("Ready");
  delay(1000);
  digitalWrite(ledSx, LOW);
  digitalWrite(ledDx, LOW);
  tone(1, 1000, 600);
  delay(1000);



}

void tone_err() {
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  tone(2, 1200, 100);
  delay(100);
  Serial.println("Tono Errore");
}



void start_normal() {
  
   // if (digitalRead(val_rapid)==1){                              //se puls rapid non premuto
    delay_MicrosS = map(analogRead(potS), 0, 1023, 1000, 20000);  //leggo velocita potS
    
    {
      delayMicroseconds (delay_MicrosS);
      digitalWrite(pul, HIGH);
      delayMicroseconds(5); 
      digitalWrite(pul, LOW);
    }

  }

 void start_rapid() {
 // if(digitalRead(val_rapid)==0) {                             //se premo rapid
    delay_MicrosR = map(analogRead(potR), 0, 1023, 100, 3000);   //leggo potR
   
   
    {
      delayMicroseconds (delay_MicrosR);
      digitalWrite(pul, HIGH);
      delayMicroseconds(5); 
      digitalWrite(pul, LOW);
      
    }

  }




//}

  

void loop() {
 val_p_sx = digitalRead(puls_sx);
 val_p_dx = digitalRead(puls_dx);
 val_fcsx = digitalRead(fcsx);
 val_fcdx = digitalRead(fcdx);
 val_rapid = digitalRead(rapid);
 

 
if ((val_p_sx == 0)&&(val_p_dx==1)) { //funziona a SX
    if (val_fcsx == 0) {
      digitalWrite(ledSx, HIGH);
      digitalWrite(dir, HIGH);
      digitalWrite(ena, HIGH);
       if (val_rapid==0){
        start_rapid();
       }
     else {
        start_normal();
       }
    }

    else  {   if (val_fcsx == 1)   {      //finecorsa sx aperto blocco movimento
      digitalWrite(ledSx, LOW); {
        digitalWrite(ena, LOW);
        Serial.println("finecorsa sinistra");
        tone_err();
       
      }
    }

  }
  }


 if ((val_p_dx == 0)&&(val_p_sx==1)){
    if (val_fcdx == 0){                   //funziona a dx
      digitalWrite(ledDx, HIGH);
      digitalWrite(dir, LOW);
      digitalWrite(ena, HIGH);
        if (val_rapid==0){
        start_rapid();
       }
     else {
        start_normal();
       }
      
    }

    else {  if(val_fcdx == 1); {                  //finecorsa dx aperto blocco movimento
      digitalWrite(ledDx, LOW); {
        digitalWrite(ena, LOW);
        Serial.println("finecorsa destra");
        tone_err();
       
      }
    }

  }
 }
  if ((val_p_dx==0) && (val_p_sx==0)){
    digitalWrite(ena, LOW);
 //   Serial.println("Stop 1");
  }
   if ((val_p_dx==1) && (val_p_sx==1)){
     digitalWrite(ena, LOW);
  //   Serial.println("Stop 2");
  }
 }

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.