ROS与Arduino

编程入门 行业动态 更新时间:2024-10-06 20:40:00

<a href=https://www.elefans.com/category/jswz/34/1768665.html style=ROS与Arduino"/>

ROS与Arduino

学习目标:

ROS与Arduino-RGB流水灯


ROS与Arduino-RGB流水灯:

说明:

通过三种基色 LED 分别点亮两个 LED 时,它可以发出黄、紫、青色(如红、蓝两 LED 点亮时发出紫色光);若红、绿、蓝三种 LED 同时点亮时,它会产生白光。如果有电路能使红、绿、蓝光 LED分别两两点亮、单独点亮及三基色 LED 同时点亮,则他就能发出七种不同颜色的光来,于是就出现了七彩 LED 灯的这种现象。


RGB器件简介:

变色灯是由红(R)、绿(G)、蓝(B)三基色 LED 组成的。双色 LED 是我们十分熟悉的。一般由红光 LED 及绿光 LED 组成。它可以单独发出红光或绿光。若红光及绿光同时亮点时,红绿两种光混合成橙黄色。RGB 分为共阴和共阳两种,长引脚是公共端,其他引脚如下:


工作原理:

RGB 代表红色,绿色和蓝色通道,是行业颜色标准。RGB 通过改变三个通道并叠加它们来显示各种新颜色,根据统计,它可以创建 16777216 种不同的颜色。如果你说显示的颜色与自然颜色不完全匹配,那么它几乎无法用肉眼区分。
红色,绿色和蓝色的三个颜色通道中的每一个具有 255 级亮度。 当三原色全部为 0 时,“LED 灯”最暗,即关闭。当三原色全部为 255 时,“LED 灯”是最亮的。当叠加三原色发出的光时,颜色将混合。但是,亮度等于所有亮度的总和,混合得越多,LED 就越亮。 该过程称为添加剂混合。
在这个实验中,我们也将使用 PWM,在 RGB LED 的三个引脚之间输入 0 到 255 之间的值,使其显示不同的颜色。

电路原理图:

程序代码:

/* * Blinks an RGB on callback*/
#include <ros.h>
#include <std_msgs/Empty.h>
#define RGB_RED 11
#define RGB_GREEN 10
#define RGB_BLUE 9
ros::NodeHandle  nh;
void messageCb( const std_msgs::Empty& toggle_msg)
{int i;for (i=255; i>0 ;i--){analogWrite(RGB_RED, i);analogWrite(RGB_GREEN, 255);analogWrite(RGB_BLUE, 255);delay(4);}delay(500); //将RGB LED变为红色渐变for (i=255; i>0; i--){analogWrite(RGB_RED, 255);analogWrite(RGB_GREEN, i);analogWrite(RGB_BLUE, 255);delay(4);}delay(500); //将RGB LED变为绿色渐变for (i=255; i>0; i--){analogWrite(RGB_RED, 255);analogWrite(RGB_GREEN, 255);analogWrite(RGB_BLUE, i);delay(4);}delay(500); //将RGB LED变为蓝色渐变
}
ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );
void setup()
{ // 初始化I/O口pinMode(RGB_RED,OUTPUT);pinMode(RGB_GREEN,OUTPUT);pinMode(RGB_BLUE,OUTPUT);nh.initNode();nh.subscribe(sub);
}
void loop()
{  nh.spinOnce();delay(1);
}

运行代码:
方式一:

  1. 运行roscore
$ roscore
  1. 新终端运行,/dev/ttyUSB0为Arduino设备
rosrun rosserial_python serial_node.py /dev/ttyUSB0

rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0
  1. 发布主题,点亮Arduino板上的RGB灯
rostopic pub toggle_led std_msgs/Empty --once

方式二:

  1. 运行roscore
$ roscore
  1. 新终端运行,/dev/ttyUSB0为Arduino设备
rosrun rosserial_python serial_node.py

3.使用QT工具箱设置RGB亮灯频率:
终端输入:

rqt

设置QT工具箱时钟频率:使用rqt向话题发布消息(前面已经介绍)

实验现象:

更多推荐

ROS与Arduino

本文发布于:2024-02-14 01:03:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761505.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ROS   Arduino

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!