0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino的简单混色灯设计方案

科技观察员 来源:circuitdigest 作者:里沙布·耆那教 2022-11-15 17:12 次阅读

如果我们可以使用单个 RGB LED 生成不同的颜色并使我们房间的角落更具吸引力会怎样?因此,这是一个基于Arduino的简单混色灯,当房间光线发生变化时,它可以改变颜色。所以这盏灯会根据房间的光照条件自动改变颜色。

每种颜色都是红色,绿色和蓝色的组合。所以我们可以通过 使用红色、绿色和蓝色生成任何颜色 .因此,在这里我们将改变PWM,即LDR上的光强度。这将进一步改变RGB LED中红色,绿色和蓝色的强度,并且会产生不同的颜色。

下表显示了占空比变化的颜色组合。

所需材料:

1 x Arduino UNO

1 x 面包板

3 x 220 欧姆电阻器

3 x 1 千欧姆电阻

跳线

3 x LDR

3 x 彩色条带(红色、绿色、蓝色)

1 个 RGB 指示灯

LDR:

我们将在本电路中使用光敏电阻(或光敏电阻器、LDR或光导电池)。LDR由半导体材料制成,使其具有光敏特性。这些LDR或光敏电阻器的工作原理是“光导率”。现在这个原理说的是,每当光落在LDR表面(在这种情况下)时,元件的电导就会增加,或者换句话说,当光落在LDR表面时,LDR的电阻就会下降。LDR电阻降低的这一特性之所以得以实现,是因为它是表面使用的半导体材料的特性。

poYBAGNzWAyAVrW3AACNfVE6em8541.jpg

在这里,三个LDR传感器用于控制RGB LED内部单个红色,绿色和蓝色LED的亮度。

RGB 指示灯:

RGB LED有两种类型,一种是共阴极型(共负极),另一种是共阳极型(共正极)型。在CC(共阴极或共负极)中,将有三个正极端子,每个端子代表一种颜色,一个负极端子代表所有三种颜色。

pYYBAGNzWA2ALlJIAAAZdwp1_zQ820.jpg

poYBAGNzWA-AB-MaAAAbQozAbxI340.png

在我们的电路中,我们将使用CA(共阳极或共正极)类型。在共阳极类型中,如果我们希望红色LED导通,我们需要将红色LED引脚接地并为公共正极供电。所有 LED 也是如此。在此处了解如何将 RGB LED 与 Arduino 连接。

电路图:

pYYBAGNzWBKAFaYmAACcHq6In-0614.png

上面给出了该项目的完整电路图。电路图中显示的+5V和接地连接可以从Arduino的5V和接地引脚获得。Arduino本身可以从笔记本电脑或通过DC插孔使用12V适配器或9V电池供电。

编程说明:

首先,我们声明所有输入和输出引脚,如下所示。

const byte red_sensor_pin = A0;

const byte green_sensor_pin = A1;

const byte blue_sensor_pin = A2;

const byte green_led_pin = 9;

const byte blue_led_pin = 10;

const byte red_led_pin = 11;

将传感器和 LED 的初始值声明为 0。

unsigned int red_led_value = 0;

unsigned int blue_led_value = 0;

unsigned int green_led_value = 0;

unsigned int red_sensor_value = 0;

unsigned int blue_sensor_value = 0;

unsigned int green_sensor_value = 0;

void setup() {

pinMode(red_led_pin,OUTPUT);

pinMode(blue_led_pin,OUTPUT);

pinMode(green_led_pin,OUTPUT);

Serial.begin(9600);

}

在循环部分,我们将使用analogRead();函数输出三个传感器,并存储在三个不同的变量中。

void loop() {

red_sensor_value = analogRead(red_sensor_pin);

delay(50);

blue_sensor_value = analogRead(blue_sensor_pin);

delay(50);

green_sensor_value = analogRead(green_sensor_pin);

将这些值打印到串行监视器上以进行调试

Serial.println("Raw Sensor Values:");

Serial.print("t Red: ");

Serial.print(red_sensor_value);

Serial.print("t Blue: ");

Serial.print(blue_sensor_value);

Serial.print("t Green: ");

Serial.println(green_sensor_value);

我们将从传感器获得 0-1023 个值,但我们的 Arduino PWM 引脚有 0-255 个值作为输出。因此,我们必须将原始值转换为 0-255。为此,我们必须将原始值除以 4,或者简单地使用 Arduino 的映射函数来转换这些值。

red_led_value = red_sensor_value / 4; // define Red LED

blue_led_value = blue_sensor_value / 4; // define Blue LED

green_led_value = green_sensor_value / 4; // define Green Led

将映射值打印到串行监视器

Serial.println("Mapped Sensor Values:");

Serial.print("t Red: ");

Serial.print(red_led_value);

Serial.print("t Blue: ");

Serial.print(blue_led_value);

Serial.print("t Green: ");

Serial.println(green_led_value);

使用 analogWrite() 设置 RGB LED 的输出

analogWrite(red_led_pin,red_led_value); // indicate red LED

analogWrite(blue_led_pin,blue_led_value); // indicate blue LED

analogWrite(green_led_pin,green_led_value); // indicate green

Arduino混色灯的工作原理:

pYYBAGNzWBaAZ7byAAD-aJKvJy4358.jpg

由于我们使用三个LDR,因此当光入射到这些传感器上时,它的电阻会发生变化,因此Arduino的模拟引脚上的电压也会发生变化,Arduino的模拟引脚充当传感器的输入引脚。

当这些传感器上的光强度发生变化时,RGB 中的 LED 会随着电阻量的变化而发光,并且我们使用 PWM 的 RGB LED 中有不同的颜色混合。

const byte red_sensor_pin = A0;

const byte green_sensor_pin = A1;

const byte blue_sensor_pin = A2;

const byte green_led_pin = 9;

const byte blue_led_pin = 10;

const byte red_led_pin = 11;


unsigned int red_led_value = 0;

unsigned int blue_led_value = 0;

unsigned int green_led_value = 0;

unsigned int red_sensor_value = 0;

unsigned int blue_sensor_value = 0;

unsigned int green_sensor_value = 0;


void setup() {

pinMode(red_led_pin,OUTPUT);

pinMode(blue_led_pin,OUTPUT);

pinMode(green_led_pin,OUTPUT);

Serial.begin(9600);

}


void loop() {

red_sensor_value = analogRead(red_sensor_pin);

delay(50);

blue_sensor_value = analogRead(blue_sensor_pin);

delay(50);

green_sensor_value = analogRead(green_sensor_pin);

// print those values onto the serial monitor

Serial.println("Raw Sensor Values:");

Serial.print("t Red: ");

Serial.print(red_sensor_value);

Serial.print("t Blue: ");

Serial.print(blue_sensor_value);

Serial.print("t Green: ");

Serial.println(green_sensor_value);

// convert from 0-1023 to 0-255

red_led_value = red_sensor_value / 4; // define Red LED

blue_led_value = blue_sensor_value / 4; // define Blue LED

green_led_value = green_sensor_value / 4; // define Green LEd

// print mapped values to serial monitor

Serial.println("Mapped Sensor Values:");

Serial.print("t Red: ");

Serial.print(red_led_value);

Serial.print("t Blue: ");

Serial.print(blue_led_value);

Serial.print("t Green: ");

Serial.println(green_led_value);

// use analogWrite() to set output for RGB LED

analogWrite(red_led_pin,red_led_value); // indicate red LED

analogWrite(blue_led_pin,blue_led_value); // indicate blue LED

analogWrite(green_led_pin,green_led_value); // indicate green

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22450

    浏览量

    645891
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184847
收藏 人收藏

    评论

    相关推荐

    2.4 设计方案评审 #硬声创作季 #Arduino

    Arduino
    jf_06209345
    发布于 :2022年08月20日 21:49:03

    【mBot试用体验】2、LED点灯简单示例(图形化编程+Arduino IDE)

    模式和舞台模式 点击上传到Arduino 上传完成后你就可以看到板子上标有L的蓝色灯每隔1s闪烁 2、从工程师角度如何点亮LED灯——Arduino IDE C语言编程先看硬件原理图LED蓝
    发表于 12-08 17:55

    256色蓝牙4.0调色灯方案详解

    色灯光是智能家庭的重要组成部分。本方案采用智能LED照明低功耗蓝牙模块,兼容低功耗蓝牙4.0(BLE)协议;配合蓝牙灯APP,即可通过智能手机随心控制LED灯。方案利用蓝牙4.0技术进行调光链接
    发表于 11-21 16:37

    求一种可解决LED照明色设计挑战的实现方案

    为了帮助广大的照明设计工程师解决LED色设计的挑战,本文介绍了一种基于赛普拉斯的EZ-Color控制器不需要指定LED型号规格,而且能快速简单完成一个性能优良的高亮LED照明设计方案
    发表于 04-12 06:58

    求一种最简单的无线充电发射端设计方案

    求一种最简单的无线充电发射端设计方案?有没有大神分享一下这方面的相关资料啊
    发表于 07-21 08:15

    基于STM32单片机的蓝牙智能小车设计方案是什么

    STM32库函数开发系列文章目录第一篇:STM32F103ZET6单片机双串口互发程序设计与实现第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案文章目录STM32库函数开发系列文章目
    发表于 11-25 08:53

    简单DIY的51蓝牙遥控小车设计方案是什么

    51单片机物联网智能小车系列文章目录第一篇:最简单DIY的51蓝牙遥控小车设计方案文章目录51单片机物联网智能小车系列文章目录前言一、最简单DIY的51蓝牙遥控小车设计方案是什么?二、
    发表于 12-01 08:13

    求一种单键三档调光调色灯方案

    单键三档调光调色灯方案基本组成1个触摸按键,2路PWM输出,1个高低电平输出脚。产品功能1、上电默认关机状态,TK4输出高电平;第一次开机默认黄光47.5%亮度;2、按键功能:①在关机时:短按TK4
    发表于 02-14 06:16

    一种简单实用的测角码盘设计方案

    介绍一种制作简单、价格便宜、应用面广的测角码盘设计方案;并以码盘信号的产生、处理和传输为主线, 详细说明工作原理, 进而再次证明其简单便宜的突出优点。
    发表于 04-15 09:58 25次下载

    一种简单实用的测角码盘设计方案

    介绍一种制作简单、价格便宜、应用面广的测角码盘设计方案;并以码盘信号的产生、处理和传输为主线, 详细说明工作原理, 进而再次证明其简单便宜的突出优点。
    发表于 05-16 14:07 20次下载

    一种简单实用的测角码盘设计方案

    摘要:介绍一种制作简单、价格便宜、应用面广的测角码盘设计方案;并以码盘信号的产生、处理和传输为主线,详细说明工作原理,进而再次证明其简单便宜的
    发表于 03-24 13:14 1361次阅读
    一种<b class='flag-5'>简单</b>实用的测角码盘<b class='flag-5'>设计方案</b>

    基于Arduino单片机的跌倒报警系统设计方案

    本文接介绍了基于Arduino单片机的跌倒报警系统设计方案
    发表于 06-05 09:00 11次下载

    简单DIY基于STM32单片机的蓝牙智能小车设计方案

    STM32库函数开发系列文章目录第一篇:STM32F103ZET6单片机双串口互发程序设计与实现第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案文章目录STM32库函数开发系列文章目
    发表于 11-18 10:06 27次下载
    最<b class='flag-5'>简单</b>DIY基于STM32单片机的蓝牙智能小车<b class='flag-5'>设计方案</b>

    Arduino WS2812B LED灯带设计方案

    Arduino WS2812B LED灯带可单独控制每个LED的亮度和颜色,提供了一种简单而酷炫的LED效果体验。
    发表于 04-24 08:36 1.1w次阅读
    <b class='flag-5'>Arduino</b> WS2812B LED灯带<b class='flag-5'>设计方案</b>

    基于Arduino设计的简单小钢琴

    方案介绍一个简单的小型钢琴,不仅顾名思义,而且很小,但它源自Arduino Nano Every。硬件部件Arduino Nano Every×    1个    电阻1k欧姆    
    发表于 12-30 15:20 0次下载