File tree 2 files changed +86
-0
lines changed
2 files changed +86
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < WiFi.h>
2
+ #include " time.h"
3
+
4
+ const char * ssid = " YOUR_SSID" ;
5
+ const char * password = " YOUR_PASS" ;
6
+
7
+ const char * ntpServer = " pool.ntp.org" ;
8
+ const long gmtOffset_sec = 3600 ;
9
+ const int daylightOffset_sec = 3600 ;
10
+
11
+ void printLocalTime ()
12
+ {
13
+ struct tm timeinfo;
14
+ if (!getLocalTime (&timeinfo)){
15
+ Serial.println (" Failed to obtain time" );
16
+ return ;
17
+ }
18
+ Serial.println (&timeinfo, " %A, %B %d %Y %H:%M:%S" );
19
+ }
20
+
21
+ void setup ()
22
+ {
23
+ Serial.begin (115200 );
24
+
25
+ // connect to WiFi
26
+ Serial.printf (" Connecting to %s " , ssid);
27
+ WiFi.begin (ssid, password);
28
+ while (WiFi.status () != WL_CONNECTED) {
29
+ delay (500 );
30
+ Serial.print (" ." );
31
+ }
32
+ Serial.println (" CONNECTED" );
33
+
34
+ // init and get the time
35
+ configTime (gmtOffset_sec, daylightOffset_sec, ntpServer);
36
+ printLocalTime ();
37
+
38
+ // disconnect WiFi as it's no longer needed
39
+ WiFi.disconnect (true );
40
+ WiFi.mode (WIFI_OFF);
41
+ }
42
+
43
+ void loop ()
44
+ {
45
+ delay (1000 );
46
+ printLocalTime ();
47
+ }
Original file line number Diff line number Diff line change
1
+ #include " esp_system.h"
2
+
3
+ const int button = 0 ; // gpio to use to trigger delay
4
+ const int wdtTimeout = 3000 ; // time in ms to trigger the watchdog
5
+ hw_timer_t *timer = NULL ;
6
+
7
+ void IRAM_ATTR resetModule () {
8
+ ets_printf (" reboot\n " );
9
+ esp_restart_noos ();
10
+ }
11
+
12
+ void setup () {
13
+ Serial.begin (115200 );
14
+ Serial.println ();
15
+ Serial.println (" running setup" );
16
+
17
+ pinMode (button, INPUT_PULLUP); // init control pin
18
+ timer = timerBegin (0 , 80 , true ); // timer 0, div 80
19
+ timerAttachInterrupt (timer, &resetModule, true ); // attach callback
20
+ timerAlarmWrite (timer, wdtTimeout * 1000 , false ); // set time in us
21
+ timerAlarmEnable (timer); // enable interrupt
22
+ }
23
+
24
+ void loop () {
25
+ Serial.println (" running main loop" );
26
+
27
+ timerWrite (timer, 0 ); // reset timer (feed watchdog)
28
+ long loopTime = millis ();
29
+ // while button is pressed, delay up to 3 seconds to trigger the timer
30
+ while (!digitalRead (button)) {
31
+ Serial.println (" button pressed" );
32
+ delay (500 );
33
+ }
34
+ delay (1000 ); // simulate work
35
+ loopTime = millis () - loopTime;
36
+
37
+ Serial.print (" loop time is = " );
38
+ Serial.println (loopTime); // should be under 3000
39
+ }
You can’t perform that action at this time.
0 commit comments