w806(基于Arduino)——点亮LED灯

一、搭建Arduino环境

1、安装Arduino IDE

1)下载Arduino IDE
Arduino官网地址:Arduino Docs | Arduino Documentation | Arduino Documentation

2)安装Arduino IDE
打开安装包一路next即可。

2、在Arduino IDE上安装W806库

1)添加开发板管理器网址
打开Arduino IDE,依次打开 文件 -> 首选项,在“附加开发板管理器网址”一栏添加以下网址。

https://cdn.jsdelivr.net/gh/Hi-LinkDuino/w80x_arduino/package_w80x_proxy_index.json

2)重新启动Arduino IDE
添加网址之后关闭Arduino IDE,再重新打开。

3)下载安装W806库
依次打开 工具 -> 开发板-> 开发板管理器,找到w80x_duino并安装(可以通过搜索快速找到)。

下载安装完成之后就能看到W806的库了。使用的时候最好先重新启动一下Arduino IDE。

 

 二、编写代码

#include <stdio.h>
#include <Arduino.h>
//#include "wm_hal.h"

static volatile uint8_t key_flag = 0;

static void GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIO_CLK_ENABLE();

    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2, GPIO_PIN_SET);

    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    HAL_NVIC_SetPriority(GPIOB_IRQn, 0);
    HAL_NVIC_EnableIRQ(GPIOB_IRQn);
}

void setup() {
  // put your setup code here, to run once:
    printf("Led Demo\r\n");
    HAL_Init();
    GPIO_Init();
}

void loop() {
   // put your main code here, to run repeatedly:
    HAL_Delay(500);
    key_flag++;
    
    if (key_flag % 3 == 0)
    {
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, (GPIO_PinState)0);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, (GPIO_PinState)1);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, (GPIO_PinState)1);
    }
    else if (key_flag % 3 == 1)
    {
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, (GPIO_PinState)1);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, (GPIO_PinState)0);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, (GPIO_PinState)1);
    }
    else
    {
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, (GPIO_PinState)1);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, (GPIO_PinState)1);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, (GPIO_PinState)0);
    }
}

三、编译烧录并运行

1)连接板子
根据自己的板子连接好电源和串口,并在Arduino IDE上面选择设备对于的端口号。

 

2)烧录程序上传
点击“上传”按键,上传的过程中按提示按主板上的复位键即可下载,等待右下角进度条结束即可完成烧录。

 3)运行结果

 

 

 

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要使用ROS控制ArduinoLED,需要进行以下步骤: 1. 在Arduino上连接一个LED和一个电阻器。将LED的一个引脚连接到Arduino的数字引脚(例如D13),将另一个引脚连接到电阻器,然后将电阻器的另一端连接到Arduino的GND引脚。 2. 在Arduino IDE中编写一个简单的程序,使LED在接收到来自ROS的指令时点或熄灭。例如,以下代码将LED连接到D13引脚,并通过ROS订阅名为“led”的主题来控制: ``` int ledPin = 13; bool ledState = false; void setup() { pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); rosInit(); } void loop() { rosSpinOnce(); } void ledCallback(const std_msgs::Bool& msg) { ledState = msg.data; digitalWrite(ledPin, ledState ? HIGH : LOW); } void rosInit() { // 初始化ROS节点 int argc = 0; char** argv = NULL; ros::init(argc, argv, "arduino_led"); // 创建ROS节点句柄 nh = new ros::NodeHandle(); // 创建ROS订阅者 sub_led = nh->subscribe("led", 1, ledCallback); } void rosSpinOnce() { // 处理ROS消息 ros::spinOnce(); } ``` 3. 在ROS中创建一个名为“led”的主题,并使用rostopic命令向其发送消息以控制LED。例如,以下命令将LED: ``` rostopic pub /led std_msgs/Bool "data: true" ``` 4. 检查Arduino串口输出,确保它接收到了来自ROS的消息并正确地控制了LED。例如,如果使用Serial.println()语句在Arduino程序中输出调试信息,则可以使用Serial Monitor查看这些信息。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值