#define MAX8BUTTONS
#include <MobaTools.h>
const byte stepPin = 10;
const byte dirPin= 11;
const int SchritteProUmdrehung = 200;
MoToStepper StepperM1(SchritteProUmdrehung, STEPDIR); // M1 ist der Motor unten rechts
//Stepper = StepperM2(200,12,13); // M2 ist der Motor links oben
byte buttonPins[] = { 5,7 };
enum :byte { STOPTASTER, STARTTASTER }; // Namen für die Taster festlegen
byte buttonCount = sizeof(buttonPins); // type of buttonPins must be byte
MoToButtons myButtons( buttonPins, buttonCount, 20, 500 );
bool motorLaeuft; // Flag dass Motor gestartet wurde ( für Endemeldung )
void setup()
{
Serial.begin(9600);
StepperM1.attach( stepPin, dirPin);
StepperM1.setSpeed(1000); // 100 U/Min
StepperM1.setRampLen(SchritteProUmdrehung/4); // Rampenlänge 1/4 Umdr.
//pinMode(5,INPUT_PULLUP); // Stoptaster
//pinMode(7,INPUT_PULLUP); // Starttaster
//pinMode(6,INPUT); // Endlage "Nullstellung M2"
//pinMode(8,INPUT_PULLUP); // Taster für das Anfahren der ArbeitsstellungM1
//pinMode(9,INPUT_PULLUP); // Taster für das Anfahren der ArbeitsstellungM2
pinMode(4, OUTPUT); // Sleep&Reset
pinMode(3, OUTPUT); // Enable
digitalWrite(4, HIGH); // Sleep&Reset deaktiviert
digitalWrite(3, LOW); // Enable auf low -> Chip aktiv
}
void loop()
{
myButtons.processButtons();
//bool NullstellungM1Erreicht = digitalRead(5);
//bool NullstellungM2Erreicht = digitalRead(6);
//int ArbeitstellungM1Erreicht = analogRead(54);
//int ArbeitstellungM2Erreicht = analogRead(55);
//bool TasterNullstellung = digitalRead(7);
//bool TasterArbeitsStellungM1 = digitalRead(5);
//bool TasterArbeitsstellungM2 = digitalRead(9);
if ( myButtons.pressed(STARTTASTER) ) {
// Starte stepper für -2000 Schritte
StepperM1.doSteps(-2000);
Serial.println("Motorlauf gestartet");
motorLaeuft = true;
}
if ( myButtons.pressed(STOPTASTER) && motorLaeuft ) {
// Stoptaste gedrückt, während der Motor läuft -> Stoppe Motor
StepperM1.rotate(0);
Serial.println("Motorlauf unterbrochen");
motorLaeuft = false;
}
if ( motorLaeuft && ! StepperM1.moving() ) {
// Motor hat Ziel erreicht
Serial.println("Motorlauf beendet");
motorLaeuft = false;
}
}