找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4010|回复: 3
打印 上一主题 下一主题
收起左侧

ardiuno的电机正反转

[复制链接]
跳转到指定楼层
楼主
ID:236761 发表于 2017-12-23 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  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

如题

评分

参与人数 1黑币 +4 收起 理由
QIUYUQINGH + 4 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:270560 发表于 2018-1-3 09:03 | 只看该作者
很有用,学习了
回复

使用道具 举报

板凳
ID:429997 发表于 2018-11-20 16:29 | 只看该作者
很有用,学习了。
回复

使用道具 举报

地板
ID:430734 发表于 2018-11-21 18:47 | 只看该作者
很有用,学习了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表