颜色跳变例子
代码:
//颜色跳变程序
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,重新开始新一轮的循环。