HarmonyOS鸿蒙Next智慧设备开发--LED灯开关控制案例

HarmonyOS鸿蒙Next智慧设备开发–LED灯开关控制案例 一、技术相关
项目名称: led_kz
项目语言: C语言
开发板:Hi3861
工具:vscode

二、效果如下

三、开发过程

  1. 建立项目
    在applications/sample/wifi-iot/app/下新建一个文件夹用于存放项目文件,在文件中创建一个led_st.c文件用于存放业务代码,和一个BUILD.gn用于存放编译配置。

  2. 编写代码
    控制原理:
    在Hi361开发板中,GPIO09控制LED灯,GPIO05与user按钮连接,读取GPIO05状态进而决定GPIO09的状态,从而实现LED灯控制。

while (1){
    hi_gpio_value val = HI_GPIO_VALUE0;
    hi_gpio_get_input_val(LED_KZ_GPIO, &val);
    IoTGpioSetOutputVal(LED_Out_GPIO, val);
}
  1. 运行代码
    修改applications/sample/wifi-iot/app/BUILD.gn文件,使其编译新建的led.c文件
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
    features = [
        "led_kz:led_kz"
    ]
}

然后进行编译烧录,按下res键运行项目后,按住user,led灯会随之亮起;松手就会熄灭

四、关键代码
led_kz.c

#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "hi_gpio.h"
#include "hi_io.h"

#define LED_TASK_STACK_SIZE 512
#define LED_TASK_PRIO 25
#define LED_Out_GPIO 9 // for hispark_pegasus
#define LED_KZ_GPIO 5

static void *kzLed(const char *arg)
{
    while (1)
    {
        hi_gpio_value val = HI_GPIO_VALUE0;
        hi_gpio_get_input_val(LED_KZ_GPIO, &val);
        IoTGpioSetOutputVal(LED_Out_GPIO, val);
    }
    return NULL;
}

static void LedExampleEntry(void)
{
    osThreadAttr_t attr;
    hi_gpio_init();
    hi_io_set_func(LED_Out_GPIO, HI_IO_FUNC_GPIO_9_GPIO);
    hi_gpio_set_dir(LED_Out_GPIO, HI_GPIO_DIR_OUT);

    hi_io_set_func(LED_KZ_GPIO, HI_IO_FUNC_GPIO_5_GPIO);
    hi_gpio_set_dir(LED_KZ_GPIO, HI_GPIO_DIR_IN);

    hi_io_set_pull(LED_KZ_GPIO, HI_IO_PULL_UP);

    attr.name = "kzLed";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = LED_TASK_STACK_SIZE;
    attr.priority = LED_TASK_PRIO;

    if (osThreadNew((osThreadFunc_t)kzLed, NULL, &attr) == NULL) {
        printf("[LedExample] Falied to create LedTask!\n");
    }
}

SYS_RUN(LedExampleEntry);

BUILD.gn

static_library("led_kz") {
    sources = [
        "led_kz.c"
    ]
    include_dirs = [
        "//utils/native/lite/include",
        "//kernel/liteos_m/components/cmsis/2.0",
        "//base/iot_hardware/peripheral/interfaces/kits",
    ]
}

完整代码地址:
https://gitee.com/jltfcloudcn/smart-devices/tree/master/led_st_kz


更多关于HarmonyOS鸿蒙Next智慧设备开发--LED灯开关控制案例的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

大佬又发了令人看不懂的帖子,学习了

更多关于HarmonyOS鸿蒙Next智慧设备开发--LED灯开关控制案例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


而我只会在评论区高呼大佬牛批!

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

看起来挺好玩儿的教学,可以试试

在HarmonyOS鸿蒙Next中,控制LED灯开关的案例可以通过以下步骤实现:

  1. 环境配置:确保开发环境已安装DevEco Studio和相应的SDK。
  2. 创建项目:在DevEco Studio中创建一个新的HarmonyOS项目。
  3. 编写代码
    • 导入相关硬件控制库。
    • 定义GPIO引脚用于控制LED。
    • 编写开关逻辑,通过设置GPIO引脚的高低电平来控制LED的开关。
  4. 调试与部署:将代码编译并部署到目标设备上进行测试。
  5. 优化与扩展:根据需求优化代码,并扩展功能,如添加定时器或传感器控制。
回到顶部