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
Code:
digitalWrite(enbl_VL, HIGH);
digitalWrite(enbl_HL, HIGH);
digitalWrite(enbl_VR, HIGH);
digitalWrite(enbl_HR, HIGH)
stromlos geschaltet, nach Deinen ausführungen hätte ich eigentlich das gegenteil erwartet, nämlich "LOW"...
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);
}
}
}
Lesezeichen