数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 3296|回复: 8

[other] 仿制一个低阶AWTRIX像素时钟

[复制链接]
发表于 2021-3-12 02:09:03 | 显示全部楼层 |阅读模式
一直想有一个能放在桌面上的时钟,但又不想要数码管(也做过一个,总觉得过于单调,就吃灰了);于是就有了这个小东西


由于用的是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请求,获取天气信息,
当这一切都完成后,断开网络(低功耗???);以后每十分钟更新一次。

  1. <blockquote>ssid = read_eeprom(wifi_name_add, EEPROM.read(141));
复制代码

第二部分是发送http请求,更新天气信息的代码;基本就是由EEPROM读取密钥和城市代码,接受JSON串,解析信息;

  1. String hefengServer = "https://devapi.qweather.com/v7/weather/now";
  2. void Get_web_msg() {
  3.   std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
  4.   client->setInsecure();
  5.   HTTPClient Hs;
  6.   String Hs_web = hefengServer + "?gzip=n&location=" +
  7.                   read_eeprom(weather_local_add, 9) + "&key=" +
  8.                   read_eeprom(weather_key_add, 32);
  9.   Hs.begin(*client, Hs_web);
  10.   int sta = Hs.GET();
  11.   String web_get = Hs.getString();
  12.   int len = web_get.length() + 1;
  13.   char json[len] ;
  14.   web_get.toCharArray(json, len);
  15.   deserializeJson(web, json);
  16.   wea = web["now"]["icon"];
  17.   //class_number = doc["num"];
  18.   win_speed = web["now"]["windScale"];
  19.   temp2 = web["now"]["temp"];
  20.   hum = web["now"]["humidity"];
  21.   rain = web["now"]["precip"];
  22.   Serial.println(web_get);
  23.   Serial.println(hum);
  24.   Serial.println(win_speed);
  25.   Hs.end();
  26. }
复制代码

然后是全部的代码

  1. #include <EEPROM.h>
  2. #include <ESP8266mDNS.h>
  3. #include <DNSServer.h>
  4. #include <WiFiManager.h>
  5. #include <ArduinoJson.h>
  6. #include <Wire.h>
  7. #include <ESP8266HTTPClient.h>
  8. #include <Adafruit_NeoPixel.h>
  9. #include <NTPClient.h>
  10. #include <WiFiUdp.h>
  11. #include <Ticker.h>
  12. #include "msg.h"
  13. #include "font_icon.h"
  14. #define sda 4   //IIC data
  15. #define scl 5   //IIC clk
  16. #define PIN  14     //ws2812 data pin
  17. #define NUMPIXELS 320   //ws2812 number
  18. WiFiManager wifimanager;
  19. String ssid ;         //WiFi名称
  20. String password ;   //WiFi密码
  21. /*
  22.   以下为wifimanager自动配网的相关代码
  23.   申请512字节大小的EEProm空间,用来存储wifi信息以及和风天气的地区码以及api密钥
  24. */
  25. int wifi_name_len;  //wifi name length
  26. int wifi_pass_len;   //wifi pass length
  27. int wifi_name_add = 1;
  28. int wifi_pass_add = 41;
  29. int weather_local_add = 81;
  30. int weather_key_add = 91;
  31. String wifi_name;
  32. String wifi_pass;
  33. String weather_local;//hefeng weather local number
  34. String weather_key;//hefeng weather api key
  35. char key[9];
  36. char local[32];
  37. StaticJsonDocument<200> doc;
  38. StaticJsonDocument<400> web;
  39. int weather_icon = 3;
  40. int weath = 1;
  41. int wea;
  42. int class_number;
  43. double win_speed;
  44. double temp2;
  45. int temp22;
  46. int hum;
  47. double rain;
  48. double pm;
  49. WiFiUDP ntpUDP;
  50. NTPClient timeClient(ntpUDP);
  51. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
  52. Ticker tim;
  53. int ds_hour, ds_min, ds_sec , sec;
  54. int minute1, minute2, hour1, hour2;
  55. int i = 0;
  56. int colorR;
  57. int colorG;
  58. int colorB;
  59. void pixelShow()
  60. {
  61.   pixels.setBrightness(8);

  62.   for (int i = 0; i < NUMPIXELS; i++) {
  63.     pixels.setPixelColor(i, colorR, colorG, colorB);
  64.   }
  65.   pixels.show();
  66. }
  67. void setup() {
  68.   Wire.begin();
  69.   EEPROM.begin(512);
  70.   Serial.begin(115200);
  71.   write_time();
  72.   pixels.begin();
  73.   pixels.setBrightness(10);
  74.   pixelShow();
  75.   tim.attach(600, write_time);
  76. }
  77. void write_data(int x, int number) {
  78.   uint8_t b;
  79.   for (int m = 0; m < 8; m++) {
  80.     b = fonts[number][m];
  81.     for (int j = 0; j < 8; j++) {
  82.       pixels.setPixelColor(8 * x + 8 * m + j, 0, (b & 0x01) * 160, (b & 0x01) * 160);
  83.       b >>= 1;
  84.     }
  85.   }
  86. }
  87. void write_fonts(int x, int number) {
  88.   uint8_t b;
  89.   for (int m = 0; m < 8; m++) {
  90.     b = dm_fonts[number][m];
  91.     for (int j = 0; j < 8; j++) {
  92.       pixels.setPixelColor(8 * x + 8 * m + j, 0, (b & 0x01) * 160, (b & 0x01) * 160);
  93.       b >>= 1;
  94.     }
  95.   }
  96. }
  97. void write_Icon(int x, int n) {
  98.   for (int m = 0; m < 64; m++) {
  99.     pixels.setPixelColor(8 * x + m, Icon[n][m * 3], Icon[n][m * 3 + 1], Icon[n][m * 3 + 2]);
  100.   }
  101. }

  102. void loop() {
  103.   read_time();
  104.   write_data(0, ds_hour / 16);
  105.   write_data(8, ds_hour % 16);
  106.   write_data(16, ds_min / 16);
  107.   write_data(24, ds_min % 16);
  108.   write_data(32, ds_sec / 16 + 10);
  109.   write_data(36, ds_sec % 16 + 10);
  110.   //write_bitmap(32, 0);
  111.   pixels.setPixelColor(15 * 8 + 2, 0, (ds_sec % 2) * 160, 0);
  112.   pixels.setPixelColor(15 * 8 + 5, 0, (ds_sec % 2) * 160, 0);
  113.   pixels.show();
  114.   if (((ds_sec / 16) * 10 + ds_sec % 16) == 32) {
  115.     msg_animo();
  116.   }
  117.   delay(999);
  118.   /*Serial.println(hefeng_wind);
  119.     Serial.print("weather local is : ");
  120.     Serial.println(read_eeprom(weather_local_add, 9));
  121.     Serial.print("weather key is : ");
  122.     Serial.println(read_eeprom(weather_key_add, 32));*/
  123. }
  124. void Get_msg() {
  125.   HTTPClient http;
  126.   http.begin(serverName);
  127.   http.addHeader("Content-Type", "application/x-www-form-urlencoded");
  128.   String post_data = "name=1";
  129.   http.POST(post_data);
  130.   String load = http.getString();
  131.   int len = load.length() + 1;
  132.   char json[len] ;
  133.   load.toCharArray(json, len);
  134.   deserializeJson(doc, json);
  135.   class_number = doc["num"];
  136.   Serial.println(load);
  137.   http.end();
  138. }
  139. /*
  140.    以下为和风天气的获取代码
  141. */
  142. String hefengServer = "https://devapi.qweather.com/v7/weather/now";
  143. void Get_web_msg() {
  144.   std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
  145.   client->setInsecure();
  146.   HTTPClient Hs;
  147.   String Hs_web = hefengServer + "?gzip=n&location=" +
  148.                   read_eeprom(weather_local_add, 9) + "&key=" +
  149.                   read_eeprom(weather_key_add, 32);
  150.   Hs.begin(*client, Hs_web);
  151.   int sta = Hs.GET();
  152.   String web_get = Hs.getString();
  153.   int len = web_get.length() + 1;
  154.   char json[len] ;
  155.   web_get.toCharArray(json, len);
  156.   deserializeJson(web, json);
  157.   wea = web["now"]["icon"];
  158.   //class_number = doc["num"];
  159.   win_speed = web["now"]["windScale"];
  160.   temp2 = web["now"]["temp"];
  161.   hum = web["now"]["humidity"];
  162.   rain = web["now"]["precip"];
  163.   Serial.println(web_get);
  164.   Serial.println(hum);
  165.   Serial.println(win_speed);
  166.   Hs.end();
  167. }
  168. /*
  169.   以上为和风天气的获取代码
  170. */
  171. void write_time() {
  172.   ssid = read_eeprom(wifi_name_add, EEPROM.read(141));
  173.   password = read_eeprom(wifi_pass_add, EEPROM.read(142));
  174.   WiFi.begin(ssid, password);         //联网
  175.   while ( WiFi.status() != WL_CONNECTED ) {
  176.     i++;
  177.     delay ( 500 );
  178.     Serial.print ( "." );
  179.     if (i > 40) {                    //60秒后如果还是连接不上,就判定为连接超时
  180.       Serial.println("");
  181.       Serial.print("连接超时!请检查网络环境");
  182.       wifimanager.resetSettings();
  183.       wifimanager.setDebugOutput(0);
  184.       WiFiManagerParameter Weather_key("weatherkey", "和风天气密钥", key, 32);
  185.       WiFiManagerParameter Weather_local("weatherlocal", "城市代码", local, 9);
  186.       wifimanager.addParameter(&Weather_key);
  187.       wifimanager.addParameter(&Weather_local);
  188.       wifimanager.autoConnect("Hua_Weather");
  189.       ssid = String(WiFi.SSID());
  190.       password = String(WiFi.psk());
  191.       weather_key = String(Weather_key.getValue());
  192.       weather_local = String(Weather_local.getValue());
  193.       wifi_name_len = ssid.length();
  194.       wifi_pass_len = password.length();
  195.       write_eeprom(wifi_name_add, ssid);
  196.       write_eeprom(wifi_pass_add, password);
  197.       write_eeprom(weather_local_add, weather_local);
  198.       write_eeprom(weather_key_add, weather_key);
  199.       EEPROM.write(141, wifi_name_len);
  200.       EEPROM.write(142, wifi_pass_len);
  201.       EEPROM.commit();
  202.       break;
  203.     }
  204.   } Serial.println("");
  205.   if (WiFi.status() == WL_CONNECTED) {
  206.     Serial.println("已联网,准备更新时间!!!");
  207.     timeClient.begin();
  208.     timeClient.update();
  209.     //秒,分,时的获取及写入;
  210.     int Hour_ex = timeClient.getHours();                   //hh
  211.     if (Hour_ex != 8) {
  212.       Wire.beginTransmission(0x68);
  213.       Wire.write(0x00);
  214.       int Sec_ex = timeClient.getSeconds();                   //ss
  215.       int dd = (Sec_ex / 10 * 16) + (Sec_ex % 10);
  216.       Wire.write(dd);
  217.       Wire.endTransmission();
  218.       Wire.beginTransmission(0x68);
  219.       Wire.write(0x01);
  220.       int Minu_ex = timeClient.getMinutes();                   //mm
  221.       int ddd = (Minu_ex / 10 * 16) + (Minu_ex % 10);
  222.       Wire.write(ddd);
  223.       Wire.endTransmission();
  224.       Wire.beginTransmission(0x68);
  225.       Wire.write(0x02);
  226.       int Hour_ex = timeClient.getHours();                   //hh
  227.       int d = (Hour_ex / 10 * 16) + (Hour_ex % 10);
  228.       Wire.write(d);
  229.       Wire.endTransmission();
  230.       Serial.println("时间更新完成!!!");
  231.     }
  232.     else {
  233.       Serial.println("更新时间出错???");
  234.     }
  235.     Get_msg();
  236.     Get_web_msg();
  237.   }
  238.   else
  239.   {
  240.     Serial.println("未联网,凑乎用吧。。。。。。");
  241.   }
  242.   WiFi.disconnect(1);                     //时间更新完成后,断开连接,保持低功耗;
  243.   if (WiFi.status() != WL_CONNECTED) {
  244.     Serial.println("无线终端和接入点的连接已中断");
  245.   }
  246.   else
  247.   {
  248.     Serial.println("未能成功断开连接!");
  249.   }
  250. }
  251. void read_time() {
  252.   Wire.beginTransmission(0x68);
  253.   Wire.write(0x00);
  254.   Wire.endTransmission();
  255.   Wire.requestFrom(0x68, 3);
  256.   ds_sec = Wire.read();
  257.   ds_min = Wire.read();
  258.   ds_hour = Wire.read();
  259.   hour1 = (ds_hour / 16);
  260.   hour2 = (ds_hour % 16 );
  261.   minute1 = (ds_min / 16 );
  262.   minute2 = (ds_min % 16);
  263.   sec = ((ds_sec / 16) * 10 + ds_sec % 16);
  264. }
  265. void msg_animo() {
  266.   //read_temp();
  267.   int win_all = win_speed * 10;
  268.   int temp2_all = temp2 * 10;
  269.   int hum_all = hum * 10;
  270.   int rain_all = rain * 10;
  271.   int pm_all = pm * 10;
  272.   if (wea / 100 == 3) {
  273.     weather_icon = 4;   //rain
  274.   } else if (wea == 100 || wea == 150) {
  275.     weather_icon = 2;   //sunny
  276.   } else if (wea == 101 || wea == 102 || wea == 103 || wea == 153 || wea == 104 || wea == 154) {
  277.     weather_icon = 6;   //cloudy
  278.   } else if (wea == 100 || wea == 150) {
  279.     weather_icon = 2;   //sunny
  280.   } else if (wea / 100 == 4) {
  281.     weather_icon = 3;   //snow
  282.   } else if (wea / 100 == 4) {
  283.     weather_icon = 9;   //haze
  284.   }
  285.   delay(200);
  286.   for (int x = 0; x > -105 ; x--) {
  287.     read_time();
  288.     //draw time
  289.     write_data(x, ds_hour / 16);
  290.     write_data(x + 8, ds_hour % 16);
  291.     write_data(x + 16, ds_min / 16);
  292.     write_data(x + 24, ds_min % 16);
  293.     write_data(x + 32, ds_sec / 16 + 10);
  294.     write_data(x + 36, ds_sec % 16 + 10);
  295.     pixels.setPixelColor((x + 15) * 8 + 2, 0, (ds_sec % 2) * 30, 0);
  296.     pixels.setPixelColor((x + 15) * 8 + 5, 0, (ds_sec % 2) * 30, 0);
  297.     //draw msg
  298.     if (weath) {
  299.       write_Icon(x + 40, weather_icon);
  300.       write_data(x + 48, temp2_all / 100);
  301.       write_data(x + 56, temp2_all % 100 / 10);
  302.     } else {
  303.       write_Icon(x + 40, water_icon);
  304.       write_data(x + 48, hum_all / 100);
  305.       write_data(x + 56, hum_all % 100 / 10);
  306.     }

  307.     write_Icon(x + 64, dollor_icon);
  308.     write_data(x + 72, class_number / 100);
  309.     write_data(x + 80, class_number % 100 / 10);
  310.     write_data(x + 88, class_number % 10);
  311.     //draw time
  312.     write_Icon(x + 96, 10);
  313.     write_data(x + 104, ds_hour / 16);
  314.     write_data(x + 8 + 104, ds_hour % 16);
  315.     write_data(x + 16 + 104, ds_min / 16);
  316.     write_data(x + 24 + 104, ds_min % 16);
  317.     write_data(x + 32 + 104, ds_sec / 16 + 10);
  318.     write_data(x + 36 + 104, ds_sec % 16 + 10);
  319.     pixels.setPixelColor((x + 15 + 104) * 8 + 2, 0, (ds_sec % 2) * 30, 0);
  320.     pixels.setPixelColor((x + 15 + 104) * 8 + 5, 0, (ds_sec % 2) * 30, 0);
  321.     pixels.show();
  322.     delay(70);
  323.   } weath = !weath;
  324. }
  325. void read_temp()
  326. {
  327.   // _reset();
  328.   Wire.beginTransmission(0x40);
  329.   Wire.write(0xf3);
  330.   Wire.endTransmission();
  331.   delay(100);
  332.   Wire.requestFrom(0x40, 2);
  333.   uint8_t msb = Wire.read();
  334.   uint8_t lsb = Wire.read();
  335.   uint16_t value = msb << 8 | lsb;
  336.   float temp1 = value * (175.72 / 65536.0) - 46.85;
  337.   temp22 = int(temp1 * 10 );
  338.   Serial.print(" The temp is :");
  339.   Serial.print(temp1);
  340.   Serial.print(";-------------------The Stant temp is :");
  341.   Serial.println(temp22);
  342. }
  343. void read_rh() {
  344.   Wire.beginTransmission(0x40);
  345.   Wire.write(0xf5);
  346.   Wire.endTransmission();
  347.   delay(40);
  348.   Wire.requestFrom(0x40, 2);
  349.   uint8_t msb = Wire.read();
  350.   uint8_t lsb = Wire.read();
  351.   uint16_t value = msb << 8 | lsb;
  352.   float rh1 = value * (125.0 / 65536.0) - 6.0;
  353.   int rh2 = int(rh1 * 10 );
  354.   Serial.print(" The humidity is :");
  355.   Serial.print(rh1);
  356.   Serial.print(";-------------------The Stant humidity is :");
  357.   Serial.println(rh2);
  358. }
  359. /*
  360.    读写EEPROM
  361. */
  362. void write_eeprom(int addr, String velue) {
  363.   int lenth = velue.length();
  364.   for (int a = 0; a < lenth; a++) {
  365.     EEPROM.write(addr + a, velue[a]);
  366.   }
  367. }
  368. String read_eeprom(int addr, int lenth) {
  369.   String Text;
  370.   for (int a = 0; a < lenth; a++) {
  371.     Text +=  char(EEPROM.read(addr + a));
  372.   }
  373.   return Text ;
  374.   Serial.print(Text);
  375. }
复制代码

哦,字库在这里

  1. uint8_t fonts[][8] = {
  2.   0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00,// 0
  3.   0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, 0x00,// 1
  4.   0x00, 0x42, 0x61, 0x51, 0x49, 0x46, 0x00, 0x00,// 2
  5.   0x00, 0x21, 0x41, 0x45, 0x4B, 0x31, 0x00, 0x00,// 3
  6.   0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x00,// 4
  7.   0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x00,// 5
  8.   0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, 0x00, 0x00,// 6
  9.   0x00, 0x01, 0x71, 0x09, 0x05, 0x03, 0x00, 0x00,// 7
  10.   0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00,// 8
  11.   0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00,// 9
  12.   0x00, 0xF8, 0x88, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little0
  13.   0x00, 0x90, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00,//Little1
  14.   0x00, 0xE8, 0xA8, 0xB8, 0x00, 0x00, 0x00, 0x00,//Little2
  15.   0x00, 0xA8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little3
  16.   0x00, 0x38, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little4
  17.   0x00, 0xB8, 0xA8, 0xE8, 0x00, 0x00, 0x00, 0x00,//Little5
  18.   0x00, 0xF8, 0xA8, 0xE8, 0x00, 0x00, 0x00, 0x00,//Little6
  19.   0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little7
  20.   0x00, 0xF8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little8
  21.   0x00, 0xB8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00,//Little9
  22. };
  23. uint8_t Icon[][192] = {
  24.   { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  25.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  26.     0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00,
  27.     0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00, 0XFF, 0X00, 0X00,
  28.     0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00,
  29.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  30.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  31.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  32.   },/*dollor  0*/
  33.   { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
  34.     0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0XFF, 0XFF, 0XFF,
  35.     0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0XFF, 0XFF, 0XFF,
  36.     0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF5, 0X17, 0X00, 0XF5, 0X17, 0XFF, 0XFF, 0XFF,
  37.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
  38.     0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  39.     0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XBD, 0X48, 0XFE, 0X00, 0X00, 0X00, 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE,
  40.     0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  41.   },/*temp  1*/
  42.   {
  43.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  44.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  45.     0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XE8, 0XF1, 0X8A, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B,
  46.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  47.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  48.     0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XFF, 0XF8, 0X1B, 0XFF, 0XF8, 0X1B, 0XE8, 0XF1, 0X8A, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B,
  49.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  50.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XF8, 0X1B, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  51.   },//sun 2
  52.   { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  53.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
  54.     0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
  55.     0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF6, 0X17, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
  56.     0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF6, 0X17, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
  57.     0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0XF6, 0X17, 0X00, 0XF6, 0X17, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
  58.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XF6, 0X17, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
  59.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  60.   },//snow_man  3
  61.   { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  62.     0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  63.     0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00,
  64.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE,
  65.     0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00,
  66.     0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE,
  67.     0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE, 0X00, 0X00, 0X00,
  68.     0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X36, 0X41, 0XFE,
  69.   },//rain  4
  70.   { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  71.     0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00,
  72.     0XDF, 0XEC, 0X4F, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XF5, 0XFC, 0XB5, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F,
  73.     0XF5, 0XFC, 0XB5, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F,
  74.     0XF5, 0XFC, 0XB5, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F,
  75.     0XF5, 0XFC, 0XB5, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0XDF, 0XEC, 0X4F,
  76.     0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00,
  77.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XDF, 0XEC, 0X4F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  78.   },//moon  5
  79.   { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  80.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XE8, 0XF1, 0X8A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  81.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  82.     0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00,
  83.     0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XE8, 0XF1, 0X8A, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00,
  84.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00,
  85.     0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XE8, 0XF1, 0X8A, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00,
  86.     0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  87.   },//sun_cloud 6
  88.   { 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  89.     0X00, 0X00, 0X00, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XBD, 0XBD, 0XBD, 0X00, 0X00, 0X00,
  90.     0X00, 0X00, 0X00, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
  91.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XBD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
  92.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
  93.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00,
  94.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XD1, 0XD1, 0XD1, 0X00, 0X00, 0X00,
  95.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  96.   },//all_cloud 7
  97.   {
  98.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  99.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  100.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X84, 0X0A, 0XC7, 0X84, 0X0A, 0XC7, 0X84, 0X0A, 0XC7, 0X00, 0X00, 0X00,
  101.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XA6, 0X16, 0XF7, 0XA6, 0X16, 0XF7, 0XA6, 0X16, 0XF7, 0XA6, 0X16, 0XF7, 0XA6, 0X16, 0XF7, 0X79, 0X0A, 0XB7,
  102.     0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE, 0XBD, 0X48, 0XFE, 0XE3, 0XBE, 0XF8, 0XBD, 0X48, 0XFE, 0XA6, 0X16, 0XF7,
  103.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XBD, 0X48, 0XFE, 0XD6, 0X9C, 0XF5, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE3, 0XBE, 0XF8, 0XA6, 0X16, 0XF7,
  104.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XD6, 0X9C, 0XF5, 0XD6, 0X9C, 0XF5, 0XBD, 0X48, 0XFE, 0X00, 0X00, 0X00,
  105.     0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,
  106.   },//water 8
  107.   {
  108.     0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
  109.     0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
  110.     0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
  111.     0XCC, 0XCC, 0XCC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
  112.     0X87, 0X87, 0X87, 0XFF, 0XFF, 0XFF, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
  113.     0X87, 0X87, 0X87, 0X87, 0X87, 0X87, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
  114.     0X87, 0X87, 0X87, 0X87, 0X87, 0X87, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
  115.     0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC, 0X00, 0X00, 0X00, 0XCC, 0XCC, 0XCC,
  116.   },//fog  9
  117.   {
  118.     0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00,
  119.     0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
  120.     0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
  121.     0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
  122.     0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
  123.     0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
  124.     0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45,
  125.     0X00, 0X00, 0X00, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0XC8, 0XFF, 0X45, 0X00, 0X00, 0X00,
  126.   },//clock 10
  127. };
  128. int water_icon = 8;
  129. int dollor_icon = 0;
  130. int temp_icon = 1;
复制代码

程序写的比较烂,从去年9月份开始酝酿这件事儿,11月份开始动手写,从最基础的使用NeoPixel点亮第一颗ws2812到后来的显示0-10数字,再到显示图标Logo,再到现在的自动配网和显示动画切换,中间垮了接近半年的时间。下一步就是准备学习3DMAX来设计外壳了





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 1家元 +100 收起 理由
家睦 + 100

查看全部打赏

发表于 2021-3-12 23:43:58 | 显示全部楼层
过不了多久你i也会觉得它单调:lol:
回复 支持 反对

使用道具 举报

发表于 2021-3-13 09:11:29 | 显示全部楼层
建议不要使用蓝色,这种蓝色刺眼,稍远点看不清。
回复 支持 反对

使用道具 举报

发表于 2021-3-13 10:31:15 | 显示全部楼层
厉害, 整体照片咋没有.
回复 支持 反对

使用道具 举报

发表于 2021-3-13 10:44:09 | 显示全部楼层
做的很好。就是蓝色看着不舒服。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-13 12:18:19 来自手机浏览器 | 显示全部楼层
hzw6834 发表于 2021-3-13 09:11
建议不要使用蓝色,这种蓝色刺眼,稍远点看不清。

ws2812最大的优点就是颜色可以随意换
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-13 12:18:56 来自手机浏览器 | 显示全部楼层
ahyu99 发表于 2021-3-13 10:44
做的很好。就是蓝色看着不舒服。

今天就换,其实是想搞成紫色的,但是蓝光还是太瞎眼了
回复 支持 反对

使用道具 举报

发表于 2021-3-14 13:02:01 来自手机浏览器 | 显示全部楼层
3231有sop8封装的,16的空引脚不是要求接地么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-22 02:14 , Processed in 0.140400 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表