Lighting up 4 LEDs when Two Stepper Motors Spin Counter-Clockwise

Hello. I have a conference next week and for one of my competitions, I have to build a device. But anyways, I have two stepper motors connected to ULN2003 drivers and I already programmed the stepper motors to spin in both directions. I will paste the code later. I have the 3.3V Pin of the Arduino connected to a row on the breadboard with jumper wires connecting to 4 LEDs and resistors. The LEDs do light up and the resistors are correct. What I want to do is program the 4 LEDs to light up when the stepper motors spin counter-clockwise and then for the 4 LEDs to turn off when the stepper motor turns clockwise. The code that I already have works for the stepper motors. Here is the code that makes the stepper motors spin:

#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int Steps = 0;
boolean Direction = true;// gre
unsigned long last_time;
unsigned long currentMillis ;
int steps_left=10000;
long time;
void setup()
{
Serial.begin(115200);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// delay(1000);

}
void loop()
{
while(steps_left>0){
currentMillis = micros();
if(currentMillis-last_time>=1000){
stepper(1);
time=time+micros()-last_time;
last_time=micros();
steps_left--;
}
}
Serial.println(time);
Serial.println("Wait...!");
delay(1000);
Direction=!Direction;
steps_left=10000;
}

void stepper(int xw){
for (int x=0;x<xw;x++){
switch(Steps){
case 0:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
case 1:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
break;
case 2:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 3:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 4:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 5:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 6:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 7:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
default:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
}
SetDirection();
}
}
void SetDirection(){
if(Direction==1){ Steps++;}
if(Direction==0){ Steps--; }
if(Steps>7){Steps=0;}
if(Steps<0){Steps=7; }
}
Please help write a program that will turn LEDs on when stepper motors spin counter-clockwise and off when stepper motors spin clockwise. Thanks.

You have zero LED pins defined.

  1. Define four pins for LEDs
  2. Wire LEDs anode to pin, cathode to ground
  3. When your chosen motor direction occurs, write HIGH to the chosen LED pin.

What kind of "competition" lets you bring code written by someone other than you?

1 Like

It's a bit strange to name an output "IN" :slight_smile:

1 Like

The Arduino output pins are named to coincide with the ULN2003 input pins IN1, IN2, IN3, IN4.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.