欢迎来到洛阳市第五十五中学创客教育空间 登录

收藏网站

用arduino单板机智能控制节日幻彩灯

来源:本站编辑 2018-04-04 14:42:48


用arduino单板机智能控制节日幻彩灯

    幻彩灯颜色是多变的,它能变出春天般的嫩绿,它能变出秋天般的嫣红,想象一下,一盏灯会变幻它的色彩,在”幻彩”的上万种颜色面前,自由地无级变换色彩。今天通过单板机实验箱,通过滑竿电阻器实现由红绿兰三原色灯组成的幻彩灯光效果。

    编程设计思路:


    拔动直滑电位器,实现三色灯变色,即红、绿、蓝颜色渐变,通过滑竿不同值来调节R、G、B三种颜色。

     00003.jpg

    编程实践:

/* 定义LED引脚 */

#define LED_R 44  //三原色LED灯的红灯引脚号为44

#define LED_G 45  //三原色LED灯的绿灯引脚号为45

#define LED_B 46  //三原色LED灯的蓝灯引脚号为46

/*定义直滑电位器采样引脚*/

#define POTPIN A10

int potVal;     //该变量,用来保存拔动电位器采样值

int lightVal;   //该变量,用保存电位器采样值转化为亮度值

void setup()

{

       //以下把三原色LED灯的各控制引脚设置为输出模式

       pinMode(LED_R, OUTPUT);

        pinMode(LED_G, OUTPUT);

       pinMode(LED_B, OUTPUT);

       //关闭三原色色灯

        digitalWrite(LED_R, LOW); 

       digitalWrite(LED_G, LOW);

       digitalWrite(LED_B, LOW);

}

void loop()

{

        potVal = analogRead(POTPIN);   //采样拔动电位器的采样值

        potVal > 512? 512 : potVal;    //把采样值约束在0-512范围

        lightVal = potVal;             //电位器采样值转为亮度值

        //  lightVal = map(potVal, 0, 512, 0, 255);

        if(lightVal < 255)

            {

            analogWrite(LED_R, lightVal);       //红灯由暗变亮

            analogWrite(LED_G, 255-lightVal);   //绿灯由亮变暗

            }

            else

            {

       analogWrite(LED_R, 512-lightVal);   //红灯由亮变暗

       analogWrite(LED_B, lightVal-255);   //蓝灯由暗变亮

            }

}