我的代码参考了B站一位大佬,支持手机配网,修改后如下
//必须包头文件
#include "LedControl.h"
#include "word.h"
#include <WiFi.h>
#include <Arduino.h>
#include "NTPClient.h"
WiFiUDP ntpUDP; // 创建一个WIFI UDP连接
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com", 60*60*8, 30*60*1000);
byte wei0[1][8] ={};
byte wei1[1][8] ={};
byte wei2[1][8] ={};
byte wei3[1][8] ={};
byte wei4[1][8] ={};
byte wei5[1][8] ={};
byte wei6[1][8] ={};
byte wei7[1][8] ={};
byte display0[1][8] ={};
byte display1[1][8] ={};
byte display2[1][8] ={};
byte display3[1][8] ={};
void SmartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig...");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
delay(500); // wait for a second
if (WiFi.smartConfigDone())
{
Serial.println("SmartConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
break;
}
}
}
bool AutoConfig()
{
WiFi.begin();
//如果觉得时间太长可改
for (int i = 0; i < 20; i++)
{
int wstatus = WiFi.status();
if (wstatus == WL_CONNECTED)
{
Serial.println("WIFI SmartConfig Success");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str());
Serial.print("LocalIP:");
Serial.print(WiFi.localIP());
Serial.print(" ,GateIP:");
Serial.println(WiFi.gatewayIP());
return true;
}
else
{
Serial.print("WIFI AutoConfig Waiting......");
Serial.println(wstatus);
delay(1000);
}
}
Serial.println("WIFI AutoConfig Faild!" );
return false;
}
/*
********接线方式********
uno/2560 7219点阵模块
5V >> VCC
GND >> GND
pin 12 >> DIN
pin 11 >> CLK
pin 10 >> CS
*************************/
LedControl lc = LedControl(12, 14, 15, 4);
/*《初始化》>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
void setup() {
Serial.begin(115200);
if (!AutoConfig())
{
SmartConfig();
}
/*MAX72XX开机时处于省电模式,我们必须做一个唤醒呼叫*/
lc.shutdown(0, false);
lc.shutdown(1, false);
lc.shutdown(2, false);
lc.shutdown(3, false);
/* 设置亮度为中等值 */
char is = 7; /* 0~15 */
lc.setIntensity(0, is);
lc.setIntensity(1, is);
lc.setIntensity(2, is);
lc.setIntensity(3, is);
/* 清除显示 */
lc.clearDisplay(0);
lc.clearDisplay(1);
lc.clearDisplay(2);
lc.clearDisplay(3);
}
/* 《主循环》>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
void loop()
{
// for(int i=0;i<4;i++){
// lc.set_num(i,testnumber[i]);
// delay(500);
// }
//lc.set_num(2,testnumber[0]);
//lc.setLed(0,1,1,1);
//lc.setLed(0,6,6,1);
timeClient.update();
// Serial.println(timeClient.getFormattedTime());
int shi_shiwei = timeClient.getFormattedTime().substring(0,1).toInt();
int shi_gewei = timeClient.getFormattedTime().substring(1,2).toInt();
int fen_shiwei = timeClient.getFormattedTime().substring(3,4).toInt();
int fen_gewei = timeClient.getFormattedTime().substring(4,5).toInt();
int miao_shiwei = timeClient.getFormattedTime().substring(6,7).toInt();
int miao_gewei = timeClient.getFormattedTime().substring(7,-1).toInt();
get_display0(miao_shiwei,miao_gewei);
lc.set_num(0,display0[1]);
get_display1(fen_shiwei,fen_gewei);
lc.set_num(1,display1[1]);
get_display2(shi_gewei,fen_shiwei);
lc.set_num(2,display2[1]);
get_display3(shi_shiwei,shi_gewei);
lc.set_num(3,display3[1]);
lc.setLed(1,2,7,1);
lc.setLed(1,4,7,1);
lc.setLed(2,2,3,1);
lc.setLed(2,4,3,1);
}
//0号点阵的数据处理
void get_display0(int miao_1,int miao_0){
for(int i=0;i<8;i++){
wei0[1][i] = mininumber[miao_0][i] /2/2/2/2;//低位数据右移4位
}
for(int i=0;i<8;i++){
wei1[1][i] = mininumber[miao_1][i];//高位数据不需要变动
}
for(int i=0;i<8;i++){
display0[1][i] = wei0[1][i] | wei1[1][i];
}
}
//1号点阵的数据处理
void get_display1(int fen_1,int fen_0){
for(int i=0;i<8;i++){
wei2[1][i] = number[fen_0][i] /2;//地位数据右移1位
}
for(int i=0;i<8;i++){
wei3[1][i] = number[fen_1][i] *2*2*2*2;//高位数据左移4位
}
for(int i=0;i<8;i++){
display1[1][i] = wei2[1][i] | wei3[1][i];
}
}
//2号点阵的数据处理
void get_display2(int fen_1,int shi_0){
for(int i=0;i<8;i++){
wei4[1][i] = number[shi_0][i] /2/2/2/2;//地位数据右移4位
}
for(int i=0;i<8;i++){
wei5[1][i] = number[fen_1][i] *2*2*2;//地位数据左移3位
}
for(int i=0;i<8;i++){
display2[1][i] = wei4[1][i] | wei5[1][i];
}
}
//3号点阵的数据处理
void get_display3(int shi_1,int shi_0){
for(int i=0;i<8;i++){
wei6[1][i] = number[shi_0][i] /2/2/2/2/2;//地位数据右移5位
}
for(int i=0;i<8;i++){
wei7[1][i] = number[shi_1][i] ;//高位数据不需要变动
}
for(int i=0;i<8;i++){
display3[1][i] = wei6[1][i] | wei7[1][i];
}
}
/*《显示函数》>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
最近编辑记录 zhang235hai (2021-07-12 10:21:39)
离线
你需要一个缓冲区 用定时器修改缓冲区内容 可以125ms向上或下移动最后那个点阵的每一行来实现翻页
离线
实现了滚动的效果
离线