黑色点阵金属边框的深沉feel,幽兰迷离等效  曲风自然跳跃的 new york city。 
这一切的全部归结于RGB matrix led点阵屏 
  
准备工作: 
IDC转接线                                                                x1 
电源连接线                                                                x1 
Arduino uno                                  x132x16  
RGB LED Matrix - 6mm pitch 点阵屏        x1 
接口说明: 
  
测试电路连线: 
  
示例代码: 
			
			
			- // scrolltext demo for Adafruit RGBmatrixPanel library.
 - // Demonstrates double-buffered animation on our 16x32 RGB LED matrix:
 - // <a href="http://www.adafruit.com/products/420" target="_blank">http://www.adafruit.com/products/420</a>
 - 
 - // 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
 - [0], ball
 - [1], 5, pgm_read_word(&ballcolor
 - ));
 -     // Update X, Y position
 -     ball
 - [0] += ball
 - [2];
 -     ball
 - [1] += ball
 - [3];
 -     // Bounce off edges
 -     if((ball
 - [0] == 0) || (ball
 - [0] == (matrix.width() - 1)))
 -       ball
 - [2] *= -1;
 -     if((ball
 - [1] == 0) || (ball
 - [1] == (matrix.height() - 1)))
 -       ball
 - [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);
 - }
 
  复制代码
  
演示效果: 
  
32x32 RGB LED Matrix - 4mm pitch 点阵屏              
  
线路连接: 
  
演示效果: 
  
 
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/b8为 2的8次方等于256,方便对照rgb颜色对照表;  
 
Fillscreen(uint16_t c) 填充屏幕c Colorhsv 由rgb到hsv颜色空间的理解: Drawpixel(int16_t x, int16_t y, uint16_t c) 绘制像素点 由于需要在arduino上进行声音处理,就需要FFT变换(快速傅里叶变换) .  傅里叶变化概念 .  复数的概念 .  欧拉公式 好像记忆里大学的信号的数据分析原理以及通讯原理讲过; 蓝牙音频的接口电路示意图如上; 我们还用到arduino mega2560进行控制和fft转换 接线细节如下:  |