Like many people I am really new to programming and doing anything like this, so please bear with me. I have a project in which I turn 3 steppers.
I am using Arduino mega with 3 motorshields and 4dsystems 43pt touch screen. I have already got the system working the way I want, but now I would like to turn all 3 steppers at the same time, obviously having to use Accel Stepper library. My question is there a simple way I can implement Accel Stepper into my current code? Or should I basically just start from scratch with Accel Stepper since my code is so dumbed down? I started putting in everything for Accel Stepper but then stopped when It came to the actual stepping functions. Thank you in advance for any type of help.
Code: Select all
#include <EEPROM.h>
#include <AccelStepper.h>
#include <Wire.h>
#include "utility/Adafruit_PWMServoDriver.h"
#include <Adafruit_MotorShield.h>
#include <genieArduino.h>
Adafruit_MotorShield AFMSbot(0x64);
Adafruit_MotorShield AFMSmid(0x62);
Adafruit_MotorShield AFMStop(0x61);
Adafruit_StepperMotor *myStepper1 = AFMSbot.getStepper(200, 1);
Adafruit_StepperMotor *myStepper2 = AFMSmid.getStepper(200, 1);
Adafruit_StepperMotor *myStepper3 = AFMStop.getStepper(200, 1);
void forwardstep1() {
myStepper1->onestep(FORWARD, DOUBLE);
}
void backwardstep1() {
myStepper1->onestep(BACKWARD, DOUBLE);
}
// wrappers for the second motor!
void forwardstep2() {
myStepper2->onestep(FORWARD, DOUBLE);
}
void backwardstep2() {
myStepper2->onestep(BACKWARD, DOUBLE);
}
// wrappers for the third motor!
void forwardstep3() {
myStepper3->onestep(FORWARD, DOUBLE);
}
void backwardstep3() {
myStepper3->onestep(BACKWARD, DOUBLE);
}
// Now we'll wrap the 3 steppers in an AccelStepper object
AccelStepper stepper1(forwardstep1, backwardstep1);
AccelStepper stepper2(forwardstep2, backwardstep2);
AccelStepper stepper3(forwardstep3, backwardstep3);
int terrain = 0 ;
int fuel = 1 ;
byte tpress;
byte fpress;
int flag;
Genie genie;
#define RESETLINE A10
void setup()
{
Serial1.begin(200000);
genie.Begin(Serial1);
genie.AttachEventHandler(myGenieEventHandler);
pinMode(RESETLINE, OUTPUT);
digitalWrite(RESETLINE, 0);
delay(100);
digitalWrite(RESETLINE, 1);
delay (5000);
genie.WriteContrast(10);
genie.WriteStr(0, GENIE_VERSION);
AFMSbot.begin();
AFMSmid.begin();
AFMStop.begin();
stepper1.setMaxSpeed(100.0);
stepper1.setAcceleration(100.0);
stepper1.moveTo(1050);
stepper2.setMaxSpeed(100.0);
stepper2.setAcceleration(100.0);
stepper2.moveTo(1050);
stepper3.setMaxSpeed(100.0);
stepper3.setAcceleration(100.0);
stepper3.moveTo(1050);
}
void loop()
{
tpress = EEPROM.read(terrain);
fpress = EEPROM.read(fuel);
genie.DoEvents();
}
void myGenieEventHandler(void)
{
genieFrame Event;
genie.DequeueEvent(&Event);
if (Event.reportObject.cmd == GENIE_REPORT_EVENT)
if(Event.reportObject.object == GENIE_OBJ_4DBUTTON)
{
//*******************THIS IS WHERE I STOPPED IMPLEMENTING THE ACCEL_STEPPER......
if (Event.reportObject.index == 2)
{
stepper1->step(1050, BACKWARD, DOUBLE);
stepper1->release();
}
if (Event.reportObject.index == 3)
{
myStepper1->step(1050, FORWARD, DOUBLE);
myStepper1->release();
}
if (Event.reportObject.index == 4)
{
myStepper2->step(1050, BACKWARD, DOUBLE);
myStepper2->release();
}
if (Event.reportObject.index == 5)
{
myStepper2->step(1050, FORWARD, DOUBLE);
myStepper2->release();
}
if (Event.reportObject.index == 6)
{
myStepper3->step(1050, BACKWARD, DOUBLE);
myStepper3->release();
}
if (Event.reportObject.index == 7)
{
myStepper3->step(1050, FORWARD, DOUBLE);
myStepper3->release();
}
if (Event.reportObject.index == 9)
{
EEPROM.write(0,0);
EEPROM.write(1,0);
}
}
if (Event.reportObject.object == GENIE_OBJ_USERBUTTON)
{
if (Event.reportObject.index == 3)
{
if(tpress==1)
{
genie.WriteObject(GENIE_OBJ_FORM, 3, 0);
myStepper1->step(1050, FORWARD, DOUBLE);
myStepper1->release();
myStepper2->step(1050, FORWARD, DOUBLE);
myStepper2->release();
myStepper3->step(1050, FORWARD, DOUBLE);
myStepper3->release();
EEPROM.write(0,0);
genie.WriteObject(GENIE_OBJ_FORM, 2, 0);
}
else if(tpress==2)
{
genie.WriteObject(GENIE_OBJ_FORM, 3, 0);
myStepper1->step(2100, FORWARD, DOUBLE);
myStepper1->release();
myStepper2->step(2100, FORWARD, DOUBLE);
myStepper2->release();
myStepper3->step(2100, FORWARD, DOUBLE);
myStepper3->release();
EEPROM.write(0,0);
genie.WriteObject(GENIE_OBJ_FORM, 2, 0);
}
else if(tpress==0)
{
genie.WriteObject(GENIE_OBJ_FORM, 3, 0);
EEPROM.write(0,0);
genie.WriteObject(GENIE_OBJ_FORM, 2, 0);
}
}
if (Event.reportObject.index == 4)
{
if(tpress==0)
{
myStepper1->step(1050, BACKWARD, DOUBLE);
myStepper1->release();
myStepper2->step(1050, BACKWARD, DOUBLE);
myStepper2->release();
myStepper3->step(1050, BACKWARD, DOUBLE);
myStepper3->release();
EEPROM.write(0,1);
}
else if(tpress==2)
{
myStepper1->step(1050, FORWARD, DOUBLE);
myStepper1->release();
myStepper2->step(1050, FORWARD, DOUBLE);
myStepper2->release();
myStepper3->step(1050, FORWARD, DOUBLE);
myStepper3->release();
EEPROM.write(0,1);
}
else if(tpress==1)
{
EEPROM.write(0,1);
}
}
if (Event.reportObject.index == 5)
{
if(tpress==0)
{
myStepper1->step(2100, BACKWARD, DOUBLE);
myStepper1->release();
myStepper2->step(2100, BACKWARD, DOUBLE);
myStepper2->release();
myStepper3->step(2100, BACKWARD, DOUBLE);
myStepper3->release();
EEPROM.write(0,2);
}
else if(tpress==1)
{
myStepper1->step(1050, BACKWARD, DOUBLE);
myStepper1->release();
myStepper2->step(1050, BACKWARD, DOUBLE);
myStepper2->release();
myStepper3->step(1050, BACKWARD, DOUBLE);
myStepper3->release();
EEPROM.write(0,2);
}
else if(tpress==2)
{
EEPROM.write(0,2);
}
}
if (Event.reportObject.index == 0)
{
if(fpress==1)
{
myStepper1->step(1050, BACKWARD, DOUBLE);
myStepper1->release();
myStepper2->step(1050, BACKWARD, DOUBLE);
myStepper2->release();
myStepper3->step(1050, BACKWARD, DOUBLE);
myStepper3->release();
EEPROM.write(1,0);
}
else if(fpress==2)
{
myStepper1->step(2100, BACKWARD, DOUBLE);
myStepper1->release();
myStepper2->step(2100, BACKWARD, DOUBLE);
myStepper2->release();
myStepper3->step(2100, BACKWARD, DOUBLE);
myStepper3->release();
EEPROM.write(1,0);
}
else if(fpress==0)
{
EEPROM.write(1,0);
}
}
if (Event.reportObject.index == 1)
{
if(fpress==0)
{
myStepper1->step(1050, FORWARD, DOUBLE);
myStepper1->release();
myStepper2->step(1050, FORWARD, DOUBLE);
myStepper2->release();
myStepper3->step(1050, FORWARD, DOUBLE);
myStepper3->release();
EEPROM.write(1,1);
}
else if(fpress==2)
{
myStepper1->step(1050, BACKWARD, DOUBLE);
myStepper1->release();
myStepper2->step(1050, BACKWARD, DOUBLE);
myStepper2->release();
myStepper3->step(1050, BACKWARD, DOUBLE);
myStepper3->release();
EEPROM.write(1,1);
}
else if(fpress==1)
{
EEPROM.write(1,1);
}
}
if (Event.reportObject.index == 2)
{
if(fpress==0)
{
myStepper1->step(2100, FORWARD, DOUBLE);
myStepper1->release();
myStepper2->step(2100, FORWARD, DOUBLE);
myStepper2->release();
myStepper3->step(2100, FORWARD, DOUBLE);
myStepper3->release();
EEPROM.write(1,2);
}
else if(fpress==1)
{
myStepper1->step(1050, FORWARD, DOUBLE);
myStepper1->release();
myStepper2->step(1050, FORWARD, DOUBLE);
myStepper2->release();
myStepper3->step(1050, FORWARD, DOUBLE);
myStepper3->release();
EEPROM.write(1,2);
}
else if(fpress==2)
{
EEPROM.write(1,2);
}
}
}
}