0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Arduino的簡單混色燈設(shè)計方案

科技觀察員 ? 來源:circuitdigest ? 作者:里沙布·耆那教 ? 2022-11-15 17:12 ? 次閱讀

如果我們可以使用單個 RGB LED 生成不同的顏色并使我們房間的角落更具吸引力會怎樣?因此,這是一個基于Arduino的簡單混色燈,當房間光線發(fā)生變化時,它可以改變顏色。所以這盞燈會根據(jù)房間的光照條件自動改變顏色。

每種顏色都是紅色,綠色和藍色的組合。所以我們可以通過 使用紅色、綠色和藍色生成任何顏色 .因此,在這里我們將改變PWM,即LDR上的光強度。這將進一步改變RGB LED中紅色,綠色和藍色的強度,并且會產(chǎn)生不同的顏色。

下表顯示了占空比變化的顏色組合。

所需材料:

1 x Arduino UNO

1 x 面包板

3 x 220 歐姆電阻器

3 x 1 千歐姆電阻

跳線

3 x LDR

3 x 彩色條帶(紅色、綠色、藍色)

1 個 RGB 指示燈

LDR:

我們將在本電路中使用光敏電阻(或光敏電阻器、LDR或光導電池)。LDR由半導體材料制成,使其具有光敏特性。這些LDR或光敏電阻器的工作原理是“光導率”?,F(xiàn)在這個原理說的是,每當光落在LDR表面(在這種情況下)時,元件的電導就會增加,或者換句話說,當光落在LDR表面時,LDR的電阻就會下降。LDR電阻降低的這一特性之所以得以實現(xiàn),是因為它是表面使用的半導體材料的特性。

poYBAGNzWAyAVrW3AACNfVE6em8541.jpg

在這里,三個LDR傳感器用于控制RGB LED內(nèi)部單個紅色,綠色和藍色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);

}

在循環(huán)部分,我們將使用analogRead();函數(shù)輸出三個傳感器,并存儲在三個不同的變量中。

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);

將這些值打印到串行監(jiān)視器上以進行調(diào)試

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 個值作為輸出。因此,我們必須將原始值轉(zhuǎn)換為 0-255。為此,我們必須將原始值除以 4,或者簡單地使用 Arduino 的映射函數(shù)來轉(zhuǎn)換這些值。

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

將映射值打印到串行監(jiān)視器

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() 設(shè)置 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,因此當光入射到這些傳感器上時,它的電阻會發(fā)生變化,因此Arduino的模擬引腳上的電壓也會發(fā)生變化,Arduino的模擬引腳充當傳感器的輸入引腳。

當這些傳感器上的光強度發(fā)生變化時,RGB 中的 LED 會隨著電阻量的變化而發(fā)光,并且我們使用 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

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    22907

    瀏覽量

    650131
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185928
收藏 人收藏

    評論

    相關(guān)推薦

    2.4 設(shè)計方案評審 #硬聲創(chuàng)作季 #Arduino

    Arduino
    jf_06209345
    發(fā)布于 :2022年08月20日 21:49:03

    256色藍牙4.0調(diào)色燈方案詳解

    調(diào)色燈光是智能家庭的重要組成部分。本方案采用智能LED照明低功耗藍牙模塊,兼容低功耗藍牙4.0(BLE)協(xié)議;配合藍牙燈APP,即可通過智能手機隨心控制LED燈。方案利用藍牙4.0技術(shù)進行調(diào)光鏈接
    發(fā)表于 11-21 16:37

    求一種可解決LED照明色設(shè)計挑戰(zhàn)的實現(xiàn)方案

    為了幫助廣大的照明設(shè)計工程師解決LED色設(shè)計的挑戰(zhàn),本文介紹了一種基于賽普拉斯的EZ-Color控制器不需要指定LED型號規(guī)格,而且能快速簡單完成一個性能優(yōu)良的高亮LED照明設(shè)計方案
    發(fā)表于 04-12 06:58

    求一種最簡單的無線充電發(fā)射端設(shè)計方案

    求一種最簡單的無線充電發(fā)射端設(shè)計方案?有沒有大神分享一下這方面的相關(guān)資料啊
    發(fā)表于 07-21 08:15

    簡單DIY的51藍牙遙控小車設(shè)計方案是什么

    51單片機物聯(lián)網(wǎng)智能小車系列文章目錄第一篇:最簡單DIY的51藍牙遙控小車設(shè)計方案文章目錄51單片機物聯(lián)網(wǎng)智能小車系列文章目錄前言一、最簡單DIY的51藍牙遙控小車設(shè)計方案是什么?二、
    發(fā)表于 12-01 08:13

    求一種單鍵三檔調(diào)光調(diào)色燈方案

    單鍵三檔調(diào)光調(diào)色燈方案基本組成1個觸摸按鍵,2路PWM輸出,1個高低電平輸出腳。產(chǎn)品功能1、上電默認關(guān)機狀態(tài),TK4輸出高電平;第一次開機默認黃光47.5%亮度;2、按鍵功能:①在關(guān)機時:短按TK4
    發(fā)表于 02-14 06:16

    一種簡單實用的測角碼盤設(shè)計方案

    介紹一種制作簡單、價格便宜、應用面廣的測角碼盤設(shè)計方案;并以碼盤信號的產(chǎn)生、處理和傳輸為主線, 詳細說明工作原理, 進而再次證明其簡單便宜的突出優(yōu)點。
    發(fā)表于 04-15 09:58 ?25次下載

    一種簡單實用的測角碼盤設(shè)計方案

    介紹一種制作簡單、價格便宜、應用面廣的測角碼盤設(shè)計方案;并以碼盤信號的產(chǎn)生、處理和傳輸為主線, 詳細說明工作原理, 進而再次證明其簡單便宜的突出優(yōu)點。
    發(fā)表于 05-16 14:07 ?20次下載

    一種簡單實用的測角碼盤設(shè)計方案

    摘要:介紹一種制作簡單、價格便宜、應用面廣的測角碼盤設(shè)計方案;并以碼盤信號的產(chǎn)生、處理和傳輸為主線,詳細說明工作原理,進而再次證明其簡單便宜的
    發(fā)表于 03-24 13:14 ?1423次閱讀
    一種<b class='flag-5'>簡單</b>實用的測角碼盤<b class='flag-5'>設(shè)計方案</b>

    基于Arduino單片機的跌倒報警系統(tǒng)設(shè)計方案

    本文接介紹了基于Arduino單片機的跌倒報警系統(tǒng)設(shè)計方案。
    發(fā)表于 06-05 09:00 ?11次下載

    簡單DIY基于STM32單片機的藍牙智能小車設(shè)計方案

    STM32庫函數(shù)開發(fā)系列文章目錄第一篇:STM32F103ZET6單片機雙串口互發(fā)程序設(shè)計與實現(xiàn)第二篇:最簡單DIY基于STM32單片機的藍牙智能小車設(shè)計方案文章目錄STM32庫函數(shù)開發(fā)系列文章目
    發(fā)表于 11-18 10:06 ?29次下載
    最<b class='flag-5'>簡單</b>DIY基于STM32單片機的藍牙智能小車<b class='flag-5'>設(shè)計方案</b>

    單鍵三檔調(diào)光調(diào)色燈方案

    單鍵三檔調(diào)光調(diào)色燈方案基本組成1個觸摸按鍵,2路PWM輸出,1個高低電平輸出腳。產(chǎn)品功能1、上電默認關(guān)機狀態(tài),TK4輸出高電平;第一次開機默認黃光47.5%亮度;2、按鍵功能:①在關(guān)機時:短按TK4
    發(fā)表于 12-09 16:06 ?33次下載
    單鍵三檔調(diào)光調(diào)<b class='flag-5'>色燈</b><b class='flag-5'>方案</b>

    基于Arduino設(shè)計的簡單小鋼琴

    方案介紹一個簡單的小型鋼琴,不僅顧名思義,而且很小,但它源自Arduino Nano Every。硬件部件Arduino Nano Every×?? ?1個?? ?電阻1k歐姆?? ?
    發(fā)表于 12-30 15:20 ?0次下載

    arduino色機

    電子發(fā)燒友網(wǎng)站提供《arduino色機.zip》資料免費下載
    發(fā)表于 06-20 10:26 ?0次下載
    <b class='flag-5'>arduino</b><b class='flag-5'>混</b>色機

    RGB色器Arduino項目

    電子發(fā)燒友網(wǎng)站提供《RGB色器Arduino項目.zip》資料免費下載
    發(fā)表于 07-11 14:37 ?1次下載
    RGB<b class='flag-5'>混</b>色器<b class='flag-5'>Arduino</b>項目