在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

聚豐項(xiàng)目 > 基于AB32VG1的智能RGB補(bǔ)光燈

基于AB32VG1的智能RGB補(bǔ)光燈

使用AB32VG1的三路PWM控制LED燈,改變其發(fā)光顏色。使用手機(jī)藍(lán)牙進(jìn)行控制拍照時(shí)的補(bǔ)光燈,根據(jù)手機(jī)端的設(shè)置,直接改變光的顏色

起個(gè)名字太難啊 起個(gè)名字太難啊

分享
0 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

起個(gè)名字太難啊 起個(gè)名字太難啊

團(tuán)隊(duì)成員

起個(gè)名字太難啊 軟件

分享
項(xiàng)目簡介
使用AB32VG1的三路PWM控制LED燈,改變其發(fā)光顏色。使用手機(jī)藍(lán)牙進(jìn)行控制拍照時(shí)的補(bǔ)光燈,根據(jù)手機(jī)端的設(shè)置,直接改變光的顏色
硬件說明

需要外接一塊有全彩LED燈陣組成的燈板,

軟件說明

1.目前開發(fā)完成使用串口控制燈光變化的功能,后期添加手機(jī)端的功能

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-12-13     Administrator       the first version
 */
#include <rtthread.h>
#include "board.h"

#define THREAD_PRIORITY         7
#define THREAD_STACK_SIZE       512
#define THREAD_TIMESLICE        3

#define PWM_DEV_NAME_R        "t5pwm"  /* PWM設(shè)備名稱 */
#define PWM_DEV_CHANNEL_R     1       /* PWM通道 */

#define PWM_DEV_NAME_G        "lpwm0"  /* PWM設(shè)備名稱 */
#define PWM_DEV_CHANNEL_G     1       /* PWM通道 */

#define PWM_DEV_NAME_B        "lpwm1"  /* PWM設(shè)備名稱 */
#define PWM_DEV_CHANNEL_B     3       /* PWM通道 */

struct rt_device_pwm *pwm_dev_r;      /* PWM設(shè)備句柄 */
struct rt_device_pwm *pwm_dev_g;      /* PWM設(shè)備句柄 */
struct rt_device_pwm *pwm_dev_b;      /* PWM設(shè)備句柄 */

static rt_thread_t pwm_led_tid = RT_NULL;
rt_mq_t pwm_led_mq_handler = RT_NULL;
/* 線程 pwm_led_thread_entry 的入口函數(shù) */
/**
  * @brief  pwm_led_thread_entry
  * @param  parameter
  * @retval None
  */
static void pwm_led_thread_entry(void *parameter)
{
    rt_uint32_t period, pulse_r,pulse_g,pulse_b, dir_r,dir_g,dir_b;

    period = 655360;    /* 周期為0.5ms,單位為納秒ns */
    pulse_r = 0;          /* PWM脈沖寬度值,單位為納秒ns */
    pulse_g = 0;
    pulse_b = 0;
    pwm_led_t pwm_mq;
    /* 查找設(shè)備 */
    pwm_dev_r = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME_R);
    if (pwm_dev_r == RT_NULL)
    {
        rt_kprintf("pwm led r run failed! can't find %s device!\n", PWM_DEV_NAME_G);
    }
    pwm_dev_g = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME_G);
    if (pwm_dev_g == RT_NULL)
    {
        rt_kprintf("pwm led g run failed! can't find %s device!\n", PWM_DEV_NAME_G);
    }
    pwm_dev_b = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME_B);
    if (pwm_dev_b == RT_NULL)
    {
        rt_kprintf("pwm led b run failed! can't find %s device!\n", PWM_DEV_NAME_B);
    }
    /* 設(shè)置PWM周期和脈沖寬度默認(rèn)值 */
    rt_pwm_set(pwm_dev_r, PWM_DEV_CHANNEL_R, period, pulse_r);
    rt_pwm_set(pwm_dev_g, PWM_DEV_CHANNEL_G, period, pulse_g);
    rt_pwm_set(pwm_dev_b, PWM_DEV_CHANNEL_B, period, pulse_b);

    /* 使能設(shè)備 */
    rt_pwm_enable(pwm_dev_r, PWM_DEV_CHANNEL_R);
    rt_pwm_enable(pwm_dev_g, PWM_DEV_CHANNEL_G);
    rt_pwm_enable(pwm_dev_b, PWM_DEV_CHANNEL_B);

    while (1)
    {
      if(rt_mq_recv(pwm_led_mq_handler,&pwm_mq,sizeof(pwm_led_t),RT_WAITING_FOREVER) == RT_EOK)
      {
          rt_pwm_set(pwm_dev_r, PWM_DEV_CHANNEL_R, period, pwm_mq.pulse_r);
          rt_pwm_set(pwm_dev_g, PWM_DEV_CHANNEL_G, period, pwm_mq.pulse_g);
          rt_pwm_set(pwm_dev_b, PWM_DEV_CHANNEL_B, period, pwm_mq.pulse_b);
          rt_kprintf("pulse_r:%d pulse_g:%d pulse_b:%d\n", pwm_mq.pulse_r,pwm_mq.pulse_g,pwm_mq.pulse_b);
          rt_thread_mdelay(10);
      }
    }
}

/* 線程初始化*/
int thread_init(void)
{
    /* 創(chuàng)建線程,名稱是 pwm_led_thread,入口是 pwm_led_thread*/
    pwm_led_tid = rt_thread_create("pwm_led_thread",
                                   pwm_led_thread_entry,
                                   RT_NULL,
                                   THREAD_STACK_SIZE,
                                   THREAD_PRIORITY,
                                   THREAD_TIMESLICE);
    pwm_led_mq_handler = rt_mq_create("pwm_led_messagequeue",
                               sizeof(pwm_led_t),
                               6,
                               RT_IPC_FLAG_FIFO);
    /* 如果獲得線程控制塊,啟動(dòng)這個(gè)線程 */
    if (pwm_led_tid != RT_NULL)
        rt_thread_startup(pwm_led_tid);

    return 0;
}

/* 導(dǎo)出到 msh 命令列表中 */
INIT_APP_EXPORT(thread_init);
/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-12-13     Administrator       the first version
 */
#include <rtthread.h>
#include "board.h"
#include <stdlib.h>
#define THREAD_PRIORITY         10
#define THREAD_STACK_SIZE       512
#define THREAD_TIMESLICE        5

extern rt_mq_t pwm_led_mq_handler;

static void cmd_led(int argc, char **argv)
{
    pwm_led_t pwm_mq;
    if(argc != 4)
    {
        rt_kprintf("please input'pulse_rgb <pulse_r & pulse_g & pulse_b>'!\n");
    }else{
        pwm_mq.pulse_r = strtoul(argv[1],0, 10);
        pwm_mq.pulse_g = strtoul(argv[2],0, 10);
        pwm_mq.pulse_b = strtoul(argv[3],0, 10);
        rt_mq_send(pwm_led_mq_handler, &pwm_mq, sizeof(pwm_led_t));
    }
}

//FINSH_FUNCTION_EXPORT(uart_cmd_led, led cmd);
MSH_CMD_EXPORT( cmd_led, cmd sample:pulse_rgb <pulse_r & pulse_g & pulse_b> );


演示效果


評論區(qū)(0 )
主站蜘蛛池模板: 天天爽夜夜爽人人爽曰喷水| 久爱综合| 东方天堂网| 成年毛片| 一本在线免费视频| 天天射日日操| 交专区videossex另类| 放荡女同老师和女同学生| 全国男人的天堂天堂网| 上一篇26p国模| 日产精品卡二卡三卡四卡乱码视频| 日本级毛片免费观看| 李丽莎尤物福利视频| 中文一级黄色片| 四虎精品视频| 伦理一区二区三区| av在线天堂网| 欧美黑人巨大日本人又爽又色| 1024手机看片国产旧版你懂的| 亚洲一区二区三区在线| 中文字幕第15页| 色多多视频在线观看播放| 免费的黄色大片| 最新激情网站| 久久精品国产大片免费观看| 1024你懂的国产欧美日韩在| 视频三区| 四虎国产在线| 久久精品久噜噜噜久久| 中文字幕在线观看你懂的| 久久semm亚洲国产| 亚洲先锋资源| 五月婷婷精品| 精品国产你懂的在线观看| 午夜三级福利| 窝窝视频成人影院午夜在线| 7086bt伙计 福利一区| 欧美性色欧美a在线观看| 91日韩精品天海翼在线观看| 国产精品资源在线观看网站| 久色中文|