AWTRIX2.0像素时钟很炫酷但必须要与服务器配合使用。这个库可以做自己的点阵时钟离线版。想怎么玩就怎么玩不受服务器牵绊。
第一步:下载mixy库然后倒入,必须有以下库文件: Adafruit_GFX FastLED FastLED_NeoMatrix TomThumb
#include
#include
#include
#include
#include
特别说明TomThumb 字体必须用下载包里的字体,用原Adafruit_GFX字体效果很难看。
上测试时效果图:
需要的硬件:
WS2812软点阵屏 32X8 256灯珠。
以上全部齐全后即可开整!先看库使用程序图。一看即懂。
垂直线:
水平线
画空心矩形
显示效果
简单NTP时钟演示程序图
代码:
#include
#include
#include
#include
#include
#include
#include
#include volatile int texiao;
String lnnmonth;
String lnnday;
String huor;
String feng;
String seconds;
volatile int ldrbr;
int8_t timeZone = 8;
const PROGMEM char *ntpServer = "ntp1.aliyun.com";
volatile int item;LightDependentResistor myldr(A0,1000,LightDependentResistor::GL5516);CRGB leds[256];
FastLED_NeoMatrix *matrix;
void sysloop() {matrix->setTextColor(matrix->Color(0,200,160));matrix->setCursor(0,6);matrix->print(String(String(huor) + String(":")) + String(feng));matrix->setCursor(18,8);matrix->print(".......");matrix->setTextColor(matrix->Color(0,200,160));matrix->setCursor(25,6);matrix->print(lnnday);switch (NTP.getDateWeekday()) {case 1:matrix->setTextColor(matrix->Color(50,255,50));matrix->setCursor(18,8);matrix->print(".");matrix->show();break;case 2:matrix->setTextColor(matrix->Color(50,255,50));matrix->setCursor(20,8);matrix->print(".");matrix->show();break;case 3:matrix->setTextColor(matrix->Color(50,255,50));matrix->setCursor(22,8);matrix->print(".");matrix->show();break;case 4:matrix->setTextColor(matrix->Color(50,255,50));matrix->setCursor(24,8);matrix->print(".");matrix->show();break;case 5:matrix->setTextColor(matrix->Color(50,255,50));matrix->setCursor(26,8);matrix->print(".");matrix->show();break;case 6:matrix->setTextColor(matrix->Color(50,255,50));matrix->setCursor(28,8);matrix->print(".");matrix->show();break;case 7:matrix->setTextColor(matrix->Color(50,255,50));matrix->setCursor(30,8);matrix->print(".");matrix->show();break;default:break;}myfillRect(19, 1, 5, 5, matrix->Color((random(50, 255)),(random(50, 255)),(random(50, 255))));mydrawCircle(21, 3, 1, matrix->Color((random(50, 255)),(random(50, 255)),(random(50, 255))));for(int i = 2; i <= 12; i++){matrix->setTextColor(matrix->Color((random(50, 255)),(random(50, 255)),(random(50, 255))));matrix->setCursor((i + 1),8);matrix->print(".");matrix->show();delay(500);if (i == 12) {texiao = texiao + 1;if (texiao >= 5) {texiao = 1;}}}Serial.println(NTP.getDateYear());item = random(1, 5);Serial.println(String("1=") + String(item));switch (item) {case 1:for(int j = -3; j<= 33; j++){matrix->clear();mydrawFastVLine(j + 1, 0, 8, matrix->Color(0,200,160));delay(15);}break;case 2:for(int j = 32; j>-3; j--){matrix->clear();mydrawFastVLine(j + 1, 0, 8, matrix->Color(0,200,160));delay(15);}break;case 3:for(int j = -3; j<=10; j++){matrix->clear();mydrawFastHLine(0, j + 1, 32, matrix->Color(100,255,100));delay(30);}break;case 4:for(int j = 10; j>-3; j--){matrix->clear();mydrawFastHLine(0, j + 1, 32, matrix->Color(100,255,100));delay(30);}break;default:break;}for(int j = 7; j<= 17; j++){matrix->clear();matrix->setTextColor(matrix->Color(50,255,50));matrix->setCursor((j + 1),8);matrix->print(".");matrix->setTextColor(matrix->Color(50,50,200));matrix->setCursor(7,6);matrix->print(String(String(lnnmonth) + String("-")) + String(lnnday));matrix->show();delay(400);}item = random(1, 5);Serial.println(item);switch (item) {case 1:for(int j = -3; j<= 33; j++){matrix->clear();mydrawFastVLine(j + 1, 0, 8, matrix->Color(0,200,160));delay(15);}break;case 2:for(int j = 32; j>-3; j--){matrix->clear();mydrawFastVLine(j + 1, 0, 8, matrix->Color(0,200,160));delay(15);}break;case 3:for(int j = -3; j<=10; j++){matrix->clear();mydrawFastHLine(0, j + 1, 32, matrix->Color(100,255,100));delay(30);}break;case 4:for(int j = 10; j>-3; j--){matrix->clear();mydrawFastHLine(0, j + 1, 32, matrix->Color(100,255,100));delay(30);}break;default:break;}
}void mydrawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color) {matrix->drawCircle(x0,y0,r,color);matrix->show();
}void mydrawFastHLine(int x, int y, int w, int color) {matrix->drawFastHLine(x,y,w,color);matrix->show();
}void mydrawFastVLine(int x, int y, int h, int color) {matrix->drawFastVLine(x,y,h,color);matrix->show();
}void myfillRect(int x, int y, int w, int h, int color) {matrix->fillRect(x,y,w,h,color);matrix->show();
}void date_time() {if (NTP.getTimeHour24() >= 0 && NTP.getTimeHour24() <= 9) {huor = String("0") + String(NTP.getTimeHour24());} else {huor = NTP.getTimeHour24();}if (NTP.getTimeMinute() >= 0 && NTP.getTimeMinute() <= 9) {feng = String("0") + String(NTP.getTimeMinute());} else {feng = NTP.getTimeMinute();}if (NTP.getTimeSecond() >= 0 && NTP.getTimeSecond() <= 9) {seconds = String("0") + String(NTP.getTimeSecond());} else {seconds = NTP.getTimeSecond();}if (NTP.getDateMonth() >= 0 && NTP.getDateMonth() <= 9) {lnnmonth = String("0") + String(NTP.getDateMonth());} else {lnnmonth = NTP.getDateMonth();}if (NTP.getDateDay() >= 0 && NTP.getDateDay() <= 9) {lnnday = String("0") + String(NTP.getDateDay());} else {lnnday = NTP.getDateDay();}
}void inithaed() {matrix->clear();matrix->setTextColor(matrix->Color((random(50, 250)),(random(50, 255)),(random(50, 250))));matrix->setCursor(5,6);matrix->print("MATRIX");matrix->show();
}void setup(){texiao = 0;lnnmonth = "";lnnday = "";huor = "";feng = "";seconds = "";ldrbr = 0;Serial.begin(9600);myldr.setPhotocellPositionOnGround(false);WiFi.begin("Redmi_2.4G", "12345678");while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}NTP.setInterval (600);NTP.setNTPTimeout (1500);NTP.begin (ntpServer, timeZone, false);matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG);FastLED.addLeds(leds,256).setCorrection(TypicalLEDStrip);matrix->begin();matrix->setTextWrap(false);//显示字体matrix->setFont(&TomThumb);//字体matrix->setBrightness(5);inithaed();delay(2000);item = 0;
}void loop(){date_loop();date_time();randomSeed(millis());ldrbr = (map(myldr.getCurrentLux(), 0, 800, 5, 50));matrix->setBrightness(ldrbr);matrix->clear();sysloop();matrix->show();delay(50);}
有问题或有需要改模块功能的 可留言