目录

  • 前言
    • 功能介绍
  • 参考图
    • Arduino Uno Rev3 原理图
  • 接线
  • 效果图
  • 核心代码
    • Arduino IDE
    • mixly
    • 同时控制2个电机
  • 补充
    • Arduino IDE
      • 编译上传
      • 日志信息
    • Mixly
  • 拓展
    • 涂鸦蓝牙mesh模块BT3L+步进电机+Arduino
      • 效果图
      • 源码

前言

本文是根据STM32F103+步进电机28BYJ-48+ULN2003 实现简单的正反转demo这篇文章的拓展,针对此文章的程序进行了Arduino Uno版本的粗略适配,具体细节可以参考这篇文章。
源码参考:
    步进电机28BYJ-48的驱动程序(stm32f103c8t6)
    STM32F103+步进电机28BYJ-48+ULN2003 实现简单的正反转demo
开发板:Arduino Uno Rev3 创客主板

开发环境(编写烧写):Arduino IDE(官网:https://www.arduino.cc/en/software)配合官方USB下载线进行烧写。

图形化编程工具:Mxily

语言:Arduino 语言(类C语言)
官方文档:https://www.arduino.cc/reference/en/

功能介绍

正转半圈,延时3秒,反转半圈,延时3秒。

参考图

Arduino Uno Rev3 原理图

接线

8-11 接 IN1-IN4

效果图

接上下载线供电(顺便烧录程序),图片进行过处理,不是实际效果。

核心代码

Arduino IDE

28BYJ-48_ULN2003_apply_demo.ino

unsigned int forward[4] = {0x03,0x06,0x0c,0x09}; // 正转
unsigned int reverse[4]= {0x03,0x09,0x0c,0x06}; // 反转
int IO_array[4] = {8, 9, 10, 11};
int flag = 0;void SetMotor(unsigned int InputData)
{if(InputData == 0x03){digitalWrite(8, HIGH);digitalWrite(9, HIGH);digitalWrite(10, LOW);digitalWrite(11, LOW);}else if(InputData == 0x06){digitalWrite(8, LOW);digitalWrite(9, HIGH);digitalWrite(10, HIGH);digitalWrite(11, LOW);}else if(InputData == 0x09){digitalWrite(8, HIGH);digitalWrite(9, LOW);digitalWrite(10, LOW);digitalWrite(11, HIGH);}else if(InputData == 0x0c){  digitalWrite(8, LOW);digitalWrite(9, LOW);digitalWrite(10, HIGH);digitalWrite(11, HIGH);}else if(InputData == 0x00){digitalWrite(8, LOW);digitalWrite(9, LOW);digitalWrite(10, LOW);digitalWrite(11, LOW);}
}/*功能:转1/64圈步距角5.625 360/5.625=64 减速比1/64故64*64个脉冲转一圈n 圈数_direction 方向 1正转 非1反转delay_ms delay_ms >= 2
*/
void motor_circle(int n, int _direction, int delay_ms)
{int i, j;for(i = 0; i < n * 8; i++){for(j = 0; j < 4; j++){if(1 == _direction){SetMotor(0x00);SetMotor(forward[j]);}else{SetMotor(0x00);SetMotor(reverse[j]);}delay(delay_ms > 2 ? delay_ms : 2);}}
}void setup() {// put your setup code here, to run once:int i = 0;for( i = 0 ; i < 4 ; i++ ){pinMode(IO_array[i], OUTPUT);}
}void loop() {// put your main code here, to run repeatedly:if(flag){// 电机正转半圈motor_circle(32, 1, 2);flag = 0;}else{// 电机反转半圈motor_circle(32, 0, 2);flag = 1;}delay(3000);
}

mixly

正转有点卡顿。。。莫名其妙

同时控制2个电机

// 自行修改引脚
void SetMotor1(unsigned int InputData)void motor_circle(int n, int _direction, int delay_ms)
{int i, j;for(i = 0; i < n * 8; i++){for(j = 0; j < 4; j++){if(1 == _direction){SetMotor(0x00);SetMotor(forward[j]);SetMotor1(0x00);SetMotor1(forward[j]);}else{SetMotor(0x00);SetMotor(reverse[j]);SetMotor1(0x00);SetMotor1(reverse[j]);}delay(delay_ms > 2 ? delay_ms : 2);}}
}

补充

Arduino IDE

编译上传

日志信息

编译中… 速度不是很快

上传成功0.0

Mixly

拓展

涂鸦蓝牙mesh模块BT3L+步进电机+Arduino

实现手机控制 电机转动,带动小装置控制 模拟按压开关

效果图


源码

unsigned int forward[4] = {0x03,0x06,0x0c,0x09}; // 正转
unsigned int reverse[4]= {0x03,0x09,0x0c,0x06}; // 反转
int IO_array[4] = {8, 9, 10, 11};
int flag = 0;
int temp = 0;
int ble_in = 7;void SetMotor(unsigned int InputData)
{if(InputData == 0x03){digitalWrite(8, HIGH);digitalWrite(9, HIGH);digitalWrite(10, LOW);digitalWrite(11, LOW);}else if(InputData == 0x06){digitalWrite(8, LOW);digitalWrite(9, HIGH);digitalWrite(10, HIGH);digitalWrite(11, LOW);}else if(InputData == 0x09){digitalWrite(8, HIGH);digitalWrite(9, LOW);digitalWrite(10, LOW);digitalWrite(11, HIGH);}else if(InputData == 0x0c){  digitalWrite(8, LOW);digitalWrite(9, LOW);digitalWrite(10, HIGH);digitalWrite(11, HIGH);}else if(InputData == 0x00){digitalWrite(8, LOW);digitalWrite(9, LOW);digitalWrite(10, LOW);digitalWrite(11, LOW);}
}/*功能:转1/64圈步距角5.625 360/5.625=64 减速比1/64故64*64个脉冲转一圈n 圈数_direction 方向 1正转 非1反转delay_ms delay_ms >= 2
*/
void motor_circle(int n, int _direction, int delay_ms)
{int i, j;for(i = 0; i < n * 8; i++){for(j = 0; j < 4; j++){if(1 == _direction){SetMotor(0x00);SetMotor(forward[j]);}else{SetMotor(0x00);SetMotor(reverse[j]);}delay(delay_ms > 2 ? delay_ms : 2);}}
}void setup() {// put your setup code here, to run once:int i = 0;for( i = 0 ; i < 4 ; i++ ){pinMode(IO_array[i], OUTPUT);}pinMode(ble_in,INPUT); //定义蓝牙控制信号脚为输入接口
}void loop() {//    电机正转半圈//    motor_circle(32, 1, 2);//    电机反转半圈//    motor_circle(32, 0, 2);temp = digitalRead(ble_in);//读取数字7 口电平值赋给temp// temp和上一次的flag不同 则执行电机正反转if(temp != flag){flag = temp;motor_circle(8, 1, 2);delay(500);motor_circle(8, 0, 2);}delay(1000);
}

Arduino Uno+步进电机28BYJ-48+ULN2003 实现简单的正反转demo相关推荐

  1. 用 8550 和 ULN2003 驱动小型直流电机正反转

    51 单片机的输出能力有限,带动一两个 LED 还是可以的,带动电动机.继电器等等,就难以承担了. 一般来说,常用的扩充 51 单片机带负载能力的芯片有:75452.MC1413.ULN2003 系列 ...

  2. 【Proteus仿真】Arduino UNO利用Stepper库实现uln2003驱动步进电机转动

    [Proteus仿真]Arduino UNO利用Stepper库实现uln2003驱动步进电机转动 Proteus仿真 Proteus说明 Proteus软件里面的步进电机的步距角默认是90,和代码中 ...

  3. 【Proteus仿真】Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制

    [Proteus仿真]Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制 Proteus仿真演示 功能说明 正反转采用2和3 引脚外部中断,3和4引脚调节加减速. 示例程序代码 ...

  4. 【Proteus仿真】Arduino UNO+ uln2003驱动步进电机+按键启保停控制

    [Proteus仿真]Arduino UNO+ uln2003驱动步进电机+按键启保停控制 Proteus演示 功能说明 加减速采用外部中断引脚2和3实现调速控制,调速方位,110-250,也就是代码 ...

  5. Arduino单片机(三).Arduino UNO系列的简单项目

    1.UNO R3的端口输出实验 1.1 实验介绍 对于单片机中最为经典的控制电路就是流水灯实验,流水灯也称作跑马灯,利用单片机的IO口输出高电平(HIGH)与低电平(LOW)进而控制外部电路中多个LE ...

  6. arduino uno + tb6600 + 42步进电机 自制自动绕线机

    自动绕线机 V1.0 记录分享一下,后续有需要会迭代新版本. 目录 自动绕线机 V1.0 1.  各组件介绍: 1.1  arduino uno :最简洁的控制板. 1.2  tb6600:步进电机控 ...

  7. 【Proteus仿真】Arduino+uln2003驱动步进电机+单按键启保停正反转控制

    [Proteus仿真]Arduino+uln2003驱动步进电机+单按键启保停正反转控制 Proteus仿真 功能实现 采用外部中断来获取按键信息 程序代码 #define LED ( 13 )#de ...

  8. TB5128 + Arduino UNO,更方便控制步进电机

    关于TB5128 步进驱动芯片: 1. 概述     TB5128 是一种采用 PWM 斩波的两相双极步进电机驱动器.内置时钟解码器.     本驱动器采用 BiCD 工艺制造,额定输出为 50 V/ ...

  9. blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器)

    blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器) 本文针对上一篇的<外部按键中断精准控制步进电机起保停,正反转(Arduino+TB6600 ...

  10. blinker控制步进电机起保停,正反转,加减速(Arduino uno+esp8266+TB6600驱动器)

    blinker控制步进电机起保停,正反转,加减速(Arduino uno+esp8266+TB6600驱动器) 本文针对上一篇的<blinker控制步进电机起保停,正反转(Arduino uno ...

最新文章

  1. 自学python可以做什么兼职-一行生财:毕业100天,通过副业赚(挣)到我的第一个10w...
  2. python跟java-Java与Python两大幸存者谁更胜一筹呢
  3. boost::sort模块float_sort 右移函子排序示例
  4. Android Spinnert的使用
  5. 台电t30_数码:台电发布T30平板电脑,10.1英寸/p70处理器/4+64GB内存组合
  6. 最近在忙着做一个加密的项目,还自己找的私活.
  7. C++ 构造函数中抛出异常
  8. [转] 基于C#的波形显示控件的实现
  9. Axure 9.0.0.3704 授权码
  10. 禁止Solaris系统不必要的网络服务
  11. (转)TCP注册端口号大全
  12. 在微型计算机中,ram的特点是___.,2017计算机基础模拟试题「附答案」
  13. 解读人工智能产业的2020:认知AI还未实现,我们仍然正在路上
  14. 关于html中的图片插入
  15. React: 跳转页面+刷新(登陆成功后的动作)
  16. 以太坊质押时代到来,开发者机遇何在?
  17. 再高贵的打工人都得在体检报告前低下高贵的头颅
  18. Java 调用 有道翻译API
  19. mysql创建联合索引_mysql如何创建多个联合索引
  20. 联想安装Ubuntu16.04LTS(双系统)知识点汇总(六个小时才下好

热门文章

  1. 【全志A64/R18】Android平台获取Chip ID
  2. buck dcm占空比计算_Buck知识大总结:模态分析,电感计算,EMI分析等(转)
  3. 2017年全国大学生电子设计竞赛 单相用电器分析监测装置(K题)
  4. js 截取长图(html2canvas),并下载
  5. 安装scipy报错的解决方案
  6. libcef-Vs2017-下载编译第一个libcef3项目
  7. 未来教育计算机书,未来教育计算机二级
  8. 2019年最新从PayPal提现到国内银行的方法(实战教程)!
  9. 结构体定义LNode,*LinkList和typedef struct
  10. pc端ui图片尺寸_PC网页设计尺寸规范