年初某宝买了两块vfd板子,做工很牛
一块用店家的驱动板点亮,另一块闲置
一直想用吃灰已久的nodemcu(大学的时候买的)点亮
怎奈一直未能如愿
前几日从藏地回来,找了个硬件调试的工作
遂重新开始此“工程”
先来一张效果图
进入正题
整体思路
nodemcu连入电脑WiFi热点(方便观察)通过ntp获取时间
软件模拟协议驱动pt6312显示时间
驱动程序及软件流程参考了卖家发过来的51程序
先上代码
由于第一次插入,未找到方法,凑合看吧
结尾放全部文件
void setup()
{
//user code start
// initialize digital pin LED_BUILTIN as an output.
pinMode(PT6311_EN, OUTPUT);
pinMode(PT6311_DATA, OUTPUT);
pinMode(PT6311_CLK, OUTPUT);
pinMode(PT6311_STB, OUTPUT);
//user code end
Serial.begin(9600);
while (!Serial) ; // Needed for Leonardo only
delay(250);
Serial.println("TimeNTP Example");
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("IP number assigned by DHCP is ");
Serial.println(WiFi.localIP());
Serial.println("Starting UDP");
Udp.begin(localPort);
Serial.print("Local port: ");
Serial.println(Udp.localPort());
Serial.println("waiting for sync");
//time download function
while (!gettime){
setSyncProvider(getNtpTime);
}
digitalWrite(PT6311_EN, HIGH);//kai=1; //turn on vfd
if (Debug){
Serial.println("turn on vfd display");
}
PT6311_1();//set dis mode
PT6311_2(); //set date
PT6311_3();
for(int i=0;i<20;i++)
{
write_PT6311(0x00);
write_PT6311(0x00);
}
if (Debug){
Serial.println("display init finished");
}
}
time_t prevDisplay = 0; // when the digital clock was displayed
void loop()
{
if (timeStatus() != timeNotSet) {
if (now() != prevDisplay) { //update the display only if time has changed
prevDisplay = now();
dispgenerate();
// lightset();
digitalClockDisplay();
if (Debug){
Serial.println("iiff");
}
}
if (Debug){
Serial.print("if in");
}
}
if (Debug){
Serial.println("loop finish");
delay(100);
}
} 用arduino编程(具体实现方法可度娘)
主要是通过官方的库管理窗口添加ntp相关库
这里说说添加库时遇到的问题:
1、有些库设置后连不上WiFi
2、有些连上WiFi后,不能连接ntp服务器(此问题可通过ping www.*.*来获取ip)
再有就是定义引脚号的时候要用gpio号码
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int PT6311_EN =5;
const int PT6311_DATA =4;
const int PT6311_CLK =0;
const int PT6311_STB =2;依次用了D1-D4即gpio5、4、0、2(位置在引脚图右上角)
引脚间距非2.54
故这头用杜邦线焊接
通过光敏电阻实现亮度自动调节
vcc
电阻10k
A0采样
光敏电阻
gnd
同样参考了卖家
为便于调试在程序个状态出增加了串口输出信息以顺利实现功能
const bool Debug = 0;
void loop()
{
if (timeStatus() != timeNotSet) {
if (now() != prevDisplay) { //update the display only if time has changed
prevDisplay = now();
dispgenerate();
// lightset();
digitalClockDisplay();
if (Debug){
Serial.println("iiff");
}
}
if (Debug){
Serial.print("if in");
}
}
if (Debug){
Serial.println("loop finish");
delay(100);
}
} 最后来个效果图
可以下载
如不能下载可发邮件给我,我发过去
gonghexiong
@yeah.net 完,下班后仓促写的,不太好,请见谅