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
查看完整版本: 基于ESP8266自动校时时钟