首页 > 其他分享 >【ROS2机器人入门到实战】电机控制之正反转实验

【ROS2机器人入门到实战】电机控制之正反转实验

时间:2023-09-07 16:06:07浏览次数:42  
标签:之正 入门 AIN2 引脚 digitalWrite 电机 LOW ROS2 AIN1


3.电机控制之正反转实验

写在前面

  1. 当前平台文章汇总地址:ROS2机器人从入门到实战
  2. 获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取
  3. 程配套机器人开发平台:两驱版| 四驱版
  4. 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn

你好,我是小鱼。前面说到通过控制对应的IO电平变换即可完成对电机正反转的控制,本节我们尝试编写代码,进行实验。

一、新建工程

新建example21_motor_direction_control

【ROS2机器人入门到实战】电机控制之正反转实验_ROS2

二、编写代码

根据第前面硬件控制章节学到的内容可知,控制IO电平只需要使用pinModedigitalWrite相关函数即可。

/**
 * @file main.cpp
 * @author
 * @brief 电机正反转控制
 * @version 0.1
 * @date 2022-12-19
 *
 * @copyright Copyright (c) 2022
 *
 */

#include <Arduino.h>

#define AIN1 23 // 电机驱动模块AIN1引脚
#define AIN2 22 // 电机驱动模块AIN2引脚
#define KEY 0   // 按键引脚

int motorStatus = 0; // 电机状态变量,0-3循环变化

void setup()
{
  Serial.begin(115200);    // 初始化串口通信
  pinMode(KEY, INPUT);     // 设置按键引脚为输入模式
  pinMode(AIN1, OUTPUT);   // 设置AIN1引脚为输出模式
  pinMode(AIN2, OUTPUT);   // 设置AIN2引脚为输出模式
}

void loop()
{
  if (digitalRead(KEY) == LOW) // 检测按键是否按下
  {
    delay(50);                 // 延迟50ms,以防止误触
    if (digitalRead(KEY) == LOW)
    {
      while (digitalRead(0) == LOW) // 等待按键松开,避免连续按下
        ;
      motorStatus++;                 // 切换电机状态
      motorStatus = motorStatus % 4; // 保持该变量值在0-4之间
    }
  }

  // 根据电机状态切换IO电平
  switch (motorStatus)
  {
    case 0:
      Serial.println("AIN1: HIGH, AIN2: LOW"); // 调试信息:AIN1为高电平,AIN2为低电平
      digitalWrite(AIN1, HIGH);
      digitalWrite(AIN2, LOW);
      break;
    case 1:
      Serial.println("AIN1: LOW, AIN2: HIGH"); // 调试信息:AIN1为低电平,AIN2为高电平
      digitalWrite(AIN1, LOW);
      digitalWrite(AIN2, HIGH);
      break;
    case 2:
      Serial.println("AIN1: HIGH, AIN2: HIGH"); // 调试信息:AIN1和AIN2均为高电平
      digitalWrite(AIN1, HIGH);
      digitalWrite(AIN2, HIGH);
      break;
    case 3:
      Serial.println("AIN1: LOW, AIN2: LOW"); // 调试信息:AIN1和AIN2均为低电平
      digitalWrite(AIN1, LOW);
      digitalWrite(AIN2, LOW);
      break;
    default:
      break;
  }
}

代码解释

在setup函数中,通过pinMode函数将KEY、AIN1和AIN2引脚设置为对应的输入输出模式。

在loop函数中,首先通过digitalRead函数检测按键是否按下,如果检测到按键按下,则会将电机状态变量motorStatus加1,然后通过switch语句根据电机状态改变AIN1和AIN2引脚的电平状态。同时,还会通过Serial.println函数将AIN1和AIN2引脚的电平状态输出到串口,方便调试。

三、测试

将代码下载到FishBot主控板上,点击按键,查看轮子转动效果。

【ROS2机器人入门到实战】电机控制之正反转实验_机器人_02

你可以发现,当AIN1和AIN2同时为高电平或者同时为低时,电机并不会转动,符合上一节中对H桥的介绍。

四、总结

本节我们成功通过代码验证了上一节电机控制理论,下一节我们尝试通过PWM的占空比控制电机的转速。


标签:之正,入门,AIN2,引脚,digitalWrite,电机,LOW,ROS2,AIN1
From: https://blog.51cto.com/u_15473553/7398101

相关文章

  • 七天入门Python(一)
    七天入门Python(一)大家好,我是Antvictor,一个励志要成为架构师的程序员。闲话少说,接下来请和我一起进入《七天入门Python》,首先是Python安装。Python安装从Python官网找到Download下载对应的安装包,python3.6及以上即可。Python官网会根据系统默认展示对应系统的最新版本安装包,下载成......
  • 【ROS2机器人入门到实战】I2C通信实验-点亮OLED
    6.I2C通信实验-点亮OLED写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是爱吃鱼香ROS的小鱼。本节我们就尝试直接使......
  • 写了一本适合本科生的机器学习书:《机器学习入门基础(微课版)》
    各位读者朋友们,今天我要给大家推荐一本非常实用的机器学习入门基础图书——《机器学习入门基础(微课版)》。这本书是由黄海广老师倾心打造,适合只有本科三年级数学水平以上的初学者入门,这本书已经被很多学校定为本科生教材。背景介绍本书的作者黄海广老师是一名大学教师,翻译和整理过很......
  • 速腾RS16的ROS2驱动
    文章目录本机软硬件环境ROS2驱动下载ROS2编译设置固定IP编辑配置文件测试参考本机软硬件环境ROS2-foxyubuntu20.04速腾RS16ROS2驱动下载mkdirlaser_ws&&cdlaser_ws/mkdirsrc&&cdsrc/gitclonehttps://github.com/RoboSense-LiDAR/rslidar_msg.gitgitclonehttps://g......
  • JavaScript入门---计算机基础
         编程语言通过翻译器翻译成机器语言让机器执行 标记被动,编程有逻辑是主动。二。计算机基础硬件:输入设备、输出设备、cpu(处理数据与运算)、硬盘、内存 软件:系统软件,应用软件包含于sys软件2.1数据存储计算机内部由01表示数据硬盘内存都是保存二进制数......
  • 【ROS2机器人入门到实战】FishBot建图与导航实现
    第17章FishBot建图与导航实现写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn大家好,我是小鱼。本章我们主要学习FishBot......
  • 【ROS2机器人入门到实战】脉冲测量与校准实验
    8.脉冲测量与校准实验写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是小鱼,有了上节的理论,这一节我们编写代码来尝试......
  • 【ROS2机器人入门到实战】从H桥说起-电机驱动原理介绍
    2.从H桥说起-电机驱动原理介绍写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是小鱼,本节我们尝试通过代码让机器人上......
  • 【ROS2机器人入门到实战】目标速度控制-运动学逆解
    13.目标速度控制-运动学逆解写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是小鱼。上一节我们推导并在代码中实现了......
  • 【ROS2机器人入门到实战】FishBot控制系统搭建
    第16章FishBot控制系统搭建写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是爱吃鱼香肉丝的小鱼。本章我们将学习......