Go Down

Topic: [consiglio] Stepper: gestione posizione ed eventi (Read 238 times) previous topic - next topic

Jenosky

Salve ragazzi, volevo chiedervi un consiglio su del codice che sto scrivendo e che è già funzionante.
Il codice, tramite libreria AccelStepper, fa compiere un giro in senso orario al motore e poi un giro di ritorno in posizione.
Durante l'andata vorrei tenere conto della posizione in cui si verificano certi eventi ed ho risolto nella seguente maniera:

Code: [Select]
stepper.moveTo(200);
    for (int i=1;stepper.currentPosition() != 200;i++){
      stepper.run();
     
      ctrl01[0]=ctrl01[1];
      ctrl01[1]=digitalRead(LEVELSENSOR01);

      ctrl02[0]=ctrl02[1];
      ctrl02[1]=digitalRead(LEVELSENSOR02);

      if ((ctrl01[1]==HIGH) && (ctrl01[0]==LOW)){     //livello attivazione olio
        step01[0]=stepper.currentPosition();
      }
      if ((ctrl01[1]==LOW) && (ctrl01[0]==HIGH)){     //livello spegnimento
        step01[1]=stepper.currentPosition();
      }

      if ((ctrl02[1]==HIGH) && (ctrl02[0]==LOW)){     //livello attivazione acqua
        step02[0]=stepper.currentPosition();
      }
      if ((ctrl02[1]==LOW) && (ctrl02[0]==HIGH)){     //livello spegnimento
        step02[1]=stepper.currentPosition();
      }
     
      Serial.println ("step");
      Serial.println (stepper.currentPosition());
    }
    stepper.stop();
    delay (1500);
    stepper.runToPosition();
    // Now stopped after quickstop
    // Now go backwards
    stepper.moveTo(0);
    while (stepper.currentPosition() != 0) // Full speed back to 0
      stepper.run();
    stepper.stop(); // Stop as fast as possible: sets new target
    stepper.runToPosition();
    // Now stopped after quickstop}

I vari if che vedete sono gli eventi interessati (non vi ho messo tutto il codice per comodità di lettura).
Dite che va bene già così (ricordo che mi funziona) o che potrei migliorare il tutto in maniera più precisa ed efficiente?
E' molto importante che il motore faccia sempre lo stesso numero di passi all'andata ed al ritorno.
Grazie in anticipo a chi mi vorrà dare un consiglio!

Go Up