2018年2月14日 星期三

DIY - ESP8266:ESP-12F DS3231 模擬實時時鐘 (Analog) 程式(七十)

DIY - ESP8266:ESP-12F DS3231 模擬實時時鐘 (Analog) 程式(七十):

一般電了時鐘是用數字(Digital Clock)作顯示,但看多了有點兒膩,便想改變成為傳統的模擬時鐘(Analog clock),圓形和有時分秒針在轉動。所以便將 DS3231 的實時時鐘(RTC / Real-Time Clock)改成模擬時鐘,都是會和 NTP/SNTP 的時鐘來調校 / 同步(Synchronization)DS3231 實時時鐘。

ESP8266 ESP-12F DS3231 模擬實時時鐘(Analog clock)
ESP8266 ESP-12F DS3231 模擬實時時鐘(Analog clock)
ESP8266 ESP-12F DS3231 模擬實時時鐘程式:
void ICACHE_FLASH_ATTR Draw_analogclock(uint16_t hr, uint16_t min, uint16_t sec)
{
            static int Xhr, Yhr;
            static int Xmin, Ymin;
            static int Xsec, Ysec;
            gfx_Circle(Xorg, Yorg, clock_radius, 1);
            gfx_Circle(Xorg, Yorg, 2, 1);
           
            // Draw Second hands
            gfx_drawLine(Xorg, Yorg, Xsec, Ysec, 0);
            Xsec= Xorg+(analogclock_cos[sec]*(clock_radius-3))/100;
            Ysec= Yorg-(analogclock_sin[sec]*(clock_radius-3))/100;
            gfx_drawLine(Xorg, Yorg, Xsec, Ysec, 1);

            // Draw Minute hands
            gfx_drawLine(Xorg, Yorg, Xmin, Ymin, 0);
            Xmin= Xorg+(analogclock_cos[min]*(clock_radius-10))/100;
            Ymin= Yorg-(analogclock_sin[min]*(clock_radius-10))/100;
            gfx_drawLine(Xorg, Yorg, Xmin, Ymin, 1);

            // Draw Hour Hands
            if (hr >11) hr=(hr-12);  // hr=0~24
            hr=(hr*5)+(min/15);
            gfx_drawLine(Xorg, Yorg, Xhr, Yhr, 0);
            Xhr= Xorg+(analogclock_cos[hr]*(clock_radius-15))/100;
            Yhr= Yorg-(analogclock_sin[hr]*(clock_radius-15))/100;
            gfx_drawLine(Xorg, Yorg, Xhr, Yhr, 1);

}

ESP8266 ESP-12F DS3231 模擬實時時鐘(Analog clock)顯示
2018年 2月 14日 天氣報告
氣溫:16.6@ 21:40
相對濕度:百分之 62%
天氣:大致多雲 
※ 祝情人節快樂,Happy Valentine's Day

2 則留言:

  1. 您好!
    請問Arduino 可以處理七段顯示器嗎?
    想做個 HH:MM:SS / 溫度 互跳的時鐘.

    回覆刪除
    回覆
    1. 當然可以 使用COM當掃描開關 網路上有教學

      刪除