Hi Paul
I changed my SLAVE program a bit . It still doesnt seem to work . Would you be able to advise me on how to proceed now .
// I2C communication 1 Master- 1 Slave
// program for slave 4
#include <Wire.h>
#include <AccelStepper.h>
int incomingByte = 0;
int stepperPin = 0;
int stepperInterval = 2;
int stepperCounter = 0;
int stepCount = 0;
// timer variables
long millisec = 0;
long microsec = 0;
// stepper motor pins: STEP, DIRECTION, STEPPER ON/OFF
AccelStepper Stepper1(1,2,3);
void setup() {
Wire.begin(4);
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent);
//Start Serial for debuging purposes
Serial.begin(115200); // USB comm with PC
for(int i = 0;i <54;i++) {
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
// switch stepper chips off
digitalWrite(4,HIGH);
Stepper1.setMaxSpeed(1000);
}
void receiveEvent(int howMany)
{
if (Wire.available() > 0) {
incomingByte = Wire.receive();
}
}
void requestEvent()
{
if(Stepper1.run() == false)
{
if(Stepper1.currentPosition() ==4000)
{digitalWrite(4,HIGH);
Wire.send("yes");
}
}
}
void loop()
{
Stepper1.run();
//Serial.print(" Selection:");Serial.println(incomingByte);
switch(incomingByte) {
case 1: digitalWrite(4,LOW); digitalWrite(3,HIGH); digitalWrite(2,HIGH); //Serial.println("Stepper1: forward");
Serial.println("forward");
Stepper1.setCurrentPosition(0);
Stepper1.setAcceleration(500.0);
Stepper1.moveTo(4000);
break;
case 2: digitalWrite(4,LOW); digitalWrite(3,LOW); digitalWrite(2,HIGH); //Serial.println("Stepper1: backward");
Serial.println("backward");
Stepper1.setCurrentPosition(0);
Stepper1.setAcceleration(500.0);
Stepper1.moveTo(-4000);
break;
}
// switch loop
incomingByte = 0;
} // main loop