Und schon bin ich hier mit Fragen
Guten Morgen allerseits.
Ich habe nun meinen Sketch für die Kugelbahn angelegt.
Einfach gesagt geht es bei der Kugelbahn um eine Maschine, welche eine Kugel mittels eines Magneten an einer Kette hochziehen (Lift) oben angekommen mit einem Arm hinüber auf die Schienen schwenkt und abstreift (wie bei einem Stiefelknecht)
Nun muss ich die beiden Schrittmotor (der für den Lift und den für den Arm) analog der Farbuhr (Counter und Schrittmotor) referenzierten. Alles natürlich wieder mit den tollen Mobatools
Wo ich nun erstmal stecken bleibe, ist das anlegen der Schrittkette. Die Schrittkettenglieder habe ich erst mal nur provisorisch angedeutet
In etwa hatte ich die eigentliche Referenzierung der Farbuhr mit den Schrittketten verstanden nur, wie die genau angelegt wird war mir nie so ganz klar.
Ok, hier mal was ich bis jetzt schon habe und ja ich weiss da fehlt noch einiges.
#include <MobaTools.h>
constexpr uint16_t NULLPOSLIFT = 200; // Abstand Referenzpunkt ( LS ) zum Nullpunkt
constexpr uint16_t NULLPOSARM = 200;
const byte stepPin = 6;
const byte dirPin = 5;
const byte enaPin = 4 ;
const byte inPins[] = { A0, A1 };
const byte pinAnzahl = sizeof( inPins );
const int stepsPerRevLift = 2000;
const int stepsPerRevArm = 2000;
int buttonState = 0;
enum : byte { refLift, refArm };
enum class Schritt : byte {REF_CHK_LIFT, REF_FREI_LIFT, REF_LIFT, REF_CHL_ARM, REF_FREI_ARM, REF_ARM};
MoToStepper stepLift( stepsPerRevLift, STEPDIR ); // Schritmotor Lift
MoToStepper stepArm( stepsPerRevArm, STEPDIR ); // Schrittmotor Arm
MoToButtons Taster ( inPins, pinAnzahl, 20, 2000 ); // Einrichten der Tasterverwaltung
void setup() {
//stepLift.attachEnable(enaPin, LOW); // Stepperspulen Lift anschalten
stepLift.attach( stepPin, dirPin );
stepLift.setSpeed( 800 );
stepLift.setRampLen( 100); // Rampenlänge
stepArm.attach(8, 9, 10, 11); // Nr. der Pins für den Stepper
stepArm.setSpeed(60); // Geschwindigkeit in RPM*10
}
void loop() {
Taster.processButtons();
void printStdSchritt( byte schritt ) {
. // ?
static const char *schrittTexte[] = {"REF_CHK_LIFT, REF_FREI_LIFT, REF_LIFT, REF_CHL_ARM, REF_FREI_ARM, REF_ARM" }; // Hier stecke ich fest
}
switch (schritt) {
. // Hier kommen dann die einzelnen Schritte für die Referenzierungen der Schrittmotore
case Schritt:: REF_CHK_LFT:
// digitalWrite(refLift, LOW); Stepperspulen anschalten
if ( Taster.state(refLift ) ) {
// Kelle aus LS ausfahren
Stepper1.write( -159 );
schritt = Schritt::REF_FREI_LIFT;
} else {
schritt = Schritt::REF_LIFT;
}
break;
}
}
{
}
}