TB6600 + Nema17 aiuto;)

Ciao a tutti,
sono nuovo e sono al mio primo post.
Ho acquistato il kit in oggetto e sono riuscito a programmarlo come di seguito.....ho la necessità che il Nema si azioni di 90° per 3 secondi e successivamente ritorni in posizione per 7 secondi, il tutto ripetuto per 5 volte. In seguito vorrei riattivarlo attraverso un pulsante.
Purtroppo al momento non sono capace di scrivere lo stop dopo 5 cicli e l'attivazione con pulsante.
Mi potete aiutare? Grazie in anticipo
Ermes

// definizione dei PIN
const int stepPin = 3;
const int dirPin = 2;
const int stepForRevolution = 400;
const int coeffSpeedLOW = 200;

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}

void loop() {
  //Motore in direzione oraria
  digitalWrite(dirPin, HIGH);

  // Avanti 90°
  for (int x = 0; x < 1 * stepForRevolution; x++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(coeffSpeedLOW);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(coeffSpeedLOW);
  }
  delay(3000); // pausa di tre secondi

  //Motore in direzione antioraria
  digitalWrite(dirPin, LOW);

  // In dietro 90°
  for (int x = 0; x < 1 * stepForRevolution; x++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(coeffSpeedLOW);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(coeffSpeedLOW);
  }
  delay(7000); // pausa di sette secondi
  
}

Buongiorno a tutti, nessuno mi può aiutare?

Grazie

Per fare (letteralmente) quello che chiedi, puoi procedere così:

  1. Rinomina void loop() in qualcosa di diverso (tipo my_func())
  2. Racchiudi tutto il contenuto di my_func() in un ciclo for(uint8_t i=0;i<5;i++)
  3. Ricrea il void loop() dove controlli se è stato premuto il pulsante, nel caso richiami my_func().

Ciao, Ale.

Grazie 1000, adesso ci smanetto un pochino e vedo se riesco.
Grazie ancora per l'aiuto.
Ermes

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