首页 > 编程语言 >【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块3

【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块3

时间:2023-07-07 17:23:20浏览次数:36  
标签:动手做 run 154 Arduino 电机 motor2 motor1 setSpeed RELEASE

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

 

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十四:L293D四路电机驱动扩展板 motor control shield 马达板 Adafruit Motor Shield模块 Arduino AFMotor 电机扩展板

 

使用Arduino AFMotor驱动四只直流电机

Arduino实验开源代码

 

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十四:L293D四路电机驱动扩展板 motor control shield 马达板 Adafruit Motor Shield模块 Arduino AFMotor 电机扩展板

 1、安装库:百度搜索“AFMotor库”— 下载 — 拷贝到Arduino-libraries 文件夹中

 2、实验之七:使用Arduino AFMotor驱动四只直流电机

*/

#include <AFMotor.h> // 本程序中使用AFMotor库

AF_DCMotor motor1(1); // 这4条语句的作用是建立4个直流电机对象,它们的名称分别是:motor1/2/3/4.

AF_DCMotor motor2(2); // 这四条语句括号中的数字代表各个电机对象所连接在AFMotor扩展板的电机端口号码。

AF_DCMotor motor3(3); // AF_DCMotor motor1(1); 代表motor1对象连接在AFMotor扩展板的M1端口上。

AF_DCMotor motor4(4); // AFMotor电机扩展板最多可以驱动4个直流电机,最少可以驱动1个直流电机。

void setup() {

 motor1.setSpeed(200); // 这4条语句的作用是通过setSpped库函数设置电机运行速度。

 motor2.setSpeed(200); // setSpped库函数中的参数是运行速度参数。

 motor3.setSpeed(200); // 运行速度参数允许范围是0~255。

 motor4.setSpeed(200); // 速度参数越大,运转速度越快。参数为0时电机停止转动。

 motor1.run(RELEASE); // 这4条语句的作用是让4个电机在启动时停止转动

 motor2.run(RELEASE); // run库函数允许使用的关键字参数有RELEASE、FORWARD、BACKWARD

 motor3.run(RELEASE); // 使用关键字RELEASE作为参数使用时,run库函数将会让扩展板停止提供电机运转动力

 motor4.run(RELEASE); // 电机旋转一旦失去动力就会自然的停止转动。

}

void loop() {

 motor1.run(FORWARD); // 这4条语句的作用是利用run库函数控制4个电机"正向"旋转。

 motor2.run(FORWARD); // 这里所谓的“正向”旋转只是一种说法,假如您发现电机旋转方向和您所要的“正向”不一致。

 motor3.run(FORWARD); // 您可以将电机的两个引线从扩展板上断开,然后交换顺序再接到扩展板接口上

 motor4.run(FORWARD); // 这时您会看到同样使用FORWARD关键字作为run库函数的参数,电机的旋转方向却反过来了。

 for (int i = 0; i <= 255; i++) { // 这里使用for循环语句控制4个电机速度由停止逐步加速,最终电机运转达到最大速度。

  motor1.setSpeed(i);     // 在for循环语句的作用下,setSpeed库函数的速度参数i由0逐渐增大,最终达到255。

  motor2.setSpeed(i);     // 因此电机运行速度也是由停止逐渐加速,最终达到最大速度。

  motor3.setSpeed(i);     // 对于一些模型电机来说,当速度参数小于一定数值以后就不能转动了。也就是说,也许您的电机

  motor4.setSpeed(i);     // 在速度参数在小于某一个速度参数数值的时候就无法转动了。这属于正常现象。

  delay(10);          // 具体这个最小值是多少,对于不同的电机来说是不同的。有的可能是50也有的可能是100。

 }                // 换句话说,很可能您的某一个直流电机在速度参数小于50的情况下就无法转动了。

 // 也可能您的另一个直流电机在参数100以下的情况下就无法转动了。

 for (int i = 255; i >= 0; i--) { // 这里使用for循环语句控制4个电机由最大旋转速度逐步减速最终停止旋转。

  motor1.setSpeed(i);     // 这一系列语句的操作与上一段for循环语句类似。唯一区别是上一段for循环控制速度参数i由0涨到255

  motor2.setSpeed(i);     // 而这一段语句控制速度参数i由255减小到0。同样您可能会发现当速度参数没有减小到零的时候,电机就已经

  motor3.setSpeed(i);     // 停止旋转了。这其中的原因在上一段for循环语句中已经介绍了。不在这里赘述了。

  motor4.setSpeed(i);

  delay(10);

 }

 motor1.run(BACKWARD); // 这4条语句的作用是利用run库函数控制4个电机"反向"旋转。

 motor2.run(BACKWARD); // 同样的,这里所谓的“反向”旋转也只是一种说法。这部分程序内容

 motor3.run(BACKWARD); // 与本程序33-36行中的内容十分类似。唯一区别就是使用了“BACKWARD”

 motor4.run(BACKWARD); // 关键字参数来通过库函数run控制电机“反向”旋转。

 for (int i = 0; i <= 255; i++) { // 利用for循环语句控制速度参数i由小到大

  motor1.setSpeed(i);     // 电机也会以“反向”旋转的方式由停止逐步达到最大速度

  motor2.setSpeed(i);

  motor3.setSpeed(i);

  motor4.setSpeed(i);

  delay(10);

 }

 for (int i = 255; i >= 0; i--) { // 利用for循环语句控制速度参数i由大到小

  motor1.setSpeed(i);     // 电机也会以“反向”旋转的方式由最大速度逐步减小到停止

  motor2.setSpeed(i);

  motor3.setSpeed(i);

  motor4.setSpeed(i);

  delay(10);

 }

 motor1.run(RELEASE);  // 这四条语句作用是使用关键字RELEASE作为run函数的参数。

 motor2.run(RELEASE);  // 在这种情况下,AFMotor扩展板将会停止为电机旋转提供动力。

 motor3.run(RELEASE);  // 电机也就会自然的停止转动。

 motor4.run(RELEASE);  // 本段程序后面的delay(1000)的作用就是让4个电机保持无旋转动力状态1秒钟

 delay(1000);

}

  

Arduino AFMotor 电机扩展板实验场景图

 

 

补充实验

实验之八:测试M1M2电机

Arduino实验开源代码

 

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十四:L293D四路电机驱动扩展板 motor control shield 马达板

 Adafruit Motor Shield模块 Arduino AFMotor 电机扩展板

 1、安装库:IDE—工具—管理库—搜索“Servo”—安装

 2、实验之八:测试M1M2电机

*/



#include <AFMotor.h>

AF_DCMotor motor1(1);

AF_DCMotor motor2(2);

void setup() {

 Serial.begin(9600);

 Serial.println("测试M1M2电机!");

 // turn on motor

 motor1.setSpeed(200);

 motor2.setSpeed(200);

 motor1.run(RELEASE);

 motor2.run(RELEASE);

}

void loop() {

 uint8_t i;

 Serial.println("正转");

 motor1.run(FORWARD);

 motor2.run(FORWARD);

 for (i = 0; i < 255; i++) {

  motor1.setSpeed(i);

  motor2.setSpeed(i);

  delay(10);

 }

 for (i = 255; i != 0; i--) {

  motor1.setSpeed(i);

  motor2.setSpeed(i);

  delay(10);

 }

 Serial.println("反转");

 motor1.run(BACKWARD);

 motor2.run(BACKWARD);

 for (i = 0; i < 255; i++) {

  motor1.setSpeed(i);

  motor2.setSpeed(i);

  delay(10);

 }

 for (i = 255; i != 0; i--) {

  motor1.setSpeed(i);

  motor2.setSpeed(i);

  delay(10);

 }

 Serial.println("断电一秒");

 motor1.run(RELEASE);

 motor2.run(RELEASE);

 delay(1000);

}

  实验串口返回情况

 

AFMotor电机驱动扩展板使用图形编程

【mind+用户库】第三方库方案

先下载安装Mind+

链接:http://mindplus.cc/download.html

打开Mind+,进入“扩展”

 

进入“用户库”

 

在用户库中搜索“hockel”

 

添加的 AFMotor模块

 

AFMotor电机驱动扩展板积木列表

 

用图形编程驱动四只直流电机

 

实验之九:测试M1M2M3M4电机前进与后退

Arduino实验开源代码

 

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十四:L293D四路电机驱动扩展板 motor control shield 马达板 

Adafruit Motor Shield模块 Arduino AFMotor 电机扩展板

 1、安装库:百度搜索“AFMotor库”— 下载 — 拷贝到Arduino-libraries 文件夹中

 2、实验之九:测试M1M2M3M4电机前进与后退

*/



#include <AFMotor.h>

// 创建对象

AF_DCMotor motor1(1);

AF_DCMotor motor2(2);

AF_DCMotor motor3(3);

AF_DCMotor motor4(4);

// 主程序开始

void setup() {

}

void loop() {

 motor1.setSpeed(200);

 motor1.run(FORWARD);

 motor2.setSpeed(200);

 motor2.run(FORWARD);

 motor3.setSpeed(200);

 motor3.run(FORWARD);

 motor4.setSpeed(200);

 motor4.run(FORWARD);

 delay(2000);

  

 motor1.setSpeed(0);

 motor1.run(RELEASE);

 motor2.setSpeed(0);

 motor2.run(RELEASE);

 motor3.setSpeed(0);

 motor3.run(RELEASE);

 motor4.setSpeed(0);

 motor4.run(RELEASE);

 delay(1000);

  

 motor1.setSpeed(200);

 motor1.run(BACKWARD);

 motor2.setSpeed(200);

 motor2.run(BACKWARD);

 motor3.setSpeed(200);

 motor3.run(BACKWARD);

 motor4.setSpeed(200);

 motor4.run(BACKWARD);

 delay(2000);

  

 motor1.setSpeed(0);

 motor1.run(RELEASE);

 motor2.setSpeed(0);

 motor2.run(RELEASE);

 motor3.setSpeed(0);

 motor3.run(RELEASE);

 motor4.setSpeed(0);

 motor4.run(RELEASE);

 delay(1000);

}

  

实验开源仿真编程(Linkboy V4.62)

 

用这款电机驱动扩展板做了一辆麦克纳姆轮小车

 

麦克纳姆轮车子运动模式图

 

实验仿真编程(Linkboy V4.62)之二

 

使用 AFMotor电机扩展板的麦克纳姆轮小车(视频)
https://v.youku.com/v_show/id_XNTAzNDYyMzE1Mg==.html?spm=a2hzp.8253869.0.0      

标签:动手做,run,154,Arduino,电机,motor2,motor1,setSpeed,RELEASE
From: https://www.cnblogs.com/eagler8/p/17535575.html

相关文章

  • 【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块2
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(136)---0.91寸OLED液晶屏模块5
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • Arduino
       intbuzzer=8;//Assignbuzzertopin8intnote=1000;//Setthepitchforthebuzzertone#defineLED_PIN12inttimeUnit=100;//Thisvariablewillbeusedtomeasuredots,dashes,breaks,andpausescharinput;//Variable......
  • 使用Arduino制作摩尔斯电码收发器
       摩尔斯电码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。在今天,国际摩尔斯电码依然被使用着。比如,摩尔斯电码最广为人知的用法发送求救信号SOS,SOS信号的组合方式为:。再比如,假设我们通过摩尔斯电码发送“Arduino”,组合方式为:“.-.-.-....-..-.—”......
  • Arduino 麦克风声音传感器指南
    麦克风声音传感器麦克风声音传感器,顾名思义,检测声音。它可以测量声音的响度。这些传感器的种类繁多。 在下图中,您可以看到Arduino最常用的。最左边是KY-038,右边是LM393麦克风声音传感器。两个传感器模块都有一个内置电位器,用于调节数字输出引脚的灵敏度。去哪买?您可以......
  • 如何使用Arduino创建摩尔斯电码生成器
    摩尔斯电码工作原理摩尔斯电码发明于19世纪,使用非常简单的长短脉冲序列(通常为电和划)来远距离发送消息。通过将字母表中的字母编码为电和划的组合,信息可以只用一个单一的电子或声音信号来表达。为了说明这是如何工作的,我们将使用一个简单的蜂鸣器将文本转换为可听的摩尔斯电码信......
  • 【雕爷学编程】Arduino动手做(136)---0.91寸OLED液晶屏模块3
    0.91寸OLED模块引脚说明GND------地线VCC------电源(因为模块内部自带稳压,所以3.3~5V供电都是ok的)SDA------I2C数据线(接A4)SCL  ------I2C时钟线(接A5)(可以看到模块后面有一个U2芯片,就是用来稳压的) 项目之九:综合测试,中文显示Arduino实验开源代码 /*【Ardu......
  • Energia 与 arduino 有啥联系
    Energia是一个开源项目,旨在为基于TexasInstruments(TI)微控制器的开发提供类似Arduino的编程环境。它允许使用Arduino编程语言和库来开发基于TI微控制器的项目。Energia与Arduino有以下联系:1.编程语言:Energia使用与Arduino相同的编程语言,即基于C/C++的Arduino编程语言。这意味着......
  • Arduino 控制激光测距 4M
    VL53L0X飛時測距模組通常有6隻接腳,只需要接電源和I2C腳。ArduinoUno板的接線示範:安裝Arduino版的VL53L0X程式庫選擇ArduinoIDE主功能表的「草稿碼→匯入程式庫→程式庫管理員」,在「程式庫管理員」中搜尋“VL53L0X ”關鍵字,即可找到相關程式庫,常見的兩個程式庫分別是Adafrui......