stepper 28BYJ-48 & Photoelectric sensor OKY3276

Hi,
something does not work - pls help. I want to run 10 stepper motors and control them with photoelectric sensor. So I have 10 sensors (one for each stepper motor) and want to stop a stepper motor (entirely not just as long as the sensor is HIGH) as soon as the photoelectric sensor gets a HIGH signal. then the stepper motor has to stop.

it seems the loop is too slow to make the stepper move? or do I miss something else? when I use this code the stepper does not move. sensor does give me a HIGH signal in the monitor.

so please give me some advice. thanks!!

#include <AccelStepper.h>

// pins definition

#define sensor1 40 // pin x
int sensorval1 = 0; // 0 muss bleiben
#define sensor2 41 //pin x
int sensorval2 = 0;
#define sensor3 42 //pin x
int sensorval3 = 0;
#define sensor4 43 //pin x
int sensorval4 = 0;
#define sensor5 44 //pin x
int sensorval5 = 0;
#define sensor6 45 //pin x
int sensorval6 = 0;
#define sensor7 46 //pin x
int sensorval7 = 0;
#define sensor8 47 //pin x
int sensorval8 = 0;
#define sensor9 48 //pin x
int sensorval9 = 0;
#define sensor10 49 //pin x
int sensorval10 = 0;

// Define some steppers and the pins you will use

AccelStepper stepper1(AccelStepper::FULL4WIRE, 1, 2, 3, 4);
AccelStepper stepper2(AccelStepper::FULL4WIRE, 5, 6, 7, 8);
AccelStepper stepper3(AccelStepper::FULL4WIRE, 9, 10, 11, 12);
AccelStepper stepper4(AccelStepper::FULL4WIRE, 13, 14, 15, 16);
AccelStepper stepper5(AccelStepper::FULL4WIRE, 17, 18, 19, 20);
AccelStepper stepper6(AccelStepper::FULL4WIRE, 21, 22, 23, 24);
AccelStepper stepper7(AccelStepper::FULL4WIRE, 25, 26, 27, 28);
AccelStepper stepper8(AccelStepper::FULL4WIRE, 29, 30, 31, 32);
AccelStepper stepper9(AccelStepper::FULL4WIRE, 33, 34, 35, 36);
AccelStepper stepper10(AccelStepper::FULL4WIRE, 37, 38, 39, 40);
void setup()
{
Serial.begin(9600);
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
pinMode(sensor4, INPUT);
pinMode(sensor5, INPUT);
pinMode(sensor6, INPUT);
pinMode(sensor7, INPUT);
pinMode(sensor8, INPUT);
pinMode(sensor9, INPUT);
pinMode(sensor10,INPUT);
delay(10);

stepper1.setMaxSpeed(20.0);
stepper1.setAcceleration(100.0);
stepper1.move(1000000);

stepper2.setMaxSpeed(20.0);
stepper2.setAcceleration(100.0);
stepper2.move(1000000);

stepper3.setMaxSpeed(20.0);
stepper3.setAcceleration(100.0);
stepper3.move(1000000);

stepper4.setMaxSpeed(20.0);
stepper4.setAcceleration(100.0);
stepper4.move(1000000);

stepper5.setMaxSpeed(20.0);
stepper5.setAcceleration(100.0);
stepper5.move(1000000);

stepper6.setMaxSpeed(20.0);
stepper6.setAcceleration(100.0);
stepper6.move(1000000);

stepper7.setMaxSpeed(20.0);
stepper7.setAcceleration(100.0);
stepper7.move(1000000);

stepper8.setMaxSpeed(20.0);
stepper8.setAcceleration(100.0);
stepper8.move(1000000);

stepper9.setMaxSpeed(20.0);
stepper9.setAcceleration(100.0);
stepper9.move(1000000);

stepper10.setMaxSpeed(20.0);
stepper10.setAcceleration(100.0);
stepper10.move(1000000);
delay(10);
}
void loop()
{
Serial.println("checkt Sensor Value");
sensorval1 = digitalRead(sensor1);
Serial.print(sensorval1);
Serial.print(" - ");
sensorval2 = digitalRead(sensor2);
Serial.print(sensorval2);
Serial.print(" - ");
sensorval3 = digitalRead(sensor3);
Serial.print(sensorval3);
Serial.print(" - ");
sensorval4 = digitalRead(sensor4);
Serial.print(sensorval4);
Serial.print(" - ");
sensorval5 = digitalRead(sensor5);
Serial.print(sensorval5);
Serial.print(" - ");
sensorval6 = digitalRead(sensor6);
Serial.print(sensorval6);
Serial.print(" - ");
sensorval7 = digitalRead(sensor7);
Serial.print(sensorval7);
Serial.print(" - ");
sensorval8 = digitalRead(sensor8);
Serial.print(sensorval8);
Serial.print(" - ");
sensorval9 = digitalRead(sensor9);
Serial.print(sensorval9);
Serial.print(" - ");
sensorval10 = digitalRead(sensor10);
Serial.print(sensorval10);
Serial.print(" - ");

Serial.println();

stepper1.runSpeed();
Serial.println("Motor läuft");
stepper2.runSpeed();
stepper3.runSpeed();
stepper4.runSpeed();
stepper5.runSpeed();
stepper6.runSpeed();
stepper7.runSpeed();
stepper8.runSpeed();
stepper9.runSpeed();
stepper10.runSpeed();
delay(10);

beginning:
sensorval1 = digitalRead(sensor1);
if (sensorval1 == 1 ) {
Serial.println("Sensor1 HIGH");
stepper1.stop();
goto next;
}
next:
sensorval2 = digitalRead(sensor2);
if (sensorval2 == 1 ) {
Serial.println("Sensor2 HIGH");
stepper2.stop();
goto next2;
}
next2:
sensorval3 = digitalRead(sensor3);
if (sensorval3 == 1 ) {
Serial.println("Sensor3 HIGH");
stepper3.stop();
goto next3;
}
next3:
sensorval4 = digitalRead(sensor4);
if (sensorval4 == 1 ) {
Serial.println("Sensor4 HIGH");
stepper4.stop();
goto next4;
}
next4:
sensorval5 = digitalRead(sensor5);
if (sensorval5 == 1 ) {
Serial.println("Sensor5 HIGH");
stepper5.stop();
goto next5;
}
next5:
sensorval6 = digitalRead(sensor6);
if (sensorval6 == 1 ) {
Serial.println("Sensor6 HIGH");
stepper6.stop();
goto next6;
}
next6:
sensorval7 = digitalRead(sensor7);
if (sensorval7 == 1 ) {
Serial.println("Sensor7 HIGH");
stepper7.stop();
goto next7;
}
next7:
sensorval8 = digitalRead(sensor8);
if (sensorval8 == 1 ) {
Serial.println("Sensor8 HIGH");
stepper8.stop();
goto next8;
}
next8:
sensorval9 = digitalRead(sensor9);
if (sensorval9 == 1 ) {
Serial.println("Sensor9 HIGH");
stepper9.stop();
goto next9;
}
next9:
sensorval10 = digitalRead(sensor10);
if (sensorval10 == 1 ) {
Serial.println("Sensor10 HIGH");
stepper10.stop();
goto beginning;
}
goto beginning;

}

when I use this code the stepper does not move. sensor does give me a HIGH signal in the monitor.

looks like this code will stop the motors whenever the sensor is read as HIGH.

since your i/o pin is configured a INPUT and not INPUT_PULLUP, how is each sensor wired? (assume the sensor is a photo-transistor that pulls the input either high or low when active)

except for "beginning" the other gotos server no purpose.

why isn't the code in loop preceding beginning in setup since you seem to only want it to execute once?