Controlling stepper motor with IR remote

I can't se how those adds could cause that. Have You done any other changes somewhere?
Try this code and activate Serial monitor in the IDE, and set the baud rate to 115200. Then tell what shows up when pressing the remote.

/ www.elegoo.com
//2016.12.12

#include "Stepper.h"
#include "IRremote.h"

/*----- Variables, Pins -----*/
#define STEPS  32   // Number of steps per revolution of Internal shaft
int  Steps2Take;  // 2048 = 1 Revolution
int receiver = 4 ; // Signal Pin of IR receiver to Arduino Digital Pin 6

/*-----( Declare objects )-----*/
// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4

Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'
unsigned long currentPosition; // Added by Railroader

void setup()
{
  irrecv.enableIRIn(); // Start the receiver
  Serial.begin(115200);//open up serial communication.
}

void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?

  {
    ------serial.println(results.value);
    Serial.println(results.value, HEX); / Added by Railroader
    switch (results.value)

    {

      case 0xFFA857: // 1 button pressed
        small_stepper.setSpeed(500); //Max seems to be 500
        Steps2Take  =  256 ;  // Rotate CW
        small_stepper.step(Steps2Take);
        currentPosition += 256;//Added by railroader
        delay(2000);
        break;

      case 0xFF659D: // 2 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  512 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 512;//Added by railroader
        delay(2000);
        break;
      case 0xFF229D: // 3 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  768 ;  // Rotate CCW
        currentPosition += 768;//Added by railroader
        small_stepper.step(Steps2Take);
        delay(2000);
        break;

      case 0xFF449D: // 4 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1024 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1024;//Added by railroader
        delay(2000);
        break;

      case 0xFF666D: // 5 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1280 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1280;//Added by railroader
        delay(2000);
        break;
      case 0xFF385D: // 6 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1536 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1536;//Added by railroader
        delay(2000);
        break;

      case 0xFF764D: // 7 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1792 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1792;//Added by railroader
        delay(2000);
        break;

      case 0xFF843D: // 8 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  2048 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 2048 ;//Added by railroader
        delay(2000);
        break;
      case 0xFF629D : // 9 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  -currentPosition;
        currentPosition = 0;
        small_stepper.step(Steps2Take);
        delay(2000);
        break;


        irrecv.resume(); // receive the next value
        digitalWrite(8, LOW);
        digitalWrite(9, LOW);
        digitalWrite(10, LOW);
        digitalWrite(11, LOW);
    }


  }/*
  }--end main loop -- */
}

16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925
FF629D
16736925

I have only clicked the button once and it keeps repeating those passcode

Try the code below. I added one too much of Serial.print.
You need to press some of the "old" buttons first.
The stepper is considered to be at position zero when the execution starts. Then returning to zero makes no sense, makes no movement.

/ www.elegoo.com
//2016.12.12

#include "Stepper.h"
#include "IRremote.h"

/*----- Variables, Pins -----*/
#define STEPS  32   // Number of steps per revolution of Internal shaft
int  Steps2Take;  // 2048 = 1 Revolution
int receiver = 4 ; // Signal Pin of IR receiver to Arduino Digital Pin 6

/*-----( Declare objects )-----*/
// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4

Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'
unsigned long currentPosition; // Added by Railroader

void setup()
{
  irrecv.enableIRIn(); // Start the receiver
  Serial.begin(115200);//open up serial communication.
}

void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?

  {
    Serial.println(results.value, HEX); / Added by Railroader
    switch (results.value)

    {

      case 0xFFA857: // 1 button pressed
        small_stepper.setSpeed(500); //Max seems to be 500
        Steps2Take  =  256 ;  // Rotate CW
        small_stepper.step(Steps2Take);
        currentPosition += 256;//Added by railroader
        delay(2000);
        break;

      case 0xFF659D: // 2 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  512 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 512;//Added by railroader
        delay(2000);
        break;
      case 0xFF229D: // 3 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  768 ;  // Rotate CCW
        currentPosition += 768;//Added by railroader
        small_stepper.step(Steps2Take);
        delay(2000);
        break;

      case 0xFF449D: // 4 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1024 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1024;//Added by railroader
        delay(2000);
        break;

      case 0xFF666D: // 5 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1280 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1280;//Added by railroader
        delay(2000);
        break;
      case 0xFF385D: // 6 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1536 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1536;//Added by railroader
        delay(2000);
        break;

      case 0xFF764D: // 7 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1792 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1792;//Added by railroader
        delay(2000);
        break;

      case 0xFF843D: // 8 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  2048 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 2048 ;//Added by railroader
        delay(2000);
        break;
      case 0xFF629D : // 9 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  -currentPosition;
        currentPosition = 0;
        small_stepper.step(Steps2Take);
        delay(2000);
        break;


        irrecv.resume(); // receive the next value
        digitalWrite(8, LOW);
        digitalWrite(9, LOW);
        digitalWrite(10, LOW);
        digitalWrite(11, LOW);
    }


  }/*
  }--end main loop -- */
}

The repetition disturbs me. It ought to be there earlier.

Try the code below.

/ www.elegoo.com
//2016.12.12

#include "Stepper.h"
#include "IRremote.h"

/*----- Variables, Pins -----*/
#define STEPS  32   // Number of steps per revolution of Internal shaft
int  Steps2Take;  // 2048 = 1 Revolution
int receiver = 4 ; // Signal Pin of IR receiver to Arduino Digital Pin 6

/*-----( Declare objects )-----*/
// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4

Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'
unsigned long currentPosition; // Added by Railroader

void setup()
{
  irrecv.enableIRIn(); // Start the receiver
  Serial.begin(115200);//open up serial communication.
}

void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?

  {
    Serial.println(results.value, HEX); / Added by Railroader
    switch (results.value)

    {

      case 0xFFA857: // 1 button pressed
        small_stepper.setSpeed(500); //Max seems to be 500
        Steps2Take  =  256 ;  // Rotate CW
        small_stepper.step(Steps2Take);
        currentPosition += 256;//Added by railroader
        delay(2000);
        break;

      case 0xFF659D: // 2 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  512 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 512;//Added by railroader
        delay(2000);
        break;
      case 0xFF229D: // 3 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  768 ;  // Rotate CCW
        currentPosition += 768;//Added by railroader
        small_stepper.step(Steps2Take);
        delay(2000);
        break;

      case 0xFF449D: // 4 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1024 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1024;//Added by railroader
        delay(2000);
        break;

      case 0xFF666D: // 5 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1280 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1280;//Added by railroader
        delay(3000);
        break;
      case 0xFF385D: // 6 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1536 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1536;//Added by railroader
        delay(3000);
        break;

      case 0xFF764D: // 7 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1792 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1792;//Added by railroader
        delay(4000);
        break;

      case 0xFF843D: // 8 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  2048 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 2048 ;//Added by railroader
        delay(4000);
        break;
      case 0xFF629D : // 9 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  -currentPosition;
        currentPosition = 0;
        small_stepper.step(Steps2Take);
        delay(-Steps2Take*3);
        break;
    }

    irrecv.resume(); // receive the next value
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);


  }/*
  }--end main loop -- */
}

IT WORKS!! thank you so much for your help!! I am definitely feeling more confident using an arduino now, I thought it was complete rocket science before lol.

I am soon going to be adding power switch to the circuit by using a driver, so may need your expertise again.

thanks again railroader

My pleasure.
Did You use the very last code? I changed the delays in most cases to be sure the stepper would reach the target before being cut off.

yes I used the last code, I realised I had to press the button a good 4/5 times for the stepper to start turning. It must be cause an using an elegoo board instead of an arduino. Do you think it would be worth while purchasing an real arduino board instead of the replica board?

Elego or other clones.... I have plenty of UNO clones an no one has failed yet.
Know that You need to wait for the stepper delay to end. (The delay after every stepper move execution). Maybe they can be adjusted.
I don't know the lib You used so I guessed on 500 steps per second.
Watch the serial monitor and try using longer press time. I'll check the code but I can't think of anything more.

Maybe I made a quick and faulty change. Try this:

/ www.elegoo.com
//2016.12.12

#include "Stepper.h"
#include "IRremote.h"

/*----- Variables, Pins -----*/
#define STEPS  32   // Number of steps per revolution of Internal shaft
int  Steps2Take;  // 2048 = 1 Revolution
int receiver = 4 ; // Signal Pin of IR receiver to Arduino Digital Pin 6

/*-----( Declare objects )-----*/
// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4

Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'
unsigned long currentPosition; // Added by Railroader

void setup()
{
  irrecv.enableIRIn(); // Start the receiver
  Serial.begin(115200);//open up serial communication.
}

void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?

  {
    Serial.println(results.value, HEX); / Added by Railroader
    switch (results.value)

    {

      case 0xFFA857: // 1 button pressed
        small_stepper.setSpeed(500); //Max seems to be 500
        Steps2Take  =  256 ;  // Rotate CW
        small_stepper.step(Steps2Take);
        currentPosition += 256;//Added by railroader
        delay(2000);
        break;

      case 0xFF659D: // 2 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  512 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 512;//Added by railroader
        delay(2000);
        break;
      case 0xFF229D: // 3 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  768 ;  // Rotate CCW
        currentPosition += 768;//Added by railroader
        small_stepper.step(Steps2Take);
        delay(2000);
        break;

      case 0xFF449D: // 4 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1024 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1024;//Added by railroader
        delay(2000);
        break;

      case 0xFF666D: // 5 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1280 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1280;//Added by railroader
        delay(3000);
        break;
      case 0xFF385D: // 6 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1536 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1536;//Added by railroader
        delay(3000);
        break;

      case 0xFF764D: // 7 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  1792 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 1792;//Added by railroader
        delay(4000);
        break;

      case 0xFF843D: // 8 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  2048 ;  // Rotate CCW
        small_stepper.step(Steps2Take);
        currentPosition += 2048 ;//Added by railroader
        delay(4000);
        break;
      case 0xFF629D : // 9 button pressed
        small_stepper.setSpeed(500);
        Steps2Take  =  -currentPosition;
        currentPosition = 0;
        small_stepper.step(Steps2Take);
        delay(-Steps2Take * 3);
        break;

    }
    irrecv.resume(); // receive the next value
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);

  }/*
  }--end main loop -- */
}

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