cityant
发表于 2019-7-20 15:03:13
zyii 发表于 2019-7-18 21:35
您好,请问您能帮我看看程序吗,我也做的是时钟 我想让他整点报时,用别的芯片或者nodered实现,但是我不会 ...
#include <ESP8266WiFi.h>
unsigned long lastupdate = millis(); //刷新标志
void setup() {
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_STA);
WiFi.begin("GZY", "88888888");
while (!WiFi.isConnected())
{
delay(100);
}
Serial.println(WiFi.localIP());
configTime(8*3600, 0, "time.windows.com");
// 时区偏移+8,夏令时,时间服务器
}
void alarm(){
//beep;
}
void loop() {
if (millis() - lastupdaate >= 1000){
time_t now = time(0); //获取当前绝对时间,从1970-1-1到现在的秒数
Serial.print(ctime(&now));//将秒数转成字符串表示的时间
}
if (minute(time(0)) == 0 && second(time(0)) == 0) alarm(); //只会响一秒,简单的嘀声够了;如果需要更长时间或一次触发,可使用一个变量进行标记处理;
//delay(1000);
}
78678967
发表于 2019-7-20 21:20:23
cityant 发表于 2019-7-15 14:26
你这个逻辑中如果lcddirection和lcdstatus都为false时,屏幕是关闭的。把lcdstatus变量定义时初始化为tru ...
大师求指导一下人体传感器加一个延时函数 收到低电平就延时N分钟然后再熄灭屏幕在此期间如果有高电平就重新计时
78678967
发表于 2019-7-24 21:25:25
cityant 发表于 2019-7-20 15:03
#include
unsigned long lastupdate = millis(); //刷新标志
人呢????
cityant
发表于 2019-7-27 13:38:25
78678967 发表于 2019-7-20 21:20
大师求指导一下人体传感器加一个延时函数 收到低电平就延时N分钟然后再熄灭屏幕在此期间如果有高电平就重 ...
自己尝试写一下啊,之前主循环中检测到高电平直接写lcdstatus值,类似151楼这样,加一个时间判断,当小于某一时间时进去减一下,然后再给lcdstatus变量赋值。
多动手试试,你这等的时间搜一搜例子早就弄出来了。
78678967
发表于 2019-7-27 20:40:44
自己尝试过都失败了
不知道该怎么写
求指导指导一下 !lcdstatus是人体传感器的触发函数
void Display() {
int num = 0;
if ((!lcddirection) && (!lcdstatus)){
for(int address=3; address>=0; address--){ //逐个扫描四个LED屏
for(int col=0; col<8; col++) { //每块LED屏逐列扫描;
lc.setIntensity(address, lcdlight); //设定Led亮度
lc.setColumn(address, col, disp); //使用列方式显示;
lc.shutdown(address,true); //LCD显示状态,true点亮,false关闭
num ++;
}
}
}
else if((lcddirection) && (!lcdstatus)){//翻转
for(int address=0; address<=3; address++){ //逐个扫描四个LED屏
for(int col=7; col>=0; col--) { //每块LED屏逐列扫描;
lc.setIntensity(address, lcdlight); //设定Led亮度
lc.setColumn(address, col, reverse_bit(disp)); //使用列方式显示;
lc.shutdown(address,true); //LCD显示状态,true点亮,false关闭
num ++;
}
}
}
else if((lcddirection) && (lcdstatus)){
for(int address=0; address<=3; address++){ //逐个扫描四个LED屏
for(int col=7; col>=0; col--) { //每块LED屏逐列扫描;
lc.setIntensity(address, lcdlight); //设定Led亮度
delay(1);
lc.setColumn(address, col, reverse_bit(disp)); //使用列方式显示;
lc.shutdown(address,false); //LCD显示状态,true点亮,false关闭
num ++;
}
}
}
else{//翻转
for(int address=3; address>=0; address--){ //逐个扫描四个LED屏
for(int col=0; col<8; col++) { //每块LED屏逐列扫描;
lc.setIntensity(address, lcdlight); //设定Led亮度
delay(1);
lc.setColumn(address, col, disp); //使用列方式显示;
lc.shutdown(address,false); //LCD显示状态,true点亮,false关闭
num ++;
}
}
}
}
78678967
发表于 2019-7-28 20:22:51
78678967 发表于 2019-7-27 20:40
自己尝试过都失败了
不知道该怎么写
求指导指导一下 !lcdstatus是人体传感器的触发函数
看到你的显示代码突然灵感来了谢谢大神
cityant
发表于 2019-7-28 21:29:21
78678967 发表于 2019-7-27 20:40
自己尝试过都失败了
不知道该怎么写
求指导指导一下 !lcdstatus是人体传感器的触发函数
void loop() {
...
lcdstatus = digitalRead(IRPIN); //IRPIN为你的人体红外传感器的引脚
...
}
void loop() {
...
if((digitalRead(IRPIN)) || (millis() - lcddelaytime <= 10000)){//延迟10秒,需要在代码开始位置预先定义全局变量unsigned long lcddelaytime = millis()
lcdstatus = true;
if (digitalRead(IRPIN)) lcddelaytime = millis(); //高电平重置计时
}
else{
lcdstatus = false;
}
...
}
78678967
发表于 2019-8-3 19:27:48
本帖最后由 78678967 于 2019-8-3 21:36 编辑
大神怎么最近没更新了
我爱下载
发表于 2019-8-6 14:21:38
学习了:)
78678967
发表于 2019-8-13 20:12:57
楼主不更啦不教教其他授时方法
78678967
发表于 2019-8-31 08:59:29
大神不见了?
cityant
发表于 2019-8-31 15:59:10
前一段有些忙,就没怎么来。这个时钟代码改的也差不多了吧,最近好像没有啥需要动的了。
78678967
发表于 2019-8-31 20:30:46
电路板原理图没人分享
cityant
发表于 2019-9-1 18:08:57
78678967 发表于 2019-8-31 20:30
电路板原理图没人分享
最终版的电路原理图和pcb,基本不会改了。还有一个问题就是电源散热比较大,导致板子有温升,温度传感器直接焊在板子上温度会飙高,可使用导线引出固定在离电源远点儿的地方。
pcb工程文件
78678967
发表于 2019-9-1 20:42:21
cityant 发表于 2019-9-1 18:08
最终版的电路原理图和pcb,基本不会改了。还有一个问题就是电源散热比较大,导致板子有温升,温度传感器 ...
这个原理图设计得合不合理?
页:
1
2
3
4
5
6
7
8
9
10
[11]
12
13
14
15