查看: 3988|回复: 4

RGB marix led点阵屏--蓝牙音乐频谱播放器

[复制链接]

黑色点阵金属边框的深沉feel,幽兰迷离等效  曲风自然跳跃的 new york city。
这一切的全部归结于RGB matrix led点阵屏
1516157527(1).jpg
准备工作:
IDC转接线                                                                x1
电源连接线                                                                x1
Arduino uno                                  x132x16
RGB LED Matrix - 6mm pitch 点阵屏        x1
接口说明:
1516158207(1).jpg
测试电路连线:
1518333864.jpg
示例代码:
[C] 纯文本查看 复制代码
// scrolltext demo for Adafruit RGBmatrixPanel library.
// Demonstrates double-buffered animation on our 16x32 RGB LED matrix:
// [url=http://www.adafruit.com/products/420]http://www.adafruit.com/products/420[/url]

// Written by Limor Fried/Ladyada & Phil Burgess/PaintYourDragon
// for Adafruit Industries.
// BSD license, all text above must be included in any redistribution.

#include <Adafruit_GFX.h>   // Core graphics library
#include <RGBmatrixPanel.h> // Hardware-specific library

// Similar to F(), but for PROGMEM string pointers rather than literals
#define F2(progmem_ptr) (const __FlashStringHelper *)progmem_ptr

#define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
#define LAT A3
#define OE  9
#define A   A0
#define B   A1
#define C   A2
// Last parameter = 'true' enables double-buffering, for flicker-free,
// buttery smooth animation.  Note that NOTHING WILL SHOW ON THE DISPLAY
// until the first call to swapBuffers().  This is normal.
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, true);
// Double-buffered mode consumes nearly all the RAM available on the
// Arduino Uno -- only a handful of free bytes remain.  Even the
// following string needs to go in PROGMEM:

const char str[] PROGMEM = "DFRobot";
int    textX   = matrix.width(),
       textMin = sizeof(str) * -12,
       hue     = 0;
int8_t ball[3][4] = {
  {  3,  0,  1,  1 }, // Initial X,Y pos & velocity for 3 bouncy balls
  { 17, 15,  1, -1 },
  { 27,  4, -1,  1 }
};
static const uint16_t PROGMEM ballcolor[3] = {
  0x0080, // Green=1
  0x0002, // Blue=1
  0x1000  // Red=1
};

void setup() {
  matrix.begin();
  matrix.setTextWrap(false); // Allow text to run off right edge
  matrix.setTextSize(2);
}

void loop() {
  byte i;

  // Clear background
  matrix.fillScreen(0);

  // Bounce three balls around
  for(i=0; i<3; i++) {
    // Draw 'ball'
    matrix.fillCircle(ball
[i][0], ball
[i][1], 5, pgm_read_word(&ballcolor
[i]));
    // Update X, Y position
    ball
[i][0] += ball
[i][2];
    ball
[i][1] += ball
[i][3];
    // Bounce off edges
    if((ball
[i][0] == 0) || (ball
[i][0] == (matrix.width() - 1)))
      ball
[i][2] *= -1;
    if((ball
[i][1] == 0) || (ball
[i][1] == (matrix.height() - 1)))
      ball
[i][3] *= -1;
  }

  // Draw big scrolly text on top
  matrix.setTextColor(matrix.ColorHSV(hue, 255, 255, true));
  matrix.setCursor(textX, 1);
  matrix.print(F2(str));

  // Move text left (w/wrap), increase hue
  if((--textX) < textMin) textX = matrix.width();
  hue += 7;
  if(hue >= 1536) hue -= 1536;

  // Update display
  matrix.swapBuffers(false);
}

演示效果:
1632.gif
32x32 RGB LED Matrix - 4mm pitch 点阵屏            
1518333720.png
线路连接:
1518333980.jpg
演示效果:
32x32.gif

Rgb matrix panel库函数:
RGBmatrixPannel::color333(uint8_t r, uint8_t  g, uint8_t b)
//promote 3/3/3 rgb to adafruit_gfx 5/6/5 3/3/3颜色比例转换为5/6/5
RRRGGGBBB->RRRrrGGGgggBBBbb
类似color444(uint8_t r, uint8_t  g, uint8_t b)
     color888(uint8_t r, uint8_t  g, uint8_t b)
选用color888 r/g/b828次方等于256,方便对照rgb颜色对照表;
1516160773(1).jpg


Fillscreenuint16_t c) 填充屏幕c
Colorhsv rgbhsv颜色空间的理解:
1518334694(1).jpg
Drawpixelint16_t x, int16_t y, uint16_t c) 绘制像素点
由于需要在arduino上进行声音处理,就需要FFT变换(快速傅里叶变换)
.  傅里叶变化概念
.  复数的概念
.  欧拉公式
好像记忆里大学的信号的数据分析原理以及通讯原理讲过;
1516158958.jpg
蓝牙音频的接口电路示意图如上;
1516159351(1).jpg
我们还用到arduino mega2560进行控制和fft转换
接线细节如下:
1516159814.png 1516160062.png 1516160219.png


xyywo  学徒

发表于 2018-3-14 21:40:10

大神,你这个蓝牙模块接线图有没有详细的呀,代码有没有分享的,求分享邮箱xyywo@163.com
回复 支持 反对

使用道具 举报

艾森豪威尔  见习技师

发表于 2018-9-10 10:00:19

我想问如果想在点阵屏上想显示相应的字,并且移动该如何做。一个一个点亮吗?还是有什么新的方法。求详细解析。邮箱1572662276@qq.com
回复 支持 反对

使用道具 举报

艾森豪威尔  见习技师

发表于 2018-9-10 10:00:48

艾森豪威尔 发表于 2018-9-10 10:00
我想问如果想在点阵屏上想显示相应的字,并且移动该如何做。一个一个点亮吗?还是有什么新的方法。求详细解 ...

这个代码我不怎么能看懂
回复 支持 反对

使用道具 举报

gada888  版主

发表于 2018-10-9 10:48:56

这个点阵屏连线满复杂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
关于楼主
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail