Arduino与Proteus仿真实例-WS2812-RGB-LED点阵(8x8)驱动仿真

WS2812-RGB-LED点阵(8x8)驱动仿真

WS2812每个 LED 都可以用 RGB 像素独立寻址,RGB 像素可实现 256 级亮度。 一共16777216色,扫描频率不低于400Hz! 8x8 RGB LED 矩阵是单线控制板。 该模块还支持级联控制。 需要做的就是将 Din 连接到 DOUT 端口。 结合开源 Arduino 库,只需使用一个引脚即可控制整个 LED 阵列!

在前面的实例中对WS2812做了介绍,请参考:

1、仿真电路原理图

在这里插入图片描述

2、仿真代码实现

本次实例使用到如下开源库:

演示代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// Adafruit\_NeoMatrix example for single NeoPixel Shield.
// Scrolls 'Howdy' across the matrix in a portrait (vertical) orientation.

#include <Adafruit\_GFX.h>
#include <Adafruit\_NeoMatrix.h>
#include <Adafruit\_NeoPixel.h>
#ifndef PSTR
#define PSTR // Make Arduino Due happy
#endif

#define PIN 6

// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
// NEO\_MATRIX\_TOP, NEO\_MATRIX\_BOTTOM, NEO\_MATRIX\_LEFT, NEO\_MATRIX\_RIGHT:
// Position of the FIRST LED in the matrix; pick two, e.g.
// NEO\_MATRIX\_TOP + NEO\_MATRIX\_LEFT for the top-left corner.
// NEO\_MATRIX\_ROWS, NEO\_MATRIX\_COLUMNS: LEDs are arranged in horizontal
// rows or in vertical columns, respectively; pick one or the other.
// NEO\_MATRIX\_PROGRESSIVE, NEO\_MATRIX\_ZIGZAG: all rows/columns proceed
// in the same order, or alternate lines reverse direction; pick one.
// See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
// NEO\_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO\_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO\_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO\_GRBW Pixels are wired for GRBW bitstream (RGB+W NeoPixel products)
// NEO\_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)


// Example for NeoPixel Shield. In this application we'd like to use it
// as a 5x8 tall matrix, with the USB port positioned at the top of the
// Arduino. When held that way, the first pixel is at the top right, and
// lines are arranged in columns, progressive order. The shield uses
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit\_NeoMatrix(8, 8, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +
NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
NEO_GRB + NEO_KHZ800);

const uint16\_t colors[] = {
matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };

void setup() {
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(255);
matrix.setTextColor(colors[0]);
}

int x = matrix.width();
int pass = 0;

void loop() {
matrix.fillScreen(0);
matrix.setCursor(x, 0);
matrix.print(F("0123456789"));
if(--x < -36) {
x = matrix.width();
if(++pass >= 3) pass = 0;
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(100);
}

3、仿真结果

在这里插入图片描述

文章来源: https://iotsmart.blog.csdn.net/article/details/120964863