es funktioniert, danke...
ich poste hier mal den code wo ich deine lösung implementiert habe, der hintere bereich ist hier nicht so interessant, da sind nur die einzelnen funktionen fürs fahren mit dem robby definiert...
Das starten lässt sich auf beide arten, die in dem code drinn sind super bewerkstelligen, die auskommentierte, mit der "start_taster_1()" funktion funktioniert natürlich genauso, wie die hier als funktionell aufgeführte. Die gefiel mir irgendwie besser, weil ich direkt in der loop-schleife eingreifen kann und ergänzungen/änderungen einfügen kann.
- ist diese möglichkeit wirklich besser, oder ist es nur ein (falsches?) gefühl?
- zum stoppen während der ausführung der "fahrt_1()" funktion ist mir nichts anderes eingefallen als in allen diesen fahr-funktionen die abfrage "if (start == true)" einzufügen -
...und das auch noch rein theoretisch, probiert habe ich es noch nicht...
- die abfrage " if (start){} - ist die von der funktion her mit "if (start == true)" gleichzusetzen?
Code:
#include <CustomStepper.h>
//#include <NewPing.h>
//#include <Servo.h>
//#include <LCD.h>
//#include <LiquidCrystal_I2C.h>
#include <Bounce2.h>
#include <Wire.h>
uint8_t idx;
boolean start = false;
Bounce pin5 = Bounce();
enum stepper_e
{ stepper_HM, stepper_VR, stepper_VL, stepper_MAX };
CustomStepper stepper[stepper_MAX]
{
// CustomStepper(23, 25, 27, 29),
// CustomStepper(47, 49, 51, 53),
CustomStepper(35, 37, 39, 41),//stepper_HM-I
CustomStepper(23, 25, 27, 29),//stepper_VR-II
CustomStepper(47, 49, 51, 53) //stepper_VL-III
};
void setup()
{
pinMode(5, INPUT_PULLUP);
Serial.begin(115200);
pin5.attach(5);
pin5.interval(5);
}
void loop()
{
// start_taster_1();
if (pin5.update())
{
if (pin5.fell())
{
start = !start; // toggle start each time button is pressed
}
}
if (start)
{
fahrt_1();
}
else halt();
}
/***********************************************************/
/*
void start_taster_1()
{
{
if (pin5.update())
{
if (pin5.fell())
{
start = !start; // toggle start each time button is pressed
}
}
if (start)
{
fahrt_1();
}
else halt();
}
}
*/
void fahrt_1()
{
rotate_right();
fahrt_ausfuehren();
alle_stepper_stop();
fahrt_ausfuehren();
richtung_HM();
fahrt_ausfuehren();
alle_stepper_stop();
fahrt_ausfuehren();
richtung_VR();
fahrt_ausfuehren();
alle_stepper_stop();
fahrt_ausfuehren();
richtung_VL();
fahrt_ausfuehren();
alle_stepper_stop();
fahrt_ausfuehren();
rotate_left();
fahrt_ausfuehren();
alle_stepper_stop();
fahrt_ausfuehren();
}
void halt()
{
alle_stepper_stop();
fahrt_ausfuehren();
}
void alle_stepper_stop()
{
for (idx = stepper_HM; idx < stepper_MAX; idx++)
{
stepper[idx].setRPM(0);
stepper[idx].setSPR(4075.7728395);
stepper[idx].setDirection(STOP);
}
}
void richtung_HM()
{
stepper[stepper_HM].setRPM(12);
stepper[stepper_VR].setRPM(12);
stepper[stepper_VL].setRPM(12);
stepper[stepper_HM].setSPR(4075.7728395);
stepper[stepper_VR].setSPR(4075.7728395);
stepper[stepper_VL].setSPR(4075.7728395);
stepper[stepper_VL].setDirection(CCW);
stepper[stepper_VL].rotate(2);
stepper[stepper_VR].setDirection(CW);
stepper[stepper_VR].rotate(2);
}
void richtung_VL()
{
stepper[stepper_HM].setRPM(12);
stepper[stepper_VR].setRPM(12);
stepper[stepper_VL].setRPM(12);
stepper[stepper_HM].setSPR(4075.7728395);
stepper[stepper_VR].setSPR(4075.7728395);
stepper[stepper_VL].setSPR(4075.7728395);
stepper[stepper_VR].setDirection(CCW);
stepper[stepper_VR].rotate(2);
stepper[stepper_HM].setDirection(CW);
stepper[stepper_HM].rotate(2);
}
void richtung_VR()
{
stepper[stepper_HM].setRPM(12);
stepper[stepper_VR].setRPM(12);
stepper[stepper_VL].setRPM(12);
stepper[stepper_HM].setSPR(4075.7728395);
stepper[stepper_VR].setSPR(4075.7728395);
stepper[stepper_VL].setSPR(4075.7728395);
stepper[stepper_VL].setDirection(CW);
stepper[stepper_VL].rotate(2);
stepper[stepper_HM].setDirection(CCW);
stepper[stepper_HM].rotate(2);
}
void test_richtung() //VR
{
stepper[stepper_HM].setRPM(12);
stepper[stepper_VR].setRPM(12);
stepper[stepper_VL].setRPM(12);
stepper[stepper_HM].setSPR(4075.7728395);
stepper[stepper_VR].setSPR(4075.7728395);
stepper[stepper_VL].setSPR(4075.7728395);
stepper[stepper_VL].setDirection(CW);
stepper[stepper_VL].rotate(2);
stepper[stepper_HM].setDirection(CCW);
stepper[stepper_HM].rotate(2);
}
void rotate_right_deg(void)
{
for (idx = stepper_HM; idx < stepper_MAX; idx++)
{
stepper[idx].setRPM(12);
stepper[idx].setSPR(4075.7728395);
stepper[idx].setDirection(CW);
stepper[idx].rotateDegrees(60);
}
}
void rotate_left_deg(void)
{
for (idx = stepper_HM; idx < stepper_MAX; idx++)
{
stepper[idx].setRPM(12);
stepper[idx].setSPR(4075.7728395);
stepper[idx].setDirection(CW);
stepper[idx].rotateDegrees(60);
}
}
void rotate_right(void)
{
for (idx = stepper_HM; idx < stepper_MAX; idx++)
{
stepper[idx].setRPM(12);
stepper[idx].setSPR(4075.7728395);
stepper[idx].setDirection(CCW);
stepper[idx].rotate(2);
}
}
void rotate_left(void)
{
for (idx = stepper_HM; idx < stepper_MAX; idx++)
{
stepper[idx].setRPM(12);
stepper[idx].setSPR(4075.7728395);
stepper[idx].setDirection(CW);
stepper[idx].rotate(2);
}
}
boolean fahrt_fertig()
{
return stepper[stepper_HM].isDone() && stepper[stepper_VR].isDone()
&& stepper[stepper_VL].isDone();
}
void fahrt_ausfuehren()
{
while ( ! fahrt_fertig() )
{
for (idx = stepper_HM; idx < stepper_MAX; idx++)
{
stepper[idx].run();
// delay(1);
}
}
}
Lesezeichen