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

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

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

利用接近傳感器制作Arduino LED節(jié)日彩燈

哥兒 ? 來(lái)源:哥兒 ? 作者:哥兒 ? 2023-02-24 09:51 ? 次閱讀

這篇文章來(lái)源于DevicePlus.com英語(yǔ)網(wǎng)站的翻譯稿。

制作Arduino LED節(jié)日彩燈中,我們用Arduino和一條全彩LED燈串做了一種裝飾性照明彩燈。這次,我們采用ROHM接近傳感器讓彩燈更具互動(dòng)性:一旦有物體接近,LED燈就會(huì)發(fā)出奇特的色彩!

今天的電子設(shè)計(jì)技巧

估計(jì)完成時(shí)間:60分鐘

所需部件

Arduino UNO R3

WS2811 5M LED燈條 240 SMD 5050

ROHM傳感器評(píng)估套件

目錄

連接接近傳感器

定制程序

讓我們來(lái)點(diǎn)亮LED燈吧!

1.連接接近傳感器

我們會(huì)使用Arduino傳感器 – ROHM傳感器評(píng)估套件概覽介紹的ALS/接近傳感器(RPR-0521RS)。讓我們將傳感器開(kāi)發(fā)板和傳感器連至Arduino。

當(dāng)有物體(比如您的手)靠近接近傳感器時(shí),呈放射狀排列的LED被觸發(fā),并形成絢爛的獨(dú)特光效。

pYYBAGPzGBeAJudbAAF-DN8Y6Hw681.jpg

圖1 傳感器開(kāi)發(fā)板和Arduino上的RPR-0521RS接近傳感器

讓我們來(lái)看一下傳感器所需的位置和電壓。由于接近傳感器是I2C接口,因此應(yīng)位于藍(lán)色區(qū)域,而且其所需電壓為3V,因此我們需要將跳線引腳設(shè)置為中間的3V。

pYYBAGPzGBmACWtRAAHoUdWr77Y256.jpg

圖2 傳感器開(kāi)發(fā)板上的傳感器位置

LED燈串的供電需要另外的5 V電源,不能從Arduino取電。如果我們?cè)噲D用Arduino的VCC或5 V為L(zhǎng)ED供電,那么Arduino可能會(huì)由于LED燈串的大電流而燒壞。

poYBAGPzGBuAAuYRAAE_KRP9Qmw201.jpg

圖3 單獨(dú)的外部電源適配器供電,與Arduino分開(kāi)

上次我們只使用了一個(gè)LED燈串,而這次我們并聯(lián)3個(gè)LED燈串。由于是并聯(lián)連接,因此電源和GND共用公共點(diǎn)。我們可以連接更多的LED,但有具體數(shù)量取決于LED燈串上發(fā)光的LED數(shù)量以及電源適配器的電流容量。

LED燈串上每個(gè)LED的工作電流約為20 mA。由于供電電流為1.3A,所以可同時(shí)點(diǎn)亮65個(gè)LED燈。

pYYBAGPzGB2AMLh-AACZ9ExkF2I441.gif

圖4 并聯(lián)連接的LED燈帶

poYBAGPzGB-AH-mvAAFD5Yz4mFY825.jpg

圖5 從Arduino延伸出來(lái)的LED燈串

現(xiàn)在,硬件部分已經(jīng)完成,讓我們繼續(xù)為L(zhǎng)ED燈串編程

2.定制程序

為了控制全彩LED燈串或燈條,我們?cè)谏弦黄?文章中引入了“NeoPixel”庫(kù)。這次我們繼續(xù)使用NeoPixel。

以下是以接近傳感器為輸入的LED燈串控制程序:

#include 

#include 

#include 



#define PIN 6   //pin number of the signal terminal

#define LED_NUM 50  //number of LEDs


RPR0521RS rpr0521rs;

Adafruit_NeoPixel ledtape = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800);  //如果所用LED燈帶的控制IC是WS2812,那么第三個(gè)參數(shù)是NEO_KHZ800,如果控制IC是WS2811則是NEO_KHZ400


int wait = 200;


void setup() {

ledtape.begin();

ledtape.show();   //reflects once in all OFF state


byte rc;

Serial.begin(9600);

while (!Serial);

Wire.begin();

rc = rpr0521rs.init();

}


void loop() {

byte rc;

unsigned short ps_val;

float als_val;

byte near_far;

Serial.println("=============================");


rc = rpr0521rs.get_psalsval(&ps_val, &als_val);

//當(dāng)獲取傳感器值時(shí)

if (rc == 0) {

Serial.print("PS:");

Serial.print(ps_val);

Serial.println();


//接近時(shí)LED燈亮起

if(ps_val > 5){

ps_val  = 500 - ps_val;

if(ps_val < 0){

ps_val = 0;

}

simpleLED(ps_val/10);

}


if (als_val != RPR0521RS_ERROR) {

Serial.print("ALS:");

Serial.print(als_val);

Serial.println();

}

}

delay(5);

}


int LEDtale[10];  //arrangement for the trajectory of LED


//

//逐個(gè)點(diǎn)亮

//

void simpleLED(int delaytime){

uint16_t i, j;

j=0;

for(i=0; i < ledtape.numPixels(); i++) {

ledtape.setPixelColor(i, rotateColor(((i) * 256 / ledtape.numPixels()) & 255));

LEDtale[0]  = rotateColor(((i) * 256 * 9/10 / ledtape.numPixels()) & 255);


for(j=1; j < 10; j++){

LEDtale[j]  = rotateColor(((i) * 256 * (10-j)/10 / ledtape.numPixels()) & 255);

uint16_t m = i-j;

if(m < 0){

m += 50;

}

ledtape.setPixelColor(m, LEDtale[j]);

}


ledtape.show();

for(j=1; j < 10; j++){

uint16_t m = i-j;

if(m < 0){

m += 50;

}

delay(0);

ledtape.setPixelColor(m, ledtape.Color(0,0,0));

ledtape.show();

}

ledtape.setPixelColor(i, ledtape.Color(0,0,0));

ledtape.show();

}

ledtape.show();

delay(delaytime);

}



//RGB 顏色轉(zhuǎn)變函數(shù)

uint32_t rotateColor(byte WheelPos) {

if(WheelPos < 85) {

return ledtape.Color(WheelPos * 3, 255 - WheelPos * 3, 0);

} else if(WheelPos < 170) {

WheelPos -= 85;

return ledtape.Color(255 - WheelPos * 3, 0, WheelPos * 3);

} else {

WheelPos -= 170;

return ledtape.Color(0, WheelPos * 3, 255 - WheelPos * 3);

}

}

我們修改了最后一個(gè)程序中的一些東西。首先,我們添加了接近傳感器的輸入處理。其次,我們改變了LED的點(diǎn)亮方式。

接近傳感器的輸入應(yīng)檢查傳感器評(píng)估套件(Sensor Evaluation Kit)的示例程序。其目的是處理來(lái)自傳感器的數(shù)值。如果您只用if語(yǔ)句來(lái)響應(yīng)傳感器,那么只能實(shí)現(xiàn)LED的開(kāi)啟/關(guān)閉。如果將傳感器的值傳遞給點(diǎn)亮LED并改變LED點(diǎn)亮方式的函數(shù),就可以創(chuàng)建更多的交互式照明效果。

//接近時(shí)LED燈亮起

if(ps_val > 5){

ps_val  = 500 - ps_val;

simpleLED(ps_val/10); //Use the sensor value to light the LEDs

}

simpleLED是點(diǎn)亮LED燈串的函數(shù),但是我們現(xiàn)在對(duì)它進(jìn)行處理,以便從LED串的開(kāi)始到結(jié)束逐一點(diǎn)亮LED燈。這可能是不夠的,所以這次我們使用一個(gè)陣列讓LED燈帶在一定程度上線性發(fā)光。

在陣列中,我們運(yùn)行點(diǎn)亮方法10次,然后從當(dāng)前發(fā)光LED的位置開(kāi)始計(jì)數(shù)。

int LEDtale[10];  //安排LED的軌跡

修改程序的這個(gè)部分非常有趣。您可以根據(jù)自己的喜好定制程序。

3.讓我們來(lái)點(diǎn)亮LED燈吧!

讓我們看看運(yùn)轉(zhuǎn)起來(lái)的炫彩光芒吧!

隨著接近距離的改變,LED燈串的光速也發(fā)生變化。

您可以在黑暗的房間嘗試一下,互動(dòng)照明效果會(huì)更棒!

今天,通過(guò)與傳感器評(píng)估套件的接近傳感器相結(jié)合,我們制作了交互式LED燈串。您可以制作更大規(guī)模的LED燈串或燈帶,添加更多的LED。這些燈光會(huì)把您的家變成一個(gè)假日仙境!

審核編輯:湯梓紅

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

    關(guān)注

    240

    文章

    22905

    瀏覽量

    650103
  • 接近傳感器
    +關(guān)注

    關(guān)注

    5

    文章

    182

    瀏覽量

    24372
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185922
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    設(shè)計(jì)一個(gè)節(jié)日彩燈控制

    設(shè)計(jì)一個(gè)節(jié)日彩燈控制。:彩燈分為紅色、黃色、綠色三種色彩,通過(guò)按鍵控制,可完成指定模式流動(dòng)。流動(dòng)模式:先紅色彩燈流動(dòng)、然后是黃色
    發(fā)表于 07-03 12:14

    節(jié)日彩燈控制

    節(jié)日里用彩燈裝飾和美化環(huán)境可以得到很好的效果。這里介紹的控制器使節(jié)日彩燈具有動(dòng)感,交替閃亮的彩燈好似流水。它的
    發(fā)表于 05-28 10:10 ?183次下載

    帶模式控制的LED彩燈制作方法

    帶模式控制的LED彩燈制作方法 8個(gè)LED燈直接連接到Vcc 上,不需要限流電阻。本制作利用
    發(fā)表于 05-12 10:19 ?2635次閱讀
    帶模式控制的<b class='flag-5'>LED</b><b class='flag-5'>彩燈</b>的<b class='flag-5'>制作</b>方法

    89C51單片機(jī)節(jié)日彩燈控制

    全自己制作的89C51單片機(jī)節(jié)日彩燈控制,8*8LED矩陣,protues仿真,protel99se原理圖和pcb圖,供大家參考。
    發(fā)表于 02-23 17:14 ?75次下載

    關(guān)于制作Arduino LED節(jié)日彩燈流程和感想

    這次使用的LED燈串所需電壓是5V,且具有四個(gè)端子。檢查文件時(shí),除了正極和負(fù)極(GND)之外,開(kāi)發(fā)板一側(cè)還有一個(gè)信號(hào)端子和一個(gè)GND端子。由于LED的輸入電壓是5V,因此我想使用Arduino的5V
    的頭像 發(fā)表于 08-22 15:47 ?7835次閱讀

    使用arduino uno、led燈條、IR傳感器模塊制作折紙燈

    電子發(fā)燒友網(wǎng)站提供《使用arduino uno、led燈條、IR傳感器模塊制作折紙燈.zip》資料免費(fèi)下載
    發(fā)表于 11-08 11:28 ?0次下載
    使用<b class='flag-5'>arduino</b> uno、<b class='flag-5'>led</b>燈條、IR<b class='flag-5'>傳感器</b>模塊<b class='flag-5'>制作</b>折紙燈

    使用Arduino和火焰傳感器制作火災(zāi)探測(cè)系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《使用Arduino和火焰傳感器制作火災(zāi)探測(cè)系統(tǒng).zip》資料免費(fèi)下載
    發(fā)表于 11-23 10:00 ?1次下載
    使用<b class='flag-5'>Arduino</b>和火焰<b class='flag-5'>傳感器</b><b class='flag-5'>制作</b>火災(zāi)探測(cè)系統(tǒng)

    使用Arduino制作停車(chē)傳感器

    電子發(fā)燒友網(wǎng)站提供《使用Arduino制作停車(chē)傳感器.zip》資料免費(fèi)下載
    發(fā)表于 12-01 14:08 ?0次下載
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>停車(chē)<b class='flag-5'>傳感器</b>

    使用Arduino制作觸摸傳感器

    電子發(fā)燒友網(wǎng)站提供《使用Arduino制作觸摸傳感器.zip》資料免費(fèi)下載
    發(fā)表于 12-05 15:02 ?0次下載
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>觸摸<b class='flag-5'>傳感器</b>

    使用Simulink和Arduino的紅外接近傳感器

    電子發(fā)燒友網(wǎng)站提供《使用Simulink和Arduino的紅外接近傳感器.zip》資料免費(fèi)下載
    發(fā)表于 12-09 09:43 ?2次下載
    使用Simulink和<b class='flag-5'>Arduino</b>的紅外<b class='flag-5'>接近</b><b class='flag-5'>傳感器</b>

    如何使用Arduino制作LED運(yùn)動(dòng)傳感器

    電子發(fā)燒友網(wǎng)站提供《如何使用Arduino制作LED運(yùn)動(dòng)傳感器.zip》資料免費(fèi)下載
    發(fā)表于 12-12 10:39 ?0次下載
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b><b class='flag-5'>LED</b>運(yùn)動(dòng)<b class='flag-5'>傳感器</b>

    使用Arduino Uno制作溫度和濕度傳感器

    電子發(fā)燒友網(wǎng)站提供《使用Arduino Uno制作溫度和濕度傳感器.zip》資料免費(fèi)下載
    發(fā)表于 02-02 16:49 ?1次下載
    使用<b class='flag-5'>Arduino</b> Uno<b class='flag-5'>制作</b>溫度和濕度<b class='flag-5'>傳感器</b>

    用ROHM傳感器套件制作Arduino LED圣誕樹(shù)

    在此項(xiàng)目中,我們將利用Arduino Mega和RGB LED制作一顆小型LED Arduino
    的頭像 發(fā)表于 02-23 17:56 ?858次閱讀
    用ROHM<b class='flag-5'>傳感器</b>套件<b class='flag-5'>制作</b><b class='flag-5'>Arduino</b> <b class='flag-5'>LED</b>圣誕樹(shù)

    如何利用Arduino實(shí)現(xiàn)激光絆線

    ARDUINO激光絆線,目的:本教程描述了如何使用Arduino Uno制作一個(gè)激光絆線。在制作Arduino
    的頭像 發(fā)表于 02-24 14:36 ?1039次閱讀
    如何<b class='flag-5'>利用</b><b class='flag-5'>Arduino</b>實(shí)現(xiàn)激光絆線

    制作Arduino LED節(jié)日彩燈

    假日季節(jié)來(lái)臨之際,我覺(jué)得利用Arduino和全彩LED燈條制作裝飾彩燈將會(huì)很有趣。
    的頭像 發(fā)表于 02-24 14:28 ?1786次閱讀
    <b class='flag-5'>制作</b><b class='flag-5'>Arduino</b> <b class='flag-5'>LED</b><b class='flag-5'>節(jié)日</b><b class='flag-5'>彩燈</b>