回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

智能色彩演示仪 简单

头像 qyj133 2024.04.01 267 0

作者:王艳梅

技术支持:白银蚁创空间

图片1.png

步骤1 背景和目标

八年级物理第四章第五节《光的色散》中有“色光的合成”这一实验,课本中提到可以在聚光灯前蒙一块有颜色(红色、黄色或蓝色)的透明胶片,再将其发出的光投射到白色屏幕上,形成有部分光交汇。学生通过观察现象,可以发现不同颜色的光能混合成另一颜色的光。自然界中红、绿、蓝三种颜色的光是无法用其他颜色的光混合而成的,而其他颜色的光则都可能通过红、绿、蓝光的适当混合而得到,因此,红、绿、蓝三种颜色被称为光的“三原色”。红、绿、蓝三种颜色的光混合在一起,可以得到不同颜色的光。

但实验的过程中因受环境光光线的影响,清晰度不够,视觉效果不佳,操作又比较复杂,且最终不能达到较好的实验效果。于是,我通过思考与分析,特设计了一款作品,通过旋钮控制三种颜色(红、绿、蓝) LED 灯的亮度,由单片机根据旋钮数据,控制三色合成灯板模拟三原色的混合,让大家更好地认识光的三原色,同时更加直观的明白各种颜色是如何通过三原色混合而成的。

步骤2 教学用途和应用场景

智能色彩演示仪既适合一个人独立学习,也可在班级做演示实验,同时也适宜小组学习,故人数不受限制,亦可收到好的实验效果。

通过旋钮控制三种颜色(红、绿、蓝) LED 灯的亮度,由单片机根据旋钮数据,控制三色合成灯板模拟三原色的混合,让大家更好地认识光的三原色,同时更加直观的明白各种颜色是如何通过三原色混合而成的。

步骤3 三、设计原理和思路

1、RGB三原色原理

RGB色彩模式由自然界中光的三原色的混合原理发展而来。RGB分别代表红色(Red)、绿色(Green)、蓝色(Blue)。它的每个象素在每种颜色上可以负载2的8次方(256)种亮度级别,这样三种颜色通道合在一起就可以产生256的3次方(1670多万)种颜色,它在理论上可以还原自然界中存在的任何颜色。

图片2.png

RGB模式的图像支持多个图层。据有R、G、B三个单色通道和一个由它们混合颜色的彩色通道。

在RGB色彩模式的图像中,某种颜色的含量越多,那么这种颜色的亮度也越高,由其产生的结果中这种颜色也就越亮。例如如果三种颜色的亮度级别都为0(亮度级别最低),则它们混合出来的颜色就是黑色;如果它们的亮度级别都为255(亮度级别最高),则其结果为白色。这和自然界中光的三原色的混合原理相同。

RGB色彩模式是运用最广泛的色彩模式之一,它能适应多种输出的需要,并能较完整地还原图像的颜色信息。如大多数的显示屏、RGB打印、多种写真输出设备都需要用RGB色彩模式的图像来输出。

2、项目设计思路

该项目使用开源硬件 Arduino及编程工具 Mixly 软件,通过旋钮调整控制红、绿、 蓝 LED 灯的亮灭及亮度,再由Arduino根据旋钮值,控制RGB灯板精确地混合出其他各种颜色并显示出来,同时使用OLED液晶屏将单色的亮度(0-255)显示在上面,方便使用者明白现在的颜色是由哪些颜色混合,并能够清晰的指导各个单色的亮度。

步骤4 四、使用材料和功能

Arduino nano及扩展板、红色 LED 灯、绿色 LED 灯、蓝色 LED 灯、RGB 灯板、旋钮×3、面包板、杜邦线若干、9V 电池。

其他工具及材料: 剪刀、胶枪、裁纸刀、烙铁、焊锡丝、3D打印机及其耗材等。

Arduino nano功能:主控,存储执行程序;

扩展板功能:通过I/O接口,实现Arduino nano与旋钮、RGB灯板、LED灯、旋钮之间的连接。通过电源接口连接电池供电。同时扩展板自身还带有电源开关。

旋钮功能:通过主控程序将旋钮的模拟值(0-1023)进行映射,得到范围为0-255的数字控制三色灯的亮度。

单色LED灯功能:分别显示红、绿、蓝三种单色的亮度。

RGB灯板功能:主控根据旋钮值(三种单色值0—255),控制灯板自带的三原色灯进行混合显示。

步骤5 活动内容、过程和步骤

1、材料工具准备

根据项目计划及材料清单,备齐需要的材料和工具,如下图:

图片3.png

2、电路连接

将三个单色灯负极及 RGB 灯板(共阳极灯板) 的信号管脚分别连接至 Arduino NANO 扩展板的 D9、D10、D11 信号管脚,同时将 RGB灯板和三个 LED 灯的正极连接到扩展板的正极;使用 3p杜邦线分别将三个旋钮连接至 Arduino NANO 扩展板的 A0、A1、A2 管脚;将 OLED 液晶显示屏连接至扩展板的IIC 管脚;9V 电池通过电源线直接连接扩展板的电源接口。

电路图设计如下:

图片4.png

3、程序编写

编程软件使用Arduino IDE 和 Mixly。通过管脚(A0、A1、A2)采集旋钮模拟数值(0-1023),然后通过映射转换为 0-255,转换后的数值通过 D9、D10、D11 信号管脚进行模拟输出控制相应的 LED 灯和 RGB 灯板颜色。

代码
#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
volatile int R;
volatile int G;
volatile int B;

void RGB_oled() {
  u8g2.setFont(u8g2_font_courR12_tf);
  u8g2.setFontPosTop();
  u8g2.setCursor(40,2);
  u8g2.print("color");
  u8g2.setCursor(25,20);
  u8g2.print(String("R:") + String((255 - R)));
  u8g2.setCursor(25,35);
  u8g2.print(String("G:") + String((255 - G)));
  u8g2.setCursor(25,50);
  u8g2.print(String("B:") + String((255 - B)));
}

void setup(){
  u8g2.setI2CAddress(0x3C*2);
  u8g2.begin();
  R = 0;
  G = 0;
  B = 0;
  u8g2.enableUTF8Print();

}

void loop(){
  R = (map(analogRead(A0), 1023, 0, 0, 255));
  G = (map(analogRead(A1), 1023, 0, 0, 255));
  B = (map(analogRead(A2), 1023, 0, 0, 255));
  analogWrite(11,R);
  analogWrite(10,G);
  analogWrite(9,B);
  u8g2.firstPage();
  do
  {
    RGB_oled();
  }while(u8g2.nextPage());
  delay(20);
}

图形化代码(Mixly)

图片5.png
图片6.png

4、外观制作

⑴使用123d design建模,将外壳分为上盖和下底两部分。

首先设计上盖。点击草图绘制矩形,长为140mm,宽为  130mm,向上拉升1.5mm,然后根据纸质版的上盖结构。设计开孔如下:

① RGB 灯板开孔:在草图左上脚处绘制长为20mm,宽为3mm的矩形,向右移动60mm,向下移动20mm,向下拉伸1.5mm。

②以距左边边框间距为40mm处为圆心,绘制 LED灯的开孔,直径为5mm,点击阵列,阵列个数为3个,间距为30mm,然后选中向下拉伸2mm,旋钮开孔即可获得。

③OLED 液晶屏开孔。首先点击绘制草图按钮,绘制一个长为28mm,宽为26mm的矩形,再向下拉升5 mm(OLED 液晶屏两侧需卡在外壳以内);再在拉升的基础上,绘制长为20mm,宽为26mm的矩形(上下间距为4mm),然后下拉10 mm;在此基础上,下边缘处绘制一个长为10mm,宽为6mm的矩形,向右移动8mm,下拉10mm,

④旋钮,以距左边边框间距为40mm处为圆心,绘制直径为5mm的圆,然后点击阵列按钮,阵列个数设为3个,间距设为30mm,最后选中三个旋钮向下拉伸2mm,即可得到旋钮的开孔。

其次,设计下底。点击绘制草图,绘制矩形1,长为139.2mm,宽为129.2mm的矩形,向上拉伸45mm;点击绘制草图,绘制矩形2,长为138.2mm,宽为 128.2mm的矩形,向右和下移动0.5mm,向下拉伸5mm;点击绘制草图,绘制矩形3,长为136mm,宽为 126mm的矩形,向右和下移动1.5mm,向下拉伸42mm,即可得到底。

然后,将设计好的外壳切片之后,主备3D耗材进行打印。

再次,将RGB 灯板、三个 LED 灯、 OLED 液晶屏、三个旋钮放置于外壳内部,将所有电路部分放置于纸盒内部,使得作品外观整洁美观。

 

3D打印外壳如下图:

图片7.png

5、调试

上传程序,并对作品进行调试,修改程序及其他不完善的地方, 最终达到预期效果。

图片8.png

步骤6 预期效果与呈现方式

1、作品最终效果图片

图片9.png
图片10.png

2、功能介绍

通过三个旋钮分别控制红、绿、蓝 LED 灯的亮灭及亮度,RGB 灯板显示三原色混合后的颜色。OLED 液晶显示屏实时 显示 RGB 三原色的值(0-255)。通过该项目可以清晰的理解三原色及颜色的合成。

3、效果演示

图片颜色与实际颜色有差异,图片效果仅做参考。

图片11.png
图片12.png

4、操作说明

通过旋钮顺时针旋转,调节三原色色值从 0 至255 进行变化,观察三原色 LED 灯及 RGB 灯板颜色变化。

步骤7 作品创新点

该作品是一个非常直观的学习光的三原色、及光是如何产生的实验装置。使用者可以自己动手,通过调节旋钮,改变三原色的亮灭及亮度,通过不同的混合方式,组合出不同颜色,实验过程简单,操作容易,实验效果非常直观、还非常有趣,视觉效果良好,可以大大提升实验的效果。

材料清单

  • arduino nano X1
  • 旋钮 X3
  • LED-红 X1
  • LED-绿 X1
  • LED-蓝 X1
  • RGB LCD多彩发光板 X1 链接

评论

user-avatar