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、购买及培训

本例套件可以通过下面的方式购买:

www.imtcn.com

5、电路图

Ledong手把手入门系列教程之十八.虚拟混色器的原理图18-3如下:

 

图18-3 原理图

Ledong手把手入门系列教程之十八.虚拟混色器的PCB布线图18-4如下:

 

图18-4 pcb布线图

6、错误处理

本实验导线连接比较复杂,注意认真检查电路的连线是否与简介中描述的一致。每个电位计有3个引脚,位于两端的引脚要分别连接电源和地。

7、补充说明

8、参考文献

http://www.imtcn.com

http://fritzing.org/projects/virtual-color-mixer/