一直想有一个能放在桌面上的时钟,但又不想要数码管(也做过一个,总觉得过于单调,就吃灰了);于是就有了这个小东西
由于用的是0202大小的ws2812灯珠,为了能在10cm的方寸之间塞下20*8粒,只能将间距压缩至4.96mm;这也是没得办法的事情;
一共是两种三块板子拼接而成,正面两块相同的板子用来焊灯珠;背面则是一块比较小的控制板;上面集成了CH340C用来烧录程序;DS3231来保证时间的准确性;SHT30测量温湿度(位置不对,温度误差相当大);以及没用到的水银方向开关和光敏电阻;
控制板同时担任了主控和连接两块灯板的大任,真是辛苦了!!!
在画灯板的时候忽略了一件事,就是AWTRIX要求灯板的顺序是S型的,而我做成了之字型,所以现成的程序无法使用,无奈,只能自己一点点琢磨了;
其实一张板子也能够狗放下32*8个2812的,拿来做AWTRIX的灯板完全搓搓有余,但是为了能够显示更多的信息,以及看着更舒服些,最后还是决定分开两块来组装了。
联网使用的是wifimanager,加入了和风天气的参数,用来调用api更新天气;1000次的使用量对一般人来说够用了,
当然了,这些都是写在EEPROM中断电保存的;
接下来是代码;由于写的比较烂,之说一些我当时费时间比较多的吧
第一部分是wifimanager配网部分,逻辑如下:
首先从EEPROM中读取联网信息如果无法联网,则使用wifimanager联网,这时会将wifi信息以及和风天气的密钥和城市代码写入EEPROM,等待下次上电时读取使用;
联网后就通过NTP获取的时间来校准DS3231的时间;之后会由DS3231读取时间;
然后是发送http请求,获取天气信息,
当这一切都完成后,断开网络(低功耗???);以后每十分钟更新一次。
- <blockquote>ssid = read_eeprom(wifi_name_add, EEPROM.read(141));
复制代码
第二部分是发送http请求,更新天气信息的代码;基本就是由EEPROM读取密钥和城市代码,接受JSON串,解析信息;
- String hefengServer = "https://devapi.qweather.com/v7/weather/now";
- void Get_web_msg() {
- std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
- client->setInsecure();
- HTTPClient Hs;
- String Hs_web = hefengServer + "?gzip=n&location=" +
- read_eeprom(weather_local_add, 9) + "&key=" +
- read_eeprom(weather_key_add, 32);
- Hs.begin(*client, Hs_web);
- int sta = Hs.GET();
- String web_get = Hs.getString();
- int len = web_get.length() + 1;
- char json[len] ;
- web_get.toCharArray(json, len);
- deserializeJson(web, json);
- wea = web["now"]["icon"];
- //class_number = doc["num"];
- win_speed = web["now"]["windScale"];
- temp2 = web["now"]["temp"];
- hum = web["now"]["humidity"];
- rain = web["now"]["precip"];
- Serial.println(web_get);
- Serial.println(hum);
- Serial.println(win_speed);
- Hs.end();
- }
复制代码
然后是全部的代码
- #include <EEPROM.h>
- #include <ESP8266mDNS.h>
- #include <DNSServer.h>
- #include <WiFiManager.h>
- #include <ArduinoJson.h>
- #include <Wire.h>
- #include <ESP8266HTTPClient.h>
- #include <Adafruit_NeoPixel.h>
- #include <NTPClient.h>
- #include <WiFiUdp.h>
- #include <Ticker.h>
- #include "msg.h"
- #include "font_icon.h"
- #define sda 4 //IIC data
- #define scl 5 //IIC clk
- #define PIN 14 //ws2812 data pin
- #define NUMPIXELS 320 //ws2812 number
- WiFiManager wifimanager;
- String ssid ; //WiFi名称
- String password ; //WiFi密码
- /*
- 以下为wifimanager自动配网的相关代码
- 申请512字节大小的EEProm空间,用来存储wifi信息以及和风天气的地区码以及api密钥
- */
- int wifi_name_len; //wifi name length
- int wifi_pass_len; //wifi pass length
- int wifi_name_add = 1;
- int wifi_pass_add = 41;
- int weather_local_add = 81;
- int weather_key_add = 91;
- String wifi_name;
- String wifi_pass;
- String weather_local;//hefeng weather local number
- String weather_key;//hefeng weather api key
- char key[9];
- char local[32];
- StaticJsonDocument<200> doc;
- StaticJsonDocument<400> web;
- int weather_icon = 3;
- int weath = 1;
- int wea;
- int class_number;
- double win_speed;
- double temp2;
- int temp22;
- int hum;
- double rain;
- double pm;
- WiFiUDP ntpUDP;
- NTPClient timeClient(ntpUDP);
- Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
- Ticker tim;
- int ds_hour, ds_min, ds_sec , sec;
- int minute1, minute2, hour1, hour2;
- int i = 0;
- int colorR;
- int colorG;
- int colorB;
- void pixelShow()
- {
- pixels.setBrightness(8);
- for (int i = 0; i < NUMPIXELS; i++) {
- pixels.setPixelColor(i, colorR, colorG, colorB);
- }
- pixels.show();
- }
- void setup() {
- Wire.begin();
- EEPROM.begin(512);
- Serial.begin(115200);
- write_time();
- pixels.begin();
- pixels.setBrightness(10);
- pixelShow();
- tim.attach(600, write_time);
- }
- void write_data(int x, int number) {
- uint8_t b;
- for (int m = 0; m < 8; m++) {
- b = fonts[number][m];
- for (int j = 0; j < 8; j++) {
- pixels.setPixelColor(8 * x + 8 * m + j, 0, (b & 0x01) * 160, (b & 0x01) * 160);
- b >>= 1;
- }
- }
- }
- void write_fonts(int x, int number) {
- uint8_t b;
- for (int m = 0; m < 8; m++) {
- b = dm_fonts[number][m];
- for (int j = 0; j < 8; j++) {
- pixels.setPixelColor(8 * x + 8 * m + j, 0, (b & 0x01) * 160, (b & 0x01) * 160);
- b >>= 1;
- }
- }
- }
- void write_Icon(int x, int n) {
- for (int m = 0; m < 64; m++) {
- pixels.setPixelColor(8 * x + m, Icon[n][m * 3], Icon[n][m * 3 + 1], Icon[n][m * 3 + 2]);
- }
- }
- void loop() {
- read_time();
- write_data(0, ds_hour / 16);
- write_data(8, ds_hour % 16);
- write_data(16, ds_min / 16);
- write_data(24, ds_min % 16);
- write_data(32, ds_sec / 16 + 10);
- write_data(36, ds_sec % 16 + 10);
- //write_bitmap(32, 0);
- pixels.setPixelColor(15 * 8 + 2, 0, (ds_sec % 2) * 160, 0);
- pixels.setPixelColor(15 * 8 + 5, 0, (ds_sec % 2) * 160, 0);
- pixels.show();
- if (((ds_sec / 16) * 10 + ds_sec % 16) == 32) {
- msg_animo();
- }
- delay(999);
- /*Serial.println(hefeng_wind);
- Serial.print("weather local is : ");
- Serial.println(read_eeprom(weather_local_add, 9));
- Serial.print("weather key is : ");
- Serial.println(read_eeprom(weather_key_add, 32));*/
- }
- void Get_msg() {
- HTTPClient http;
- http.begin(serverName);
- http.addHeader("Content-Type", "application/x-www-form-urlencoded");
- String post_data = "name=1";
- http.POST(post_data);
- String load = http.getString();
- int len = load.length() + 1;
- char json[len] ;
- load.toCharArray(json, len);
- deserializeJson(doc, json);
- class_number = doc["num"];
- Serial.println(load);
- http.end();
- }
- /*
- 以下为和风天气的获取代码
- */
- String hefengServer = "https://devapi.qweather.com/v7/weather/now";
- void Get_web_msg() {
- std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
- client->setInsecure();
- HTTPClient Hs;
- String Hs_web = hefengServer + "?gzip=n&location=" +
- read_eeprom(weather_local_add, 9) + "&key=" +
- read_eeprom(weather_key_add, 32);
- Hs.begin(*client, Hs_web);
- int sta = Hs.GET();
- String web_get = Hs.getString();
- int len = web_get.length() + 1;
- char json[len] ;
- web_get.toCharArray(json, len);
- deserializeJson(web, json);
- wea = web["now"]["icon"];
- //class_number = doc["num"];
- win_speed = web["now"]["windScale"];
- temp2 = web["now"]["temp"];
- hum = web["now"]["humidity"];
- rain = web["now"]["precip"];
- Serial.println(web_get);
- Serial.println(hum);
- Serial.println(win_speed);
- Hs.end();
- }
- /*
- 以上为和风天气的获取代码
- */
- void write_time() {
- ssid = read_eeprom(wifi_name_add, EEPROM.read(141));
- password = read_eeprom(wifi_pass_add, EEPROM.read(142));
- WiFi.begin(ssid, password); //联网
- while ( WiFi.status() != WL_CONNECTED ) {
- i++;
- delay ( 500 );
- Serial.print ( "." );
- if (i > 40) { //60秒后如果还是连接不上,就判定为连接超时
- Serial.println("");
- Serial.print("连接超时!请检查网络环境");
- wifimanager.resetSettings();
- wifimanager.setDebugOutput(0);
- WiFiManagerParameter Weather_key("weatherkey", "和风天气密钥", key, 32);
- WiFiManagerParameter Weather_local("weatherlocal", "城市代码", local, 9);
- wifimanager.addParameter(&Weather_key);
- wifimanager.addParameter(&Weather_local);
- wifimanager.autoConnect("Hua_Weather");
- ssid = String(WiFi.SSID());
- password = String(WiFi.psk());
- weather_key = String(Weather_key.getValue());
- weather_local = String(Weather_local.getValue());
- wifi_name_len = ssid.length();
- wifi_pass_len = password.length();
- write_eeprom(wifi_name_add, ssid);
- write_eeprom(wifi_pass_add, password);
- write_eeprom(weather_local_add, weather_local);
- write_eeprom(weather_key_add, weather_key);
- EEPROM.write(141, wifi_name_len);
- EEPROM.write(142, wifi_pass_len);
- EEPROM.commit();
- break;
- }
- } Serial.println("");
- if (WiFi.status() == WL_CONNECTED) {
- Serial.println("已联网,准备更新时间!!!");
- timeClient.begin();
- timeClient.update();
- //秒,分,时的获取及写入;
- int Hour_ex = timeClient.getHours(); //hh
- if (Hour_ex != 8) {
- Wire.beginTransmission(0x68);
- Wire.write(0x00);
- int Sec_ex = timeClient.getSeconds(); //ss
- int dd = (Sec_ex / 10 * 16) + (Sec_ex % 10);
- Wire.write(dd);
- Wire.endTransmission();
- Wire.beginTransmission(0x68);
- Wire.write(0x01);
- int Minu_ex = timeClient.getMinutes(); //mm
- int ddd = (Minu_ex / 10 * 16) + (Minu_ex % 10);
- Wire.write(ddd);
- Wire.endTransmission();
- Wire.beginTransmission(0x68);
- Wire.write(0x02);
- int Hour_ex = timeClient.getHours(); //hh
- int d = (Hour_ex / 10 * 16) + (Hour_ex % 10);
- Wire.write(d);
- Wire.endTransmission();
- Serial.println("时间更新完成!!!");
- }
- else {
- Serial.println("更新时间出错???");
- }
- Get_msg();
- Get_web_msg();
- }
- else
- {
- Serial.println("未联网,凑乎用吧。。。。。。");
- }
- WiFi.disconnect(1); //时间更新完成后,断开连接,保持低功耗;
- if (WiFi.status() != WL_CONNECTED) {
- Serial.println("无线终端和接入点的连接已中断");
- }
- else
- {
- Serial.println("未能成功断开连接!");
- }
- }
- void read_time() {
- Wire.beginTransmission(0x68);
- Wire.write(0x00);
- Wire.endTransmission();
- Wire.requestFrom(0x68, 3);
- ds_sec = Wire.read();
- ds_min = Wire.read();
- ds_hour = Wire.read();
- hour1 = (ds_hour / 16);
- hour2 = (ds_hour % 16 );
- minute1 = (ds_min / 16 );
- minute2 = (ds_min % 16);
- sec = ((ds_sec / 16) * 10 + ds_sec % 16);
- }
- void msg_animo() {
- //read_temp();
- int win_all = win_speed * 10;
- int temp2_all = temp2 * 10;
- int hum_all = hum * 10;
- int rain_all = rain * 10;
- int pm_all = pm * 10;
- if (wea / 100 == 3) {
- weather_icon = 4; //rain
- } else if (wea == 100 || wea == 150) {
- weather_icon = 2; //sunny
- } else if (wea == 101 || wea == 102 || wea == 103 || wea == 153 || wea == 104 || wea == 154) {
- weather_icon = 6; //cloudy
- } else if (wea == 100 || wea == 150) {
- weather_icon = 2; //sunny
- } else if (wea / 100 == 4) {
- weather_icon = 3; //snow
- } else if (wea / 100 == 4) {
- weather_icon = 9; //haze
- }
- delay(200);
- for (int x = 0; x > -105 ; x--) {
- read_time();
- //draw time
- write_data(x, ds_hour / 16);
- write_data(x + 8, ds_hour % 16);
- write_data(x + 16, ds_min / 16);
- write_data(x + 24, ds_min % 16);
- write_data(x + 32, ds_sec / 16 + 10);
- write_data(x + 36, ds_sec % 16 + 10);
- pixels.setPixelColor((x + 15) * 8 + 2, 0, (ds_sec % 2) * 30, 0);
- pixels.setPixelColor((x + 15) * 8 + 5, 0, (ds_sec % 2) * 30, 0);
- //draw msg
- if (weath) {
- write_Icon(x + 40, weather_icon);
- write_data(x + 48, temp2_all / 100);
- write_data(x + 56, temp2_all % 100 / 10);
- } else {
- write_Icon(x + 40, water_icon);
- write_data(x + 48, hum_all / 100);
- write_data(x + 56, hum_all % 100 / 10);
- }
- write_Icon(x + 64, dollor_icon);
- write_data(x + 72, class_number / 100);
- write_data(x + 80, class_number % 100 / 10);
- write_data(x + 88, class_number % 10);
- //draw time
- write_Icon(x + 96, 10);
- write_data(x + 104, ds_hour / 16);
- write_data(x + 8 + 104, ds_hour % 16);
- write_data(x + 16 + 104, ds_min / 16);
- write_data(x + 24 + 104, ds_min % 16);
- write_data(x + 32 + 104, ds_sec / 16 + 10);
- write_data(x + 36 + 104, ds_sec % 16 + 10);
- pixels.setPixelColor((x + 15 + 104) * 8 + 2, 0, (ds_sec % 2) * 30, 0);
- pixels.setPixelColor((x + 15 + 104) * 8 + 5, 0, (ds_sec % 2) * 30, 0);
- pixels.show();
- delay(70);
- } weath = !weath;
- }
- void read_temp()
- {
- // _reset();
- Wire.beginTransmission(0x40);
- Wire.write(0xf3);
- Wire.endTransmission();
- delay(100);
- Wire.requestFrom(0x40, 2);
- uint8_t msb = Wire.read();
- uint8_t lsb = Wire.read();
- uint16_t value = msb << 8 | lsb;
- float temp1 = value * (175.72 / 65536.0) - 46.85;
- temp22 = int(temp1 * 10 );
- Serial.print(" The temp is :");
- Serial.print(temp1);
- Serial.print(";-------------------The Stant temp is :");
- Serial.println(temp22);
- }
- void read_rh() {
- Wire.beginTransmission(0x40);
- Wire.write(0xf5);
- Wire.endTransmission();
- delay(40);
- Wire.requestFrom(0x40, 2);
- uint8_t msb = Wire.read();
- uint8_t lsb = Wire.read();
- uint16_t value = msb << 8 | lsb;
- float rh1 = value * (125.0 / 65536.0) - 6.0;
- int rh2 = int(rh1 * 10 );
- Serial.print(" The humidity is :");
- Serial.print(rh1);
- Serial.print(";-------------------The Stant humidity is :");
- Serial.println(rh2);
- }
- /*
- 读写EEPROM
- */
- void write_eeprom(int addr, String velue) {
- int lenth = velue.length();
- for (int a = 0; a < lenth; a++) {
- EEPROM.write(addr + a, velue[a]);
- }
- }
- String read_eeprom(int addr, int lenth) {
- String Text;
- for (int a = 0; a < lenth; a++) {
- Text += char(EEPROM.read(addr + a));
- }
- return Text ;
- Serial.print(Text);
- }
复制代码
哦,字库在这里
- uint8_t fonts[][8] = {
- 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00,// 0
- 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, 0x00,// 1
- 0x00, 0x42, 0x61, 0x51, 0x49, 0x46, 0x00, 0x00,// 2
- 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31, 0x00, 0x00,// 3
- 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x00,// 4
- 0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x00,// 5
- 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, 0x00, 0x00,// 6
- 0x00, 0x01, 0x71, 0x09, 0x05, 0x03, 0x00, 0x00,// 7
- 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00,// 8
- 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00,// 9
- 0x00, 0xF8, 0x88, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little0
- 0x00, 0x90, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00,//Little1
- 0x00, 0xE8, 0xA8, 0xB8, 0x00, 0x00, 0x00, 0x00,//Little2
- 0x00, 0xA8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little3
- 0x00, 0x38, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little4
- 0x00, 0xB8, 0xA8, 0xE8, 0x00, 0x00, 0x00, 0x00,//Little5
- 0x00, 0xF8, 0xA8, 0xE8, 0x00, 0x00, 0x00, 0x00,//Little6
- 0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little7
- 0x00, 0xF8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little8
- 0x00, 0xB8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little9
- };
- uint8_t Icon[][192] = {
- { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- },/*dollor 0*/
- { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
- 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0XFF, 0XFF, 0XFF,
- 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0XFF, 0XFF, 0XFF,
- 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0XFF, 0XFF, 0XFF,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XBD, 0X48, 0XFE, 0X00, 0X00, 0X00, 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE,
- 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- },/*temp 1*/
- {
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XE8, 0XF1, 0X8A, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XE8, 0XF1, 0X8A, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- },//sun 2
- { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
- 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF6, 0X17, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
- 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF6, 0X17, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
- 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF6, 0X17, 0X00, 0XF6, 0X17, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XF6, 0X17, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- },//snow_man 3
- { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE,
- 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00,
- 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE,
- 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE,
- },//rain 4
- { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00,
- 0XDF, 0XEC, 0X4F, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F,
- 0XF5, 0XFC, 0XB5, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F,
- 0XF5, 0XFC, 0XB5, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F,
- 0XF5, 0XFC, 0XB5, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F,
- 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- },//moon 5
- { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XE8, 0XF1, 0X8A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XE8, 0XF1, 0X8A, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- },//sun_cloud 6
- { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XBD, 0XBD, 0XBD, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XD1, 0XD1, 0XD1, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- },//all_cloud 7
- {
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X84, 0X0A, 0XC7, 0X84, 0X0A, 0XC7, 0X84, 0X0A, 0XC7, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XA6, 0X16, 0XF7, 0XA6, 0X16, 0XF7, 0XA6, 0X16, 0XF7, 0XA6, 0X16, 0XF7, 0XA6, 0X16, 0XF7, 0X79, 0X0A, 0XB7,
- 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE, 0XE3, 0XBE, 0XF8, 0XBD, 0X48, 0XFE, 0XA6, 0X16, 0XF7,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBD, 0X48, 0XFE, 0XD6, 0X9C, 0XF5, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE3, 0XBE, 0XF8, 0XA6, 0X16, 0XF7,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XD6, 0X9C, 0XF5, 0XD6, 0X9C, 0XF5, 0XBD, 0X48, 0XFE, 0X00, 0X00, 0X00,
- 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
- },//water 8
- {
- 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
- 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
- 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
- 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
- 0X87, 0X87, 0X87, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
- 0X87, 0X87, 0X87, 0X87, 0X87, 0X87, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
- 0X87, 0X87, 0X87, 0X87, 0X87, 0X87, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
- 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
- },//fog 9
- {
- 0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00,
- 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
- 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
- 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
- 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
- 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
- 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
- 0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00,
- },//clock 10
- };
- int water_icon = 8;
- int dollor_icon = 0;
- int temp_icon = 1;
复制代码
程序写的比较烂,从去年9月份开始酝酿这件事儿,11月份开始动手写,从最基础的使用NeoPixel点亮第一颗ws2812到后来的显示0-10数字,再到显示图标Logo,再到现在的自动配网和显示动画切换,中间垮了接近半年的时间。下一步就是准备学习3DMAX来设计外壳了
|