RGB三色灯例子思路

颜色跳变例子

代码:

//颜色跳变程序
int redPin = 11;  // R 红色LED 控制引脚 连接到Arduino的 11脚 
int greenPin = 9;  // G绿色LED 控制引脚 连接到Arduino的 9脚
int bluePin = 10;  // B蓝色LED 控制引脚 连接到Arduino的 11脚   
void setup()    
{   
     pinMode(redPin, OUTPUT); //设置redPin对应的管脚11为输出
     pinMode(greenPin, OUTPUT); //设置greenPin,对应的管脚9为输出
     pinMode(bluePin, OUTPUT); //设置bluePin对应的管脚10为输出
}    
       
void loop()  // run over and over again  
{    
     // Basic colors:  
    color(255, 0, 0); // 红色亮
    delay(1000); // 延时一秒 
    color(0,255, 0); //绿色亮
delay(1000); //延时一秒
color(0, 0, 255); // 蓝色灯亮  
    delay(1000); //延时一秒
     
  // Example blended colors:  
    color(255,255,0); // 黄色  
    delay(1000); //延时一秒
  color(255,255,255); // 白色  
    delay(1000); //延时一秒
  color(128,0,255); // 紫色  
    delay(1000); //延时一秒
    color(0,0,0); // t关闭led  
    delay(1000); //延时一秒  
}     
    
void color (unsigned char red, unsigned char green, unsigned char blue)  //颜色控制函数 
{    
      analogWrite(redPin, 255-red);   
      analogWrite(greenPin, 255-green); 
      analogWrite(bluePin, 255-blue);
}
//实验结论:
//   观察到RGB灯按照程序设置的颜色变化

一、定义引脚


定义三个LED的引脚,分别是控制红色LED的redPin、控制红绿色LED的greenPin、控制蓝色LED的bluePin。

二、初始化


在setup()函数中通过pinMode()函数将上述三个引脚设置为输出模式。

三、业务逻辑


在loop()函数中调用自定义的color()函数来调节三色灯的颜色并使用delay()函数延时一秒。
在loop()函数下面自定义color()函数,该函数有三个形式参数,分别代表红绿蓝三种颜色,参数的数值越大,表示该颜色越多。参数传入后,通过analogWrite()函数来输出相应信息。color()函数通过参数传入的红、绿和蓝色值来生成相应的色彩。

颜色渐变例子

代码:


//颜色渐变程序
int redpin=11;//定义LED接口
int bluepin=10;
int greenpin=9;
int redval;//定义LED变量
int blueval;
int greenval;
int i=0;
void setup()
{
  pinMode(redpin,OUTPUT);//设置LED接口为输出接口
  pinMode(bluepin,OUTPUT);
  pinMode(greenpin,OUTPUT);  
  pinMode(redval,INPUT);//设置LED变量为输入值
  pinMode(blueval,INPUT);
  pinMode(greenval,INPUT);
  Serial.begin(9600);//连接到串行端口,波特率为9600
}
void loop()
{
  i++;
if(i<200)
{
  redval+=1;//红灯变亮
  greenval-=1;//绿灯变暗
  blueval=1;//黄灯不变
}
else if(i<400)
{
   redval-=1;//红灯变暗
  greenval=1;//绿灯不变
  blueval+=1;// 黄灯变亮
}
else if(i<600)
{
   redval=1;//红灯不变
  greenval+=1;//绿灯变亮
  blueval-=1; //黄灯变暗
}
else
{
  i=0;//重新给i赋值进行新循环
}
analogWrite(redpin,redval);//给LED接口付模拟值
analogWrite(bluepin,blueval);
analogWrite(greenpin,greenval);
Serial.print(i,DEC);//显示出i的值
Serial.print(   "     R:");//分别显示出各个LED的模拟值
Serial.print(redval,DEC);
Serial.print(    "    B:");
Serial.print(blueval,DEC);
Serial.print(    "    G:");
Serial.println(greenval,DEC);
}


一、定义引脚


定义三个LED的引脚,分别是控制红色LED的redPin、控制红绿色LED的greenPin、控制蓝色LED的bluePin。
定义三个LED变量redval、blueval和greenval;定义整型变量 i 。

二、初始化


在setup()函数中将三个LED灯引脚设置为输出模式,设置三个LED变量为输入模式,打开串口通信,将波特率设为9600。

三、业务逻辑


在loop()函数中通过变量 i 的变化来控制三色灯颜色的渐变。
当 i 小于 200时,红灯逐渐变亮,红色灯的输出值递增;绿灯逐渐变暗,绿色灯的输出值递减;蓝色灯保持亮度为 1。
当 i 大于等于 200 且小于 400时,红灯逐渐变暗,红色灯的输出值递减;绿色灯保持亮度为 1;蓝灯逐渐变亮,蓝色灯的输出值递增。
当 i 大于等于 400 且小于 600时,红色灯保持亮度为 1;绿色灯逐渐变亮,绿色灯的输出值递增;蓝灯逐渐变暗,蓝色灯的输出值递减。
当 i 大于等于 600时,将 i 重置为 0,重新开始新一轮的循环。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值