mit diesem code kann ich den roboter (zunächst einmal) per IR fernbedienung steuern, hier erstmal die befehle "vorwärts" und "stopp". Die Schrittmotoren werden mit
stromlos geschaltet, nach Deinen ausführungen hätte ich eigentlich das gegenteil erwartet, nämlich "LOW"...Code:digitalWrite(enbl_VL, HIGH); digitalWrite(enbl_HL, HIGH); digitalWrite(enbl_VR, HIGH); digitalWrite(enbl_HR, HIGH)
Code:#include <AccelStepper.h> //#include <LCD.h> //#include <LiquidCrystal_I2C.h> #include <Wire.h> #include <IRremoteInt.h> #include <ir_Lego_PF_BitStreamEncoder.h> #include <IRremote.h> //#include <stepper_standard.h> //LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); uint8_t RECV_PIN = 13; uint8_t taste = 0; uint8_t idx; uint8_t zitter; uint8_t anzahl; #define dirPin_VL 2 #define stepPin_VL 3 #define dirPin_HL 4 #define stepPin_HL 5 #define dirPin_VR 6 #define stepPin_VR 7 #define dirPin_HR 8 #define stepPin_HR 9 #define enbl_VL 40 #define enbl_HL 42 #define enbl_VR 41 #define enbl_HR 43 IRrecv irrecv(RECV_PIN); decode_results results; enum stepper_e { stepper_VL, stepper_HL, stepper_VR, stepper_HR, stepper_MAX }; AccelStepper stepper[stepper_MAX] { AccelStepper(1, stepPin_VL, dirPin_VL), AccelStepper(1, stepPin_HL, dirPin_HL), AccelStepper(1, stepPin_VR, dirPin_VR), AccelStepper(1, stepPin_HR, dirPin_HR) }; void setup() { Serial1.begin(115200); Serial.begin(115200); Serial.println("code----//home/georg/Arduino/outdoor_robo/stepper/test_vier_stepper/remote_vier_stepper_switch_1_enbl"); irrecv.enableIRIn(); // Start the receiver /* lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.setBacklight(HIGH); lcd.print("remot FB schwarz"); lcd.setCursor(0, 1); lcd.print("switch 1"); delay(2000); lcd.clear(); lcd.setBacklight(LOW); */ for (idx = stepper_VL; idx < stepper_MAX; idx++) { stepper[idx].setMaxSpeed(1000); stepper[idx].setSpeed(800); stepper[idx].setAcceleration(30); // stepper[idx].disableOutputs(); // stepper[idx].setDirection(CCW); // stepper[idx].rotate(1); } digitalWrite(enbl_VL, HIGH); digitalWrite(enbl_HL, HIGH); digitalWrite(enbl_VR, HIGH); digitalWrite(enbl_HR, HIGH); } void loop() { if (irrecv.decode(&results)) { taste = results.value; Serial.println(taste); irrecv.resume(); // Receive the next value } tasten_abfrage(); } /***********************************************************/ void tasten_abfrage(void) { switch (taste) { case 151 ://taste 1 große FB { if (taste == 151 ) { Serial.println("szenario_1"); Serial1.println("szenario_1"); /* lcd.setCursor(0, 0); lcd.setBacklight(HIGH); lcd.print("szenario_1"); delay(1000); lcd.clear(); lcd.setBacklight(LOW); */ //fahre szenario_1 delay (1000); break; } } case 103://taste 2 große FB { if (taste == 103) { Serial.println("szenario_2"); Serial1.println("szenario_2"); //fahre szenario_2 delay (1000); break; } } case 79://taste 3 große FB { if (taste == 79) { Serial.println("szenario_3"); Serial1.println("szenario_3"); //fahre szenario_3 delay (1000); break; } } case 207://taste 4 große FB { if (taste == 207) { Serial.println("szenario_4"); Serial1.println("szenario_4"); //fahre szenario_4 delay (1000); break; } } case 253://OK taste, motor stop { if (taste == 253) { alle_stepper_stop(); fahrt_ausfuehren(); break; } } case 61:// rotate rechts große FB { if (taste == 61) { // rechts_drehen(); break; } } case 221:// rotate links große FB { if (taste == 221) { // links_drehen(); break; } } case 157:// fahre vor große FB { if (taste == 157) { /* digitalWrite(enbl_VL, HIGH); digitalWrite(enbl_HL, HIGH); digitalWrite(enbl_VR, HIGH); digitalWrite(enbl_HR, HIGH); */ vorwaerts(); fahrt_ausfuehren(); break; } } case 87:// fahre rückwärts große FB { if (taste == 87) { // rueckwaerts(); break; } } } } /***********************************************************/ void alle_stepper_stop(void) { for (idx = stepper_VL; idx < stepper_MAX; idx++) { stepper[idx].stop(); } digitalWrite(enbl_VL, HIGH); digitalWrite(enbl_HL, HIGH); digitalWrite(enbl_VR, HIGH); digitalWrite(enbl_HR, HIGH); } /***********************************************************/ void vorwaerts(void) { digitalWrite(enbl_VL, LOW); digitalWrite(enbl_HL, LOW); digitalWrite(enbl_VR, LOW); digitalWrite(enbl_HR, LOW); for (idx = stepper_VL; idx < stepper_VR; idx++) { // stepper[idx].moveTo(600); stepper[idx].runSpeed(); stepper[idx].move(-100); // stepper[idx].run(); // stepper[idx].rotate(1); } for (idx = stepper_VR; idx < stepper_MAX; idx++) { // stepper[idx].moveTo(600); stepper[idx].runSpeed(); stepper[idx].move(100); // stepper[idx].setDirection(CW); // stepper[idx].rotate(1); } } /***********************************************************/ void rotate_right_deg(void) { } /**********************************************************/ void rotate_left_deg(void) { } /***********************************************************/ boolean fahrt_fertig() { return stepper[stepper_VL].isRunning() && stepper[stepper_HL].isRunning() && stepper[stepper_VR].isRunning() && stepper[stepper_HR].isRunning(); } /************************************************************/ void fahrt_ausfuehren() { while ( ! fahrt_fertig() ) { for (idx = stepper_VL; idx < stepper_MAX; idx++) { stepper[idx].run(); // delay(1); } } }







Zitieren

Lesezeichen