背景:
想做个带屏wifi太空人天气时钟来玩,看网上有开源拿来用,ESP8266太空人时钟 Arduino-ST7789-1.3寸ips
成果:
原理图:
画板:
BOM清单:
代码附件:
csdn放不了附件好像,要的滴滴我
#include <ArduinoJson.h>
#include <TimeLib.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <ESP8266HTTPClient.h>
const char ssid[] = "WIFI名称"; //WIFI名称 修改这2个就可以了
const char pass[] = "WIFI密码"; //WIFI密码
#include "font/ZdyLwFont_20.h"
#include "font/FxLED_32.h"
#include "img/pangzi/i0.h"
#include "img/pangzi/i1.h"
#include "img/pangzi/i2.h"
#include "img/pangzi/i3.h"
#include "img/pangzi/i4.h"
#include "img/pangzi/i5.h"
#include "img/pangzi/i6.h"
#include "img/pangzi/i7.h"
#include "img/pangzi/i8.h"
#include "img/pangzi/i9.h"
#include "img/temperature.h"
#include "img/humidity.h"
#include "img/watch_top.h"
#include "img/watch_bottom.h"
#include <TFT_eSPI.h>
#include <SPI.h>
TFT_eSPI tft = TFT_eSPI(); // 引脚请自行配置tft_espi库中的 User_Setup.h文件
TFT_eSprite clk = TFT_eSprite(&tft);
#include <TJpg_Decoder.h>
uint32_t targetTime = 0;
byte omm = 99;
boolean initial = 1;
byte xcolon = 0;
unsigned int colour = 0;
uint16_t bgColor = 0xFFFF;
String cityCode = "101040100"; //天气城市代码
//NTP服务器
static const char ntpServerName[] = "ntp6.aliyun.com";
const int timeZone = 8; //东八区
WiFiUDP Udp;
unsigned int localPort = 8000;
time_t getNtpTime();
void digitalClockDisplay();
void printDigits(int digits);
String num2str(int digits);
void sendNTPpacket(IPAddress &address);
bool tft_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t* bitmap)
{
if ( y >= tft.height() ) return 0;
tft.pushImage(x, y, w, h, bitmap);
// Return 1 to decode next block
return 1;
}
byte loadNum = 6;
void loading(byte delayTime){
clk.setColorDepth(8);
clk.createSprite(200, 50);
clk.fillSprite(0x0000);
clk.drawRoundRect(0,0,200,16,8,0xFFFF);
clk.fillRoundRect(3,3,loadNum,10,5,0xFFFF);
clk.setTextDatum(CC_DATUM);
clk.setTextColor(TFT_GREEN, 0x0000);
clk.drawString("Connecting to WiFi",100,40,2);
clk.pushSprite(20,110);
clk.deleteSprite();
loadNum += 1;
if(loadNum>=194){
loadNum = 194;
}
delay(delayTime);
}
void setup()
{
Serial.begin(9600);
tft.init();
tft.setRotation(0);
tft.fillScreen(0x0000);
tft.setTextColor(TFT_BLACK, bgColor);
targetTime = millis() + 1000;
Serial.print("正在连接WIFI ");