Arduino Uno+步进电机28BYJ-48+ULN2003 实现简单的正反转demo
目录
- 前言
- 功能介绍
- 参考图
- 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相关推荐
- 用 8550 和 ULN2003 驱动小型直流电机正反转
51 单片机的输出能力有限,带动一两个 LED 还是可以的,带动电动机.继电器等等,就难以承担了. 一般来说,常用的扩充 51 单片机带负载能力的芯片有:75452.MC1413.ULN2003 系列 ...
- 【Proteus仿真】Arduino UNO利用Stepper库实现uln2003驱动步进电机转动
[Proteus仿真]Arduino UNO利用Stepper库实现uln2003驱动步进电机转动 Proteus仿真 Proteus说明 Proteus软件里面的步进电机的步距角默认是90,和代码中 ...
- 【Proteus仿真】Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制
[Proteus仿真]Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制 Proteus仿真演示 功能说明 正反转采用2和3 引脚外部中断,3和4引脚调节加减速. 示例程序代码 ...
- 【Proteus仿真】Arduino UNO+ uln2003驱动步进电机+按键启保停控制
[Proteus仿真]Arduino UNO+ uln2003驱动步进电机+按键启保停控制 Proteus演示 功能说明 加减速采用外部中断引脚2和3实现调速控制,调速方位,110-250,也就是代码 ...
- Arduino单片机(三).Arduino UNO系列的简单项目
1.UNO R3的端口输出实验 1.1 实验介绍 对于单片机中最为经典的控制电路就是流水灯实验,流水灯也称作跑马灯,利用单片机的IO口输出高电平(HIGH)与低电平(LOW)进而控制外部电路中多个LE ...
- arduino uno + tb6600 + 42步进电机 自制自动绕线机
自动绕线机 V1.0 记录分享一下,后续有需要会迭代新版本. 目录 自动绕线机 V1.0 1. 各组件介绍: 1.1 arduino uno :最简洁的控制板. 1.2 tb6600:步进电机控 ...
- 【Proteus仿真】Arduino+uln2003驱动步进电机+单按键启保停正反转控制
[Proteus仿真]Arduino+uln2003驱动步进电机+单按键启保停正反转控制 Proteus仿真 功能实现 采用外部中断来获取按键信息 程序代码 #define LED ( 13 )#de ...
- TB5128 + Arduino UNO,更方便控制步进电机
关于TB5128 步进驱动芯片: 1. 概述 TB5128 是一种采用 PWM 斩波的两相双极步进电机驱动器.内置时钟解码器. 本驱动器采用 BiCD 工艺制造,额定输出为 50 V/ ...
- blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器)
blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器) 本文针对上一篇的<外部按键中断精准控制步进电机起保停,正反转(Arduino+TB6600 ...
- blinker控制步进电机起保停,正反转,加减速(Arduino uno+esp8266+TB6600驱动器)
blinker控制步进电机起保停,正反转,加减速(Arduino uno+esp8266+TB6600驱动器) 本文针对上一篇的<blinker控制步进电机起保停,正反转(Arduino uno ...
最新文章
- 自学python可以做什么兼职-一行生财:毕业100天,通过副业赚(挣)到我的第一个10w...
- python跟java-Java与Python两大幸存者谁更胜一筹呢
- boost::sort模块float_sort 右移函子排序示例
- Android Spinnert的使用
- 台电t30_数码:台电发布T30平板电脑,10.1英寸/p70处理器/4+64GB内存组合
- 最近在忙着做一个加密的项目,还自己找的私活.
- C++ 构造函数中抛出异常
- [转] 基于C#的波形显示控件的实现
- Axure 9.0.0.3704 授权码
- 禁止Solaris系统不必要的网络服务
- (转)TCP注册端口号大全
- 在微型计算机中,ram的特点是___.,2017计算机基础模拟试题「附答案」
- 解读人工智能产业的2020:认知AI还未实现,我们仍然正在路上
- 关于html中的图片插入
- React: 跳转页面+刷新(登陆成功后的动作)
- 以太坊质押时代到来,开发者机遇何在?
- 再高贵的打工人都得在体检报告前低下高贵的头颅
- Java 调用 有道翻译API
- mysql创建联合索引_mysql如何创建多个联合索引
- 联想安装Ubuntu16.04LTS(双系统)知识点汇总(六个小时才下好
热门文章
- 【全志A64/R18】Android平台获取Chip ID
- buck dcm占空比计算_Buck知识大总结:模态分析,电感计算,EMI分析等(转)
- 2017年全国大学生电子设计竞赛 单相用电器分析监测装置(K题)
- js 截取长图(html2canvas),并下载
- 安装scipy报错的解决方案
- libcef-Vs2017-下载编译第一个libcef3项目
- 未来教育计算机书,未来教育计算机二级
- 2019年最新从PayPal提现到国内银行的方法(实战教程)!
- 结构体定义LNode,*LinkList和typedef struct
- pc端ui图片尺寸_PC网页设计尺寸规范