参考:https://www.arduino.cn/thread-75936-1-1.html

知识点:
    步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

    步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)

   正文:
   本文用Arduino 驱动步进电机28BYJ48,没有使用库文件,编写的程序简捷高效。注意,连接成组,在端口4 5 6 7,之后就可以测试了。程序测试通过,没有问题,供学习Arduino和步进电机用。

[kenrobot_code]/*********************************
  功能:驱动28BYJ-48步进电机
  设计:凌晨七點半
  日期:2018.3.25
  连接引脚:分别将28BYJ-48驱动器的IN1 IN2 IN3 IN4连接到
            Arduino Uno R3 4 5 6 7引脚 也就是PORTD 4 5 6 7
*********************************/
//定义连接为PD4 PD5 PD6 PD7

#define ROTATE(x) {PORTD|=x; PORTD&=(x|0x0F);}

//四相单四拍
const char SinBeat[4]={0x80,0x40,0x20,0x10};
//四相双四拍
const char DulBeat1[4]={0xc0,0x60,0x30,0x90};
//四相双八拍
const char DulBeat2[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};

//节拍模式选择
#define MODE DulBeat2
void setup() {
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  Serial.begin(9600);
}
//逆时针旋转
void Anti_Clockwise(int Speed)
{
for(int i=0;i<sizeof(MODE);i++)
{
ROTATE(MODE);
delay(Speed);
}
}
//顺时针旋转
void Clockwise(int Speed)
{
for(int i=sizeof(MODE);i>=0;i--)
{
ROTATE(MODE);
delay(Speed);
}
}
void loop() {

Clockwise(50);
delay(500);
//Serial.println("OK...");

}[/kenrobot_code]

<ignore_js_op>

IMG_20180325_173728.jpg (399.76 KB, 下载次数: 208)

下载附件

2018-3-25 17:39 上传

 

<ignore_js_op>

STEPPER_2018.3.25.zip

2018-4-13 21:03 上传

点击文件名下载附件

 

参考:

/*********************************
  功能:驱动28BYJ-48步进电机
  设计:凌晨七點半
  日期:2018.3.25
  连接引脚:分别将28BYJ-48驱动器的IN1 IN2 IN3 IN4连接到
            Arduino Uno R3 4 5 6 7引脚 也就是PORTD 4 5 6 7
*********************************/
//定义连接为PD4 PD5 PD6 PD7

#define ROTATE(x) {PORTD|=x;PORTD&=(x|0x0F);}
unsigned long Time;
unsigned long End;

//四相单四拍
const char SinBeat[4]={0x80,0x40,0x20,0x10};
//四相双四拍
const char DulBeat1[4]={0xc0,0x60,0x30,0x90};
//四相双八拍
const char DulBeat2[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};

//节拍模式选择
#define MODE SinBeat//DulBeat1
void setup() {
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  Serial.begin(9600);
}
////逆时针旋转
//void Anti_Clockwise(int Speed)
//{
//for(int i=0;i<sizeof(MODE);i++)
//{
// ROTATE(MODE[i]);//{PORTD|=MODE[i];PORTD&=(MODE[i]|0x0F);}
//delay(Speed);
//}
//}
//顺时针旋转
void Clockwise(int Speed)
{
for(int i=sizeof(MODE);i>=0;i--)
{
 ROTATE(MODE[i]);
delay(Speed);
}
}
void loop() {
Time = millis();
do
{
Clockwise(2);
End = millis() - Time;
} while(End < 6000);

delay(25920000); // 一天86400000  三天25920000
 //Serial.println("OK...");

}

arduino中驱动 步进电机的更多相关文章

  1. Arduino ULN2009驱动步进电机

    一.实物图 二.例子代码 注:代码来自老外 http://www.4tronix.co.uk/arduino/Stepper-Motors.php 功能:控制电机正反转 // This Arduino ...

  2. FPGA驱动步进电机

    步进电机 步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受 ...

  3. python代码实现树莓派3b+驱动步进电机

    python代码实现树莓派3b+驱动步进电机 之前买了个树莓派,刚买回来那会儿热情高涨,折腾了一段时间,然后就放那吃灰了.前几天忽然想起来这个东西了,决定再玩玩儿,于是就从某宝上购买了一套步进电机.驱 ...

  4. 使用Arduino Nano驱动Lora模块

    使用Arduino Nano驱动Lora模块 为什么选用Lora 射频通信芯片有很多种,但是一般在同样功耗下,距离没有Lora远;同等范围下,没有Lora节能. Lora通信只适用于低速率,高延时的场 ...

  5. arduino中SCoop库的简单应用案例

    转载:https://www.csdn.net/gather_27/MtTaggzsMDExMS1ibG9n.html arduino中SCoop库的简单应用案例首先这篇文章来在视频https://v ...

  6. Arduino中的setup()和loop()函数

    今天看arduino的源代码,对于arduino中的setup和loop有了新的理解,可能你以前对于这俩个函数就是知道arduino是初始化,而loop是死循环,但是托若你看了Arduino的主函数你 ...

  7. Arduino中hex文件的保存及应用(转)

    源:Arduino中hex文件的保存及应用 arduino在编译.链接.下载之后,hex文件自动删除了,造成软件仿真(如用proteus仿真)及其他单片机板应用的不便.以下是自己实践的小结,与大家分享 ...

  8. 在使用Arduino中遇到的问题(无法使用中文注释、程序无法下载)

    在使用Arduino中遇到的问题: 在用arduino给蓝牙模块供电时,下载程序是下不进去的.即使显示下进去了,其实也是没下进去. 解决方法:拔掉蓝牙模块再下程序,或给蓝牙供电的线上加上一个开关. 在 ...

  9. Arduino中数据类型转换 float/double转换为char 亲测好使,dtostrf()函数

    如何轻松玩转Arduino单片机,当我在进行数据转换的时候,遇到了问题,尝试了C语言和C++中的好多函数,都没有达到将float型数据转换为char型的目的.苦苦查阅资料后,终于找到了一个大神级函数! ...

随机推荐

  1. Java 实例 - 三目条件运算符

    package guyu.day0903; /** * @Author: Fred * @Date: 2020/9/3 10:59 */ public class Demo01 { public st ...

  2. C# .NET容器的源码

    这里有List<T>的源码http://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs

  3. 1090 Highest Price in Supply Chain (25 分)(模拟建树,找树的深度)牛客网过,pat没过

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  4. Q20200511-01 翻转字符串

    需求:做一函数将字符串倒转过来 程序: package test4; public class Reverse { public static String reverse(String origin ...

  5. springboot x.x.x RELEASE pom 第一行报错解决办法

    springboot x.x.x RELEASE pom 第一行报错解决办法 在pom.xml 文件的properties中加入maven jar插件的版本号 <properties> & ...

  6. hyperledger fabric 智能合约开发

    开发步奏: 1.创建教育联盟 2.区块链服务平台自动生成通道id 3.区块链网络服务人员通过命令行在区块链网络中创建对应通道 4.创建相关教育组织 5.邀请相关组织加入联盟 6.区块链网络管理人员通过 ...

  7. wfuzz 安装

    wfuzz 安装 win10 下的wfuzz安装 fuzz下载 https://github.com/xmendez/wfuzz 安装遇到的问题 0x1报错 解决方法: 更新pip python -m ...

  8. Windows7上开启ftp服务器功能

    开启ftp服务功能   1 进入“控制面板”->“程序”->"打开或关闭Windows功能",找到“Internet信息服务”选项 2 将“Internet信息服务”选 ...

  9. Python3实现zip分卷压缩

    Python实现zip分卷压缩 使用 zipfile 库 查看 官方中文文档 利用 Python 压缩 ZIP 文件,我们第一反应是使用 zipfile 库,然而,它的官方文档中却明确标注" ...

  10. Linked List 单向链表

    Linked List 链表的理解 小结 链表是以节点的方式来储存的 每个节点包括 data域:存放数据,next域:指向下一个节点 如图:发现链表的各个节点不一定是连续储存的 链表分为带头节点的链表 ...