Ledong手把手入门系列教程之十八
虚拟混色器
©版权归imtcn.com和Ledong所有,转载请保持本文完整性,并注明出处
这是《Ledong手把手入门系列教程》的第十八课,这一课我们将利用Ledong板实现一个虚拟混色器。
1、简介
本实验中,可以使用Ledong板上的串口写入功能向电脑发送多个值。通过3个电位计获得模拟值,分别用来设置红绿蓝三种颜色,这种颜色将作为程序的背景色显示在计算机上。
实验所需器材:
| 名 称 | 数量 |
| Ledong板 | 1套 |
| 100KΩ电位计 | 3个 |
| 面包板 | 1块 |
| 导线 | 若干 |
根据图18-1的方法连接电路,将三个电位器外侧针脚分别连接在【5V 】和【GND】上,中间针脚接至模拟针脚【A0】至【A2】 。
图18-1 连接示意图
2、示例代码
将Ledong用线缆连接到PC上,打开软件程序,并设置好后,将下列代码输入到软件中,通过编译下载命令,将程序下载到Ledong中。
/*虚拟混色器*/
int redPin = 0; //红色分量
int greenPin = 1; //绿色分量
int bluePin = 2; //蓝色分量
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print(“R”);
Serial.println(analogRead(redPin));
Serial.print(“G”);
Serial.println(analogRead(greenPin));
Serial.print(“B”);
Serial.println(analogRead(bluePin));
delay(100);
}
另外,还需配合使用processing软件,运行以下程序:
/* 虚拟混色器 在processing中运行的程序 */
import processing.serial.*;
String buff = “”;
int rval = 0, gval = 0, bval = 0;
int NEWLINE = 10;
Serial port;
void setup()
{ size(200, 200);
println(“Available serial ports:”);
println(Serial.list());
port = new Serial(this, Serial.list()[0], 9600);
}
void draw()
{ while (port.available() > 0) {
serialEvent(port.read());
}
background(rval, gval, bval);
}
void serialEvent(int serial)
{ if(serial != NEWLINE){
buff += char(serial);
}
else{
char c = buff.charAt(0);
buff = buff.substring(1);
buff = buff.substring(0, buff.length()-1);
if (c == ‘R’)
rval = Integer.parseInt(buff);
else if (c == ‘G’)
gval = Integer.parseInt(buff);
else if (c == ‘B’)
bval = Integer.parseInt(buff);
buff = “”;
}
}
程序下载后,按运行键。可以观察到,processing软件会弹出一个对话框,当改变3个电位计的值,对话框中的背景色也将随着改变。
3、运行效果
Ledong手把手入门系列教程之十八.虚拟混色器的运行效果图18-2如下:
图18-2 运行效果图
4、购买及培训
本例套件可以通过下面的方式购买:
5、电路图
Ledong手把手入门系列教程之十八.虚拟混色器的原理图18-3如下:
图18-3 原理图
Ledong手把手入门系列教程之十八.虚拟混色器的PCB布线图18-4如下:
图18-4 pcb布线图
6、错误处理
本实验导线连接比较复杂,注意认真检查电路的连线是否与简介中描述的一致。每个电位计有3个引脚,位于两端的引脚要分别连接电源和地。
7、补充说明
8、参考文献
http://www.imtcn.com






