Advertisement
DjKammo

stepper

Oct 5th, 2020
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.68 KB | None | 0 0
  1. #include <IRremote.h>
  2. int RECV_PIN = 5;//The definition of the infrared receiver pin 5
  3. int Pin0 = 8;//definition digital 8 pins as pin to control the IN1 (ULN24L01)
  4. int Pin1 = 9;//definition digital 9 pins as pin to control the IN2 (ULN24L01)
  5. int Pin2 = 10;//definition digital 10 pins as pin to control the IN3 (ULN24L01)
  6. int Pin3 = 11;//definition digital 11 pins as pin to control the IN4 (ULN24L01)
  7.  
  8. int _step = 512;
  9. int _speed = 1;
  10. IRrecv irrecv(RECV_PIN);
  11. decode_results results;
  12. int dir;
  13. void setup()
  14. {
  15.    pinMode(Pin0, OUTPUT);//Set digital 8 port mode, the OUTPUT for the output
  16.    pinMode(Pin1, OUTPUT);//Set digital 9 port mode, the OUTPUT for the output
  17.    pinMode(Pin2, OUTPUT);//Set digital 10 port mode, the OUTPUT for the output
  18.    pinMode(Pin3, OUTPUT);//Set digital 11 port mode, the OUTPUT for the output
  19.    irrecv.enableIRIn(); //Initialization infrared receiver
  20. }
  21.  
  22. void loop()
  23. {
  24.   if (irrecv.decode(&results)) {
  25.     switch(results.value){
  26.     case 0xF076C13B/*-*/:
  27.                         dir = 1;
  28.                         break;
  29.     case 0xA3C8EDDB/*+*/:
  30.                         dir = 0;
  31.                         break;
  32.     case 0xC101E57B/*0*/:
  33.                         Speed(15); //Stepper motor speed = 1 slow  (note:speed from 1 to 15)
  34.                         Step(0);   //Stepper motor stop  
  35.                         break;
  36.     case 0x9716BE3F/*1*/:
  37.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  38.                         if(dir==0){
  39.                           Step(512);//Stepper motor forward 512 steps ---- 360 angle  
  40.                         }else{
  41.                           Step(-512);//Stepper motor backward 512 steps ---- 360 angle
  42.                         }                      
  43.                         break;
  44.     case 0x3D9AE3F7/*2*/:
  45.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  46.                         if(dir==0){
  47.                           Step(1024);//Stepper motor forward 1024 steps ---- 2*360 angle
  48.                         }else{
  49.                           Step(-1024);//Stepper motor backward 1024 steps ---- 2*360 angle
  50.                         }
  51.                         break;
  52.     case 0x6182021B/*3*/:
  53.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  54.                         if(dir==0){
  55.                           Step(1536);//Stepper motor forward 1536 steps ---- 3*360 angle
  56.                         }else{
  57.                           Step(-1536);//Stepper motor backward 1536 steps ---- 3*360 angle
  58.                         }
  59.                         break;
  60.     case 0x8C22657B/*4*/:  
  61.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  62.                         if(dir==0){
  63.                           Step(2048);//Stepper motor forward 2048 steps ---- 4*360 angle
  64.                         }else{
  65.                           Step(-2048);//Stepper motor backward 2048 steps ---- 4*360 angle
  66.                         }
  67.                         break;
  68.     case 0x488F3CBB/*5*/:
  69.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  70.                         if(dir==0){
  71.                           Step(2560);//Stepper motor forward 2560 steps ---- 5*360 angle
  72.                         }else{
  73.                           Step(-2560);//Stepper motor backward 2560 steps ---- 5*360 angle
  74.                         }
  75.                         break;
  76.     case 0x449E79F/*6*/:
  77.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  78.                         if(dir==0){
  79.                           Step(3072);//Stepper motor forward 3072 steps ---- 6*360 angle
  80.                         }else{
  81.                           Step(-3072);//Stepper motor backward 3072 steps ---- 6*360 angle
  82.                         }
  83.                         break;
  84.     case 0x32C6FDF7/*7*/:  
  85.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  86.                         if(dir==0){                      
  87.                           Step(3584);//Stepper motor forward 3584 steps ---- 7*360 angle
  88.                         }else{
  89.                           Step(-3584);//Stepper motor backward 3584 steps ---- 7*360 angle
  90.                         }
  91.                         break;
  92.     case 0x1BC0157B/*8*/:
  93.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  94.                         if(dir){
  95.                         Step(4096);//Stepper motor forward 4096 steps ---- 8*360 angle
  96.                         }else{
  97.                         Step(-4096);//Stepper motor backward 4096 steps ---- 8*360 angle
  98.                         }
  99.                         break;
  100.     case 0x3EC3FC1B/*9*/:
  101.                         Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
  102.                         if(dir==0){
  103.                         Step(4608);//Stepper motor forward 4608 steps ---- 9*360 angle  
  104.                         }else{
  105.                         Step(-4608);//Stepper motor backward 4608 steps ---- 9*360 angle
  106.                         }
  107.                         break;
  108.     default :
  109.              Step(0);   //Stepper motor stop
  110.              break;
  111.     }        
  112.     irrecv.resume(); // Receiving the next value
  113.   }  
  114. }
  115. void Speed(int stepperspeed)//set Stepper speed
  116. {
  117.     _speed = 15 - stepperspeed;
  118.     if( _speed<1){
  119.      _speed = 1;
  120.     }
  121.     if( _speed>15){
  122.      _speed = 15;
  123.     }
  124. }
  125. void Step(int _step)//Stepper motor rotation
  126. {
  127.   if(_step>=0){  // Stepper motor forward
  128.     for(int i=0;i<_step;i++){  
  129.       setStep(1, 0, 0, 1);
  130.       delay(_speed);
  131.       setStep(1, 0, 0, 0);
  132.       delay(_speed);
  133.       setStep(1, 1, 0, 0);
  134.       delay(_speed);
  135.       setStep(0, 1, 0, 0);
  136.       delay(_speed);
  137.       setStep(0, 1, 1, 0);
  138.       delay(_speed);
  139.       setStep(0, 0, 1, 0);
  140.       delay(_speed);
  141.       setStep(0, 0, 1, 1);
  142.       delay(_speed);
  143.       setStep(0, 0, 0, 1);
  144.       delay(_speed);
  145.     }
  146.   }else{ // Stepper motor backward
  147.      for(int i=_step;i<0;i++){  
  148.       setStep(0, 0, 0, 1);
  149.       delay(_speed);
  150.       setStep(0, 0, 1, 1);
  151.       delay(_speed);
  152.       setStep(0, 0, 1, 0);
  153.       delay(_speed);
  154.       setStep(0, 1, 1, 0);
  155.       delay(_speed);
  156.       setStep(0, 1, 0, 0);
  157.       delay(_speed);
  158.       setStep(1, 1, 0, 0);
  159.       delay(_speed);
  160.       setStep(1, 0, 0, 0);
  161.       delay(_speed);
  162.       setStep(1, 0, 0, 1);
  163.       delay(_speed);
  164.     }
  165.    }
  166. }
  167. void setStep(int a, int b, int c, int d)  
  168. {  
  169.     digitalWrite(Pin0, a);    
  170.     digitalWrite(Pin1, b);    
  171.     digitalWrite(Pin2, c);    
  172.     digitalWrite(Pin3, d);    
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement