亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

LED Matrix + Motion Sensor Door Display [Arduino Holiday]

组件和用品

Arduino UNO
× 1
Arduino Nano R3
× 1
PIR 运动传感器(通用)
× 1
中继(通用)
× 1
跳线(通用)
× 1
PC PSU 电源线
× 1
RGB LED 灯条
× 1
8x8 Neopixel Panel
× 3

必要的工具和机器

烙铁(通用)
剥线钳

关于这个项目

该项目结合了 3 个 WS2812B 8x8 RGB LED 矩阵和一个 PIR 运动传感器,用“Happy Holidays &Happy New Year!”的文字向游客致意。当它们离门足够近并在传感器未检测到附近的任何人时在监视器上显示一组效果,例如屏幕保护程序。

它由Arduino UNO控制,由5v 30a电源供电。

我kitbashed 或组合了3 组代码。

来自 FastLED 库 DemoReel100 的空闲/待机效果示例。

被动红外运动传感器代码

我想是 Neopixel 的设置代码。我不太确定了,tbh,因为那是大约一个月前我将代码混合在一起的时候。

我还使用了另一个 PIR 运动传感器,该传感器通过延长线连接到 5v 继电器和 12v RGB LED 灯串,并由 Arduino Nano 控制。

当第一个 PIR 传感器检测到移动时,LED 灯串以及也连接到延长线的节日灯会被激活。它位于楼梯第一级附近的天花板上。

向上走几步后,第二个 PIR 传感器告诉 UNO 在有人离门足够近时在矩阵上显示文本。

****************************************************** ********************************

要关注的社交媒体链接(我的意思是,如果您愿意):

脸书 - https://fb.me/HeathenHacks

推特 - https://twitter.com/HeathenHacks

Instagram - https://instagr.am/HeathenHacks

****************************************************** ********************************

代码

  • Arduino 假期
Arduino 假期Arduino
#include FASTLED_USING_NAMESPACE#include #include #include #ifndef PSTR#define PSTR // 让 Arduino Due 开心#endif#define PIN 6 //#if defined(FASTLED_VERSION) &&(FASTLED_VERSION <3001000)//#warning "需要 FastLED 3.1 或更高版本;检查 github 以获得最新代码。"//#endif#define DATA_PIN 6#define LED_TYPE WS2811#define COLOR_ORDER GRB#define NUM_LEDS 192CRGB LED[NUM_LEDS];const uint8_t kMatrixWidth =24;const uint8_t kMatrixHeight =8;const bool kMatrixSerpentineLayout =true;#define NUM_LEDS (kMatrixWidth * kMatrixHeight)#define MAX_DIMENSIONMatrix(kMatrixRIWidth?GHMatrixHeight) 50#限定FRAMES_PER_SECOND 120 //我们coordinatesstatic uint16_t x的16位版本;静态uint16_tý;静态uint16_t Z者除外; Adafruit_NeoMatrix矩阵=Adafruit_NeoMatrix(24,8,PIN,NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,NEO_GRB + NEO_KHZ800); const的输入t16_t 颜色[] ={ matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255), matrix.Color(0, 255, 255), matrix.Color(255, 0, 255), matrix.Color(255, 255, 0), matrix.Color(255, 255, 255)};uint16_t speed =20; // 一旦我们启动,速度就会动态设置 upuint16_t scale =30; // 一旦我们启动,就会动态设置比例uint8_t noise[MAX_DIMENSION][MAX_DIMENSION];CRGBPalette16 currentPalette(PartyColors_p);uint8_t colorLoop =1;int pirSensorPin =5; // 选择输入引脚(用于 PIR 传感器)int pirState =true; // 我们开始,假设没有检测到运动int val =0; // 读取引脚状态的变量int minimummSecsLowForInactive =5000; // 如果传感器报告低//超过这个时间,则假设没有活动long unsigned int timeLow;boolean takeLowTime;//我们给传感器校准的时间(根据数据表为10-60秒)int校准时间=30;无效设置(){延迟(3000); // 3 秒延迟恢复 // 告诉 FastLED 关于 LED 灯条配置 FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); //FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); // 设置主亮度控制 FastLED.setBrightness(BRIGHTNESS);矩阵.setTextWrap(false);矩阵.setBrightness(40);矩阵.setTextColor(颜色[0]); pinMode(pirSensorPin,输入); // 将传感器声明为输入 LEDS.addLeds(leds, NUM_LEDS); x =random16(); y =random16(); z =random16();}int a =matrix.width();int pass =0;// 要循环的模式列表。每个在下面定义为一个单独的函数。 typedef void (*SimplePatternList[])();SimplePatternList gPatterns ={ Rainbow, RainbowWithGlitter, confetti, sinelon, juggle, bpm, cylon};uint8_t gCurrentPatternNumber =0; // 当前模式的索引号uint8_t gHue =0; // 旋转许多模式使用的“基色”void fakeall() { for (int i =0; i =6) pass =0; matrix.setTextColor(colors[pass]);矩阵.show();延迟(100); if (pirState) { // 我们刚刚开启了 pirState =false; takeLowTime =true; } else { // 调用当前模式函数一次,更新'leds'数组 gPatterns[gCurrentPatternNumber](); // 将“leds”数组发送到实际的 LED 灯条 FastLED.show(); // 插入延迟以保持帧率适中 FastLED.delay(1000 / FRAMES_PER_SECOND); // 做一些定期更新 EVERY_N_MILLISECONDS( 20 ) { gHue++; // 在彩虹中缓慢循环“基色” } EVERY_N_SECONDS( 10 ) { nextPattern(); // 周期性地改变模式 } }}#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))void nextPattern(){ // 在当前模式编号上加一,并环绕在end gCurrentPatternNumber =(gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);}void Rainbow(){ // FastLED 的内置彩虹生成器 fill_rainbow( leds, NUM_LEDS, gHue, 7);}void RainbowWithGlitter(){ // 内置FastLED 彩虹,加上一些随机闪闪发光的彩虹(); addGlitter(80);}void addGlitter(fract8 chanceOfGlitter){ if ( random8() =0; i--) { // 将第 i 个 LED 设为红色 leds[i] =CHSV(hue++, 255, 255); // 显示 LED FastLED.show(); // 现在我们已经显示了 LED,将第 i 个 LED 重置为黑色 // leds[i] =CRGB::Black;淡入淡出(); // 在我们循环并再次执行之前稍等片刻 delay(10); }}

示意图


制造工艺

  1. DIY LUMAZOID Arduino 音乐可视化器
  2. 带 LED 和压电扬声器的 DHT11 传感器
  3. MyRiver
  4. 带有 Arduino 的简单障碍物传感器
  5. 找到我
  6. Arduino Quadruped
  7. 运动感应水枪
  8. Sonar 使用 arduino 并在处理 IDE 上显示
  9. DIY 10Hz-50kHz 示波器在 128x64 LCD 显示器上
  10. 单 LED 矩阵 Arduino 翻转时钟
  11. 使用 Arduino Uno 控制 LED 矩阵
  12. 4x4x4 LED 立方体,带有 Arduino Uno 和 1sheeld