4570|6

1098

帖子

0

TA的资源

至上芯片

楼主
 

USB_M8_RGBLED彩灯 [复制链接]

用M8控制RGBLED测试了一下,效果不错。并做了一个上位机软件,通过USB控制,现将资料整理上传与君共享!

usb_彩灯.rar

1.52 MB, 下载次数: 146

此帖出自单片机论坛

最新回复

有兴趣,请问软件用什么语言写的 ?  详情 回复 发表于 2008-7-17 09:38
点赞 关注
 

回复
举报

1098

帖子

0

TA的资源

至上芯片

沙发
 

USB_M8_RGBLED彩灯

调光效果

此帖出自单片机论坛
 
 

回复

1098

帖子

0

TA的资源

至上芯片

板凳
 

USB_M8_RGBLED彩灯

为查阅直观,下位机主要控制源码如下:

/******************************************************************************
* rgbCtrl.h  
*
* Copyright XiaoCui' Products
*
* DESCRIPTION:  
*
* modification history
* --------------------
* 01a, 01jan2008, cuiqingwei written
* --------------------
******************************************************************************/

#include
#include
#include
#include

#include "usbdrv.h"

/*
Explanation of the HSV color space:

H: Hue        - 色调(如红,蓝,黄,绿...)
S: Saturation - 饱和度
V: Value      - 亮度

Scaling of the HSV values:
H: [0-255] 0 = red,   42  = yellow, 85 = green, 128 = turquoise, 171 = blue, 214 = purple
S: [0-255] 0 = white, 255 = pure colors
V: [0-255] 0 = off,   255 = maximum brightness

*/

typedef struct {
        unsigned char r;
        unsigned char g;
        unsigned char b;
} RGB;

#define        Ledport         PORTD                // RGB Led Port
#define DDR_Ledport        DDRD
#define R_PIN           5                // R Output
#define G_PIN           6                // G
#define B_PIN           7                // B

/* 函数声名 */
void init(void);
void hsv_to_rgb (unsigned char h, unsigned char s, unsigned char v, RGB * out);

/* 全局变量 */

RGB lamp = {0,0,0};

unsigned char type,H,S,V;

//-------------------------------------------------------------------------------
// Init
//-------------------------------------------------------------------------------
void init(void)
{
          PORTD = 0;
         PORTB = 0;                // no pullups on USB and ISP pins  
          DDRD = ~(1 << 2);        // all outputs except PD2 = INT0  
          DDRB = 0;                   // all USB and ISP pins inputs  

        DDR_Ledport = (1<
        TCCR0 = 1;
        TIMSK = (1<          
         
}

uchar usbFunctionSetup(uchar data[8])  
{
        usbRequest_t *rq = (void *)data;

    if( rq->bRequest )
        {
                type = 1;
                H = rq->wValue.bytes[0];
                S = rq->wValue.bytes[1];
                V = rq->wValue.bytes[2];
        }
        else
        {
                    type = 0;
                lamp.r = rq->wValue.bytes[0];
                lamp.g = rq->wValue.bytes[1];
                lamp.b = rq->wValue.bytes[2];
        }
          //computeOutputStatus();
    return 0;
}

//-------------------------------------------------------------------------------
// Main
//-------------------------------------------------------------------------------
此帖出自单片机论坛
 
 
 

回复

1098

帖子

0

TA的资源

至上芯片

4
 

USB_M8_RGBLED彩灯

int main(void)
{         
        cli();
        init();
         usbInit();
           sei();
         
           H = 180;
        S = 255;
        V = 355;
        type = 1;
                        
        for(;;)
        {
                usbPoll();

                if ( type )
                {
                        type = 0;
                        hsv_to_rgb(H,S,V,&lamp);
                }
        }
        return 0;
}

//-------------------------------------------------------------------------------
// Converts HSV to RGB
//-------------------------------------------------------------------------------
void hsv_to_rgb (unsigned char h, unsigned char s, unsigned char v, RGB * out)
{
        unsigned char r=0,g=0,b=0, i, f;
        unsigned int p, q, t;

        if( s == 0 ) {         
                r = g = b = v;
        }
        else
        {        i=h/43;
                f=h%43;
                p = (v * (255 - s))/256;
                q = (v * ((10710 - (s * f))/42))/256;
                t = (v * ((10710 - (s * (42 - f)))/42))/256;

                switch( i )
                {        case 0:
                                r = v; g = t; b = p; break;
                        case 1:
                                r = q; g = v; b = p; break;
                        case 2:
                                r = p; g = v; b = t; break;
                        case 3:
                                r = p; g = q; b = v; break;                        
                        case 4:
                                r = t; g = p; b = v; break;                                 
                        case 5:
                                 r = v; g = p; b = q; break;
                }
        }
        out->r=r; out->g=g; out->b=b;
}

//-------------------------------------------------------------------------------
// Timer  0 Interrupt, f/256
//-------------------------------------------------------------------------------
SIGNAL (SIG_OVERFLOW0)
{         
        static unsigned char PWM_cnt;
        static unsigned char prescale;


        if(prescale++){                                 
                prescale=0;                // Used to halve the PWM frequency
                return;
        }

        if (PWM_cnt                 Ledport |= (1 << R_PIN);
        else
                Ledport &=~(1 << R_PIN);

        if (PWM_cnt                 Ledport |= (1 << G_PIN);
        else
                Ledport &=~(1 << G_PIN);

        if (PWM_cnt                 Ledport |= (1 << B_PIN);
        else
                Ledport &=~(1 << B_PIN);

        PWM_cnt++;
}

/*------------------------------------------------------------------------------
                                0ooo
                       ooo0     (   )
                       (   )     ) /
                        \ (     (_/
                         \_)        By:cuiqingwei [gary]
------------------------------------------------------------------------------*/
此帖出自单片机论坛
 
 
 

回复

1098

帖子

0

TA的资源

至上芯片

5
 

USB_M8_RGBLED彩灯

调试一角



此帖出自单片机论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

6
 

不错 哦

能给点资料我嘛,qwrwrwet@163.com
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
有兴趣,请问软件用什么语言写的 ?
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表