标题: ardiuno的电机正反转 [打印本页]

作者: asdzxcqwe    时间: 2017-12-23 14:04
标题: ardiuno的电机正反转
  1. //定义引脚
  2. int Pin0 = 8;
  3. int Pin1 = 9;
  4. int Pin2 = 10;
  5. int Pin3 = 11;

  6. int _step = 0;

  7. boolean dir = false;//正反转

  8. int stepperSpeed = 1;//电机转速,1ms一步
  9. //脉冲总数,或者说步的总数
  10. int stepsum=0;
  11. void setup()

  12. {

  13.   pinMode(Pin0, OUTPUT);
  14.   pinMode(Pin1, OUTPUT);
  15.   pinMode(Pin2, OUTPUT);
  16.   pinMode(Pin3, OUTPUT); }



  17. void loop()
  18. {
  19. //进步机的驱动方式,有八种
  20. switch(_step){
  21.     case 0:
  22.       digitalWrite(Pin0, LOW);
  23.       digitalWrite(Pin1, LOW);
  24.       digitalWrite(Pin2, LOW);
  25.       digitalWrite(Pin3, HIGH);
  26.     break;
  27.     case 1:
  28.       digitalWrite(Pin0, LOW);
  29.       digitalWrite(Pin1, LOW);
  30.       digitalWrite(Pin2, HIGH);
  31.       digitalWrite(Pin3, HIGH);
  32.     break;

  33.     case 2:
  34.       digitalWrite(Pin0, LOW);
  35.       digitalWrite(Pin1, LOW);
  36.       digitalWrite(Pin2, HIGH);
  37.       digitalWrite(Pin3, LOW);
  38.     break;

  39.     case 3:
  40.       digitalWrite(Pin0, LOW);
  41.       digitalWrite(Pin1, HIGH);
  42.       digitalWrite(Pin2, HIGH);
  43.       digitalWrite(Pin3, LOW);
  44.     break;

  45.     case 4:
  46.       digitalWrite(Pin0, LOW);
  47.       digitalWrite(Pin1, HIGH);
  48.       digitalWrite(Pin2, LOW);
  49.       digitalWrite(Pin3, LOW);
  50.     break;

  51.     case 5:
  52.       digitalWrite(Pin0, HIGH);
  53.       digitalWrite(Pin1, HIGH);
  54.       digitalWrite(Pin2, LOW);
  55.       digitalWrite(Pin3, LOW);
  56.       break;

  57.       case 6:
  58.       digitalWrite(Pin0, HIGH);
  59.       digitalWrite(Pin1, LOW);
  60.       digitalWrite(Pin2, LOW);
  61.       digitalWrite(Pin3, LOW);
  62.     break;

  63.     case 7:
  64.       digitalWrite(Pin0, HIGH);
  65.       digitalWrite(Pin1, LOW);
  66.       digitalWrite(Pin2, LOW);
  67.       digitalWrite(Pin3, HIGH);
  68.     break;

  69.     default:
  70.       digitalWrite(Pin0, LOW);
  71.       digitalWrite(Pin1, LOW);
  72.       digitalWrite(Pin2, LOW);
  73.       digitalWrite(Pin3, LOW);
  74.     break;
  75.   }


  76. //判断是正转还是反转
  77.   if(dir)
  78.   {
  79.     _step++;

  80.   }else{

  81.     _step--;
  82.   }

  83. //每八步一个驱动方式的循环
  84.   if(_step>7){
  85.    
  86.     _step=0;

  87.   }

  88.   if(_step<0){
  89.    
  90.     _step=7;

  91.   }
  92.   
  93.   delay(stepperSpeed);

  94. //计算脉冲数,每4096个脉冲停1秒
  95.   stepsum++;
  96.   if(stepsum==4096)
  97.   {
  98.     Serial.println(stepsum);
  99.     stepsum=0;
  100.     delay(1000);
  101.   }

  102. }


复制代码

用ardiuno实现的电机正反转

正反转.doc

18 KB, 下载次数: 18, 下载积分: 黑币 -5

如题


作者: QIUYUQINGH    时间: 2018-1-3 09:03
很有用,学习了
作者: bearadam    时间: 2018-11-20 16:29
很有用,学习了。
作者: 闪闪光光小皮靴    时间: 2018-11-21 18:47
很有用,学习了!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1