Adafruit_GFX matrix ws2812像素屏库使用教程AWTRIX2.0像素时钟
创始人
2024-01-31 13:01:01

AWTRIX2.0像素时钟很炫酷但必须要与服务器配合使用。这个库可以做自己的点阵时钟离线版。想怎么玩就怎么玩不受服务器牵绊。
第一步:下载mixy库然后倒入,必须有以下库文件: Adafruit_GFX FastLED FastLED_NeoMatrix TomThumb
#include //LDR光敏电阻
#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);}

有问题或有需要改模块功能的 可留言

相关内容

热门资讯

脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
怎么发微博故事 视频号怎么改回... 在被快手、头条、秒拍轮番定义之后,短视频还有哪些新的玩法?当今日头条孵化的抖音迅速蹿红,短视频领域的...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
怎么让男人兴奋 男人抵抗不了女... “男生对女人最初的崇拜,就是一声妈”有些东西分开挺好的,合起来就不行比如一个男人,又苏又大又强,简直...