#include <Arduino.h>
#include <FastLED.h> //点一个灯,点矩阵也需要
#include <FastLED_NeoMatrix.h> //点矩阵用的
#include <Fonts/Picopixel.h> //文字的字体在fonts目录下
#define kMatrixWidth 32
#define kMatrixHeight 8
#define BRIGHTNESS 255
#define LED_PIN 12
#define COLOR_ORDER GRB
#define CHIPSET WS2812B
#define NUM_LEDS ((kMatrixWidth) * (kMatrixHeight))
CRGB leds[NUM_LEDS]; //用来存每个灯的颜色
FastLED_NeoMatrix *matrix; //矩阵需要用这个初始化,点一个灯不需要
int led_hue = 0;
int color[6];
int color_index = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.printf("Free heap in RAM: %d\n", ESP.getFreeHeap());
Serial.printf("Free heap in PSRAM: %d\n", heap_caps_get_free_size(MALLOC_CAP_SPIRAM));
// 要配置一共点多少灯,类型是什么,接哪根线上
FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
FastLED.setCorrection(UncorrectedColor); //颜色修正方式,可以不写
FastLED.setTemperature(UncorrectedTemperature); //温度修正方式,可以不写
FastLED.setDither(DISABLE_DITHER); //抖动设置,可以不写
//矩阵的设置
matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP );
matrix->setTextWrap(false);
matrix->setBrightness(50);
matrix->setFont(&Picopixel);
matrix->clear();
matrix->setBrightness(255);
//生成每个字的颜色
color[0] = matrix->Color(255, 0, 0);
color[1] = matrix->Color(0, 255, 0);
color[2] = matrix->Color(0, 0, 255);
color[3] = matrix->Color(255, 255, 0);
color[4] = matrix->Color(255, 0, 255);
color[5] = matrix->Color(0, 255, 255);
// 把光标设置在第四行第五列,显示每个字
matrix->setTextColor(color[0]);
matrix->setCursor(4, 5);
matrix->print("H");
matrix->setTextColor(color[1]);
matrix->print("E");
matrix->setTextColor(color[2]);
matrix->print("L");
matrix->setTextColor(color[3]);
matrix->print("L");
matrix->setTextColor(color[4]);
matrix->print("O");
matrix->setTextColor(color[5]);
matrix->print("!");
//刷新到LED显示,不用矩阵的话用FastLED.show()
matrix->show();
}
void loop() {
matrix->setTextColor(color[(color_index++) % 6]);
matrix->setCursor(4, 5);
matrix->print("H");
matrix->setTextColor(color[(color_index++) % 6]);
matrix->print("E");
matrix->setTextColor(color[(color_index++) % 6]);
matrix->print("L");
matrix->setTextColor(color[(color_index++) % 6]);
matrix->print("L");
matrix->setTextColor(color[(color_index++) % 6]);
matrix->print("O");
matrix->setTextColor(color[(color_index++) % 6]);
matrix->print("!");
color_index++;
color_index = color_index % 6;
matrix->show();
// put your main code here, to run repeatedly:
delay(1000); // this speeds up the simulation
}