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

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

3天内不再提示

利用接近传感器制作Arduino LED节日彩灯

哥儿 来源:哥儿 作者:哥儿 2023-02-24 09:51 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

制作Arduino LED节日彩灯中,我们用Arduino和一条全彩LED灯串做了一种装饰性照明彩灯。这次,我们采用ROHM接近传感器让彩灯更具互动性:一旦有物体接近,LED灯就会发出奇特的色彩!

今天的电子设计技巧

估计完成时间:60分钟

所需部件

Arduino UNO R3

WS2811 5M LED灯条 240 SMD 5050

ROHM传感器评估套件

目录

连接接近传感器

定制程序

让我们来点亮LED灯吧!

1.连接接近传感器

我们会使用Arduino传感器 – ROHM传感器评估套件概览介绍的ALS/接近传感器(RPR-0521RS)。让我们将传感器开发板和传感器连至Arduino。

当有物体(比如您的手)靠近接近传感器时,呈放射状排列的LED被触发,并形成绚烂的独特光效。

pYYBAGPzGBeAJudbAAF-DN8Y6Hw681.jpg

图1 传感器开发板和Arduino上的RPR-0521RS接近传感器

让我们来看一下传感器所需的位置和电压。由于接近传感器是I2C接口,因此应位于蓝色区域,而且其所需电压为3V,因此我们需要将跳线引脚设置为中间的3V。

pYYBAGPzGBmACWtRAAHoUdWr77Y256.jpg

图2 传感器开发板上的传感器位置

LED灯串的供电需要另外的5 V电源,不能从Arduino取电。如果我们试图用Arduino的VCC或5 V为LED供电,那么Arduino可能会由于LED灯串的大电流而烧坏。

poYBAGPzGBuAAuYRAAE_KRP9Qmw201.jpg

图3 单独的外部电源适配器供电,与Arduino分开

上次我们只使用了一个LED灯串,而这次我们并联3个LED灯串。由于是并联连接,因此电源和GND共用公共点。我们可以连接更多的LED,但有具体数量取决于LED灯串上发光的LED数量以及电源适配器的电流容量。

LED灯串上每个LED的工作电流约为20 mA。由于供电电流为1.3A,所以可同时点亮65个LED灯。

pYYBAGPzGB2AMLh-AACZ9ExkF2I441.gif

图4 并联连接的LED灯带

poYBAGPzGB-AH-mvAAFD5Yz4mFY825.jpg

图5 从Arduino延伸出来的LED灯串

现在,硬件部分已经完成,让我们继续为LED灯串编程

2.定制程序

为了控制全彩LED灯串或灯条,我们在上一篇 文章中引入了“NeoPixel”库。这次我们继续使用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,那么第三个参数是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);

//当获取传感器值时

if (rc == 0) {

Serial.print("PS:");

Serial.print(ps_val);

Serial.println();


//接近时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


//

//逐个点亮

//

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 颜色转变函数

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

}

}

我们修改了最后一个程序中的一些东西。首先,我们添加了接近传感器的输入处理。其次,我们改变了LED的点亮方式。

接近传感器的输入应检查传感器评估套件(Sensor Evaluation Kit)的示例程序。其目的是处理来自传感器的数值。如果您只用if语句来响应传感器,那么只能实现LED的开启/关闭。如果将传感器的值传递给点亮LED并改变LED点亮方式的函数,就可以创建更多的交互式照明效果。

//接近时LED灯亮起

if(ps_val > 5){

ps_val  = 500 - ps_val;

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

}

simpleLED是点亮LED灯串的函数,但是我们现在对它进行处理,以便从LED串的开始到结束逐一点亮LED灯。这可能是不够的,所以这次我们使用一个阵列让LED灯带在一定程度上线性发光。

在阵列中,我们运行点亮方法10次,然后从当前发光LED的位置开始计数。

int LEDtale[10];  //安排LED的轨迹

修改程序的这个部分非常有趣。您可以根据自己的喜好定制程序。

3.让我们来点亮LED灯吧!

让我们看看运转起来的炫彩光芒吧!

随着接近距离的改变,LED灯串的光速也发生变化。

您可以在黑暗的房间尝试一下,互动照明效果会更棒!

今天,通过与传感器评估套件的接近传感器相结合,我们制作了交互式LED灯串。您可以制作更大规模的LED灯串或灯带,添加更多的LED。这些灯光会把您的家变成一个假日仙境!

审核编辑:汤梓红

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

    关注

    242

    文章

    23268

    浏览量

    660745
  • 接近传感器
    +关注

    关注

    5

    文章

    189

    浏览量

    24427
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187018
收藏 人收藏

    评论

    相关推荐

    设计一个节日彩灯控制

    设计一个节日彩灯控制。:彩灯分为红色、黄色、绿色三种色彩,通过按键控制,可完成指定模式流动。流动模式:先红色彩灯流动、然后是黄色
    发表于 07-03 12:14

    节日彩灯控制

    节日里用彩灯装饰和美化环境可以得到很好的效果。这里介绍的控制器使节日彩灯具有动感,交替闪亮的彩灯好似流水。它的
    发表于 05-28 10:10 183次下载

    带模式控制的LED彩灯制作方法

    带模式控制的LED彩灯制作方法 8个LED灯直接连接到Vcc 上,不需要限流电阻。本制作利用
    发表于 05-12 10:19 2679次阅读
    带模式控制的<b class='flag-5'>LED</b><b class='flag-5'>彩灯</b>的<b class='flag-5'>制作</b>方法

    89C51单片机节日彩灯控制

    全自己制作的89C51单片机节日彩灯控制,8*8LED矩阵,protues仿真,protel99se原理图和pcb图,供大家参考。
    发表于 02-23 17:14 75次下载

    关于制作Arduino LED节日彩灯流程和感想

    这次使用的LED灯串所需电压是5V,且具有四个端子。检查文件时,除了正极和负极(GND)之外,开发板一侧还有一个信号端子和一个GND端子。由于LED的输入电压是5V,因此我想使用Arduino的5V
    的头像 发表于 08-22 15:47 7947次阅读

    使用arduino uno、led灯条、IR传感器模块制作折纸灯

    电子发烧友网站提供《使用arduino uno、led灯条、IR传感器模块制作折纸灯.zip》资料免费下载
    发表于 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和火焰传感器制作火灾探测系统

    电子发烧友网站提供《使用Arduino和火焰传感器制作火灾探测系统.zip》资料免费下载
    发表于 11-23 10:00 1次下载
    使用<b class='flag-5'>Arduino</b>和火焰<b class='flag-5'>传感器</b><b class='flag-5'>制作</b>火灾探测系统

    使用Arduino制作停车传感器

    电子发烧友网站提供《使用Arduino制作停车传感器.zip》资料免费下载
    发表于 12-01 14:08 0次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>停车<b class='flag-5'>传感器</b>

    使用Arduino制作触摸传感器

    电子发烧友网站提供《使用Arduino制作触摸传感器.zip》资料免费下载
    发表于 12-05 15:02 0次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>触摸<b class='flag-5'>传感器</b>

    使用Simulink和Arduino的红外接近传感器

    电子发烧友网站提供《使用Simulink和Arduino的红外接近传感器.zip》资料免费下载
    发表于 12-09 09:43 2次下载
    使用Simulink和<b class='flag-5'>Arduino</b>的红外<b class='flag-5'>接近</b><b class='flag-5'>传感器</b>

    如何使用Arduino制作LED运动传感器

    电子发烧友网站提供《如何使用Arduino制作LED运动传感器.zip》资料免费下载
    发表于 12-12 10:39 0次下载
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b><b class='flag-5'>LED</b>运动<b class='flag-5'>传感器</b>

    使用Arduino Uno制作温度和湿度传感器

    电子发烧友网站提供《使用Arduino Uno制作温度和湿度传感器.zip》资料免费下载
    发表于 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圣诞树

    在此项目中,我们将利用Arduino Mega和RGB LED制作一颗小型LED Arduino
    的头像 发表于 02-23 17:56 1050次阅读
    用ROHM<b class='flag-5'>传感器</b>套件<b class='flag-5'>制作</b><b class='flag-5'>Arduino</b> <b class='flag-5'>LED</b>圣诞树

    如何利用Arduino实现激光绊线

    ARDUINO激光绊线,目的:本教程描述了如何使用Arduino Uno制作一个激光绊线。在制作Arduino
    的头像 发表于 02-24 14:36 1174次阅读
    如何<b class='flag-5'>利用</b><b class='flag-5'>Arduino</b>实现激光绊线

    制作Arduino LED节日彩灯

    假日季节来临之际,我觉得利用Arduino和全彩LED灯条制作装饰彩灯将会很有趣。
    的头像 发表于 02-24 14:28 1951次阅读
    <b class='flag-5'>制作</b><b class='flag-5'>Arduino</b> <b class='flag-5'>LED</b><b class='flag-5'>节日</b><b class='flag-5'>彩灯</b>