极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 35690|回复: 17

星期天在家弄了个SSD1331彩色OLED的小程序

[复制链接]
发表于 2016-4-24 23:33:17 | 显示全部楼层 |阅读模式
本帖最后由 mingzhi080218 于 2016-4-24 23:33 编辑

星期天在家无事摆弄了一下很久之前买的OLED模块,闭关两天写了一个温湿度监测的小程序。
材料:1.MEGA 2560主板 2.DHT11 3.蜂鸣器 4.光敏电阻  5.按键开关  6.电位器  7.火焰传感器 8.SSD1331彩色OLED(其中2-6在一个扩展板上)
主要功能:通过中断控制屏幕间切换和关闭,第一屏用曲线图显示温湿度变化,发现火源时蜂鸣器报警,温度大于33度时屏幕提示,预留了煤气报警的图形警告界面,等买了气体传感器再说;第二屏为数字显示温湿度数据及模拟温度计,模拟温度计还没有画太精准,本人数字实在太差算不来;第三屏没有想好做什么,随便画了个雷达图玩, 第四屏清屏。
先上图看下效果,做的很粗糙,图片也不是太清晰,各位凑合着看吧,也请各位大神多多指导。
第一屏:

第二屏:

第三屏:


面临的问题:
1.DHT11精度不够,需要更换精度更高的传感器?
2.SSD1331的刷新问题,目前用的库在工作时刷新不是太快,如要清屏或是画实心图形时就会闪烁,数字会产生重影。
3.按键输入信号抖动厉害,不能实现预定的功能。

第一次发贴不是太熟悉这个编辑器,随后再放代码和库文件。我是新手,请大神们手下留情。
(程序中用到的库: dht11,Adafruit_GFX,Adafruit_SSD1331)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2016-4-24 23:34:25 | 显示全部楼层
看看能不能占个沙发。请大神们多多帮助啊!
回复 支持 反对

使用道具 举报

发表于 2016-4-24 23:41:39 | 显示全部楼层
试试 u8glib
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-24 23:49:35 | 显示全部楼层
davidce 发表于 2016-4-24 23:41
试试 u8glib

之前试过u8glib,里面有1351的彩色OLED,但好像不太支持SSD1331的屏,尝试改库文件但失败了。Adafruit_SSD1331的库也是前不久刚找到的才顺利点亮了屏幕。
回复 支持 反对

使用道具 举报

发表于 2016-4-24 23:57:48 | 显示全部楼层
真是有钱人
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 00:57:00 | 显示全部楼层
wwwymq 发表于 2016-4-24 23:57
真是有钱人

           
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 08:28:43 | 显示全部楼层
发个代码试下,麻烦大神们帮我看下,谢谢!
  1. #define sclk 30
  2. #define mosi 28
  3. #define cs   26
  4. #define rst  24
  5. #define dc   22

  6. #define BLACK           0x0000
  7. #define BLUE            0x001F
  8. #define RED             0xF800
  9. #define GREEN           0x07E0
  10. #define CYAN            0x07FF
  11. #define MAGENTA         0xF81F
  12. #define YELLOW          0xFFE0
  13. #define WHITE           0xFFFF
  14. #define BROWN          0xBC40
  15. #define GRAY            0x2222
  16. #define PURPLE          0xf81f
  17. #define GND 23
  18. #define lightSnr A1
  19. #define fireSnr 7
  20. #define rotation A0
  21. int redLed = 12;
  22. int blueLed = 13;
  23. int speaker = 5;
  24. int i;
  25. float pi = 3.1415926 ;
  26. int counter=0;

  27. #include <Adafruit_GFX.h>
  28. #include <Adafruit_SSD1331.h>
  29. #include <SPI.h>
  30. Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, mosi, sclk, rst);

  31. #include <DHT.h>
  32. #define DHTPIN 4
  33. #define DHTTYPE DHT11
  34. DHT dht (DHTPIN, DHTTYPE);


  35. void setup() {
  36.   pinMode(GND,OUTPUT);
  37.   pinMode(lightSnr,INPUT);
  38.   pinMode(fireSnr,INPUT);
  39.   pinMode(rotation,INPUT);
  40.   pinMode(blueLed,OUTPUT);
  41.   pinMode(speaker,OUTPUT);
  42.   digitalWrite(GND,LOW);
  43.   display.begin();
  44.   dht.begin();
  45.   display.fillScreen(BLACK);
  46.   display.setCursor(5, 25);
  47.   display.setTextColor(GREEN);  
  48.   display.setTextSize(1);
  49.   display.println("Initializing...");
  50.   delay(200);
  51.   sensorCheck();
  52.   //uint16_t time = millis();
  53.   //time = millis() - time;
  54.   display.fillScreen(BLACK);
  55.   delay(1);
  56.   //Serial.begin(115200);
  57.   attachInterrupt(0,counterChange,FALLING);
  58.   attachInterrupt(1,counterDown,FALLING);
  59. }
  60.   
  61. void loop() {
  62.   switch(counter){
  63.     case 0:envConsole();
  64.     delay(200);
  65.     break;
  66.     case 1:showTemperature();
  67.     delay(200);
  68.     break;
  69.     case 2:drawRadarbg();
  70.     delay(200);
  71.     break;
  72.     case 3:clearScreen();
  73.     delay(200);
  74.     break;
  75.     //case 4:drawThermo();
  76.     //delay(200);
  77.     //break;
  78.   }
  79. }

  80. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  81. void drawRadarbg() {
  82.   display.fillScreen(BLACK);
  83.   display.setCursor(65,1);
  84.   display.setTextSize(1);
  85.   display.setTextColor(PURPLE);
  86.   display.println("M3");
  87.   display.fillTriangle(81,4,85,0,85,8,0x6666);
  88.   display.fillTriangle(87,0,87,8,91,4,0x6666);
  89.   for(int r=0; r<32; r=r+7){
  90.   display.drawCircle(49,33, r, GREEN);
  91.   }
  92.   display.drawFastVLine(49,2,62,GREEN);
  93.   display.drawFastHLine(7,33,82,GREEN);
  94.   display.drawFastVLine(94,1,62,GREEN);
  95.   display.drawFastVLine(95,1,62,GREEN);
  96.   display.drawFastVLine(1,1,62,GREEN);
  97.   display.drawFastVLine(0,1,62,GREEN);
  98.   for(int y=1; y < 63; y+=5){
  99.   display.drawFastHLine(2,y,3, GREEN);
  100.   display.drawFastHLine(91,y,3, GREEN);
  101.   }
  102.   while(1){
  103.    //display.drawPixel(display.width()/2, display.height()/2, GREEN);   
  104.   for(int c=0;c<120;c++){
  105.    int scanx=27*sin((c*3.0)/180.0*pi);
  106.    int scany=27*cos((c*3.0)/180.0*pi);
  107.    display.drawLine(49,33,49+scanx,33-scany,0x6600);
  108.    display.drawFastVLine(49,2,62,GREEN);
  109.    display.drawFastHLine(7,33,82,GREEN);
  110.    //delay(1);
  111.    for(int r=0; r<32; r=r+7){
  112.    display.drawCircle(49,33, r, GREEN);
  113.    }
  114.   }
  115.    display.fillCircle(49,33,27,BLACK);
  116.     if(counter!=2) break;
  117.   }
  118. }
  119. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  120. void sensorCheck(){
  121.    int h = dht.readHumidity();
  122.    int t = dht.readTemperature();
  123.    int f = dht.readTemperature(true);
  124.    if (isnan(dht.readHumidity()) || isnan(dht.readTemperature())){
  125.    display.fillScreen(BLACK);
  126.    display.setCursor(5, 30);  
  127.    display.setTextColor(WHITE);
  128.    display.setTextSize(1);
  129.    display.println("Failed to read!");  
  130.    delay(500);
  131.    display.fillScreen(BLACK);
  132.    return;
  133.    }
  134. }
  135. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  136. void drawDataLine(){
  137.   /*int valLight=map(analogRead(A1),0,1023,45,15);
  138.   for(int x=36;x<90;x++){
  139.   display.drawPixel(x,valLight,YELLOW);
  140.   */
  141.   int valRot=map(analogRead(rotation),0,1023,0,5);
  142.   int light[100];
  143.   int temp[100];
  144.   int humi[100];
  145.   for(i=0;i<100;i++){
  146.   light[i]= map(analogRead(A1),0,1023,45,15);
  147.   humi[i] = map(dht.readHumidity(),0,100,45,15);
  148.   temp[i]= map(dht.readTemperature(),0,100,45,15);
  149.   delay(1);
  150. }
  151.   for(int x=36;x<88;x++) {
  152.     display.drawLine(x,light[x],x+1,light[x+1],YELLOW);
  153.     display.drawLine(x,temp[x]-valRot,x+1,temp[x+1]-valRot,RED);
  154.     display.drawLine(x,humi[x]-valRot,x+1,humi[x+1]-valRot,CYAN);
  155.     delay(10);
  156.   }
  157. }
  158. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  159. void drawTempData(){
  160.   int h = dht.readHumidity();
  161.   int t = dht.readTemperature();
  162.   int f = dht.readTemperature(true);
  163.   int valLight=map(analogRead(lightSnr),0,1023,0.02,1500);
  164.   display.setTextSize(1);
  165.   display.setCursor(9,13);
  166.   display.setTextColor(WHITE,BLACK);
  167.   display.print(t);
  168.   display.setCursor(9,26);
  169.   display.setTextColor(WHITE,BLACK);
  170.   display.print(h);
  171.   display.setCursor(9,39);
  172.   display.setTextColor(WHITE,BLACK);
  173.   display.print(f);
  174.   display.setCursor(45,52);
  175.   display.setTextSize(0);
  176.   display.setTextColor(WHITE,BLACK);
  177.   display.print("L=");
  178.   display.print(valLight);
  179.   delay(500);
  180.   display.fillRect(69,52,21,7,BLACK);
  181.   display.setCursor(57,52);
  182.   display.setTextSize(0);
  183.   display.setTextColor(WHITE,BLACK);
  184.   display.print(valLight);
  185.   delay(50);
  186. }
  187. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  188. void clearData(){
  189.   for(int y=13; y<40; y=y+13){
  190.   display.fillRect(9,y,15,7,BLACK);
  191. }
  192. }
  193. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  194. void clearDataLine(){
  195.   display.fillRect(36,15,54,31 ,BLACK);
  196. }
  197. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  198. void drawRuler(){
  199.     display.drawFastVLine(1,1,display.height()-2,GREEN);
  200.     display.drawFastVLine(0,1,display.height()-2,GREEN);
  201.     display.drawFastVLine(94,1,display.height()-2,GREEN);
  202.     display.drawFastVLine(95,1,display.height()-2,GREEN);
  203.     for(int y=1; y < 63; y+=5){
  204.     display.drawFastHLine(91,y,3, GREEN);
  205.     }
  206.     for(int y=1; y < 63; y+=5){
  207.     display.drawFastHLine(2,y,3, GREEN);
  208.     }
  209. }

  210. void drawTittle(){
  211.   display.setCursor(16,1);
  212.   display.setTextSize(1);
  213.   display.setTextColor(WHITE);
  214.   display.println("EDMS");
  215.   display.setCursor(65,1);
  216.   display.setTextSize(1);
  217.   display.setTextColor(PURPLE);
  218.   display.println("M1");
  219.   display.setTextSize(1);
  220.   display.setCursor(1,13);
  221.   display.setTextColor(WHITE,RED);
  222.   display.println("T");
  223.   display.setCursor(1,26);
  224.   display.setTextColor(WHITE,CYAN);
  225.   display.println("H");
  226.   display.setCursor(1,39);
  227.   display.setTextColor(WHITE,GREEN);
  228.   display.println("F");
  229.    
  230.   display.setCursor(25,13);
  231.   display.setTextColor(WHITE);
  232.   display.drawPixel(23,12,WHITE);
  233.   display.println("C");
  234.   display.setCursor(25,26);
  235.   display.setTextColor(WHITE);
  236.   display.println("%");
  237.   display.setCursor(25,39);
  238.   display.setTextColor(WHITE);
  239.   display.drawPixel(23,38,WHITE);
  240.   display.println("F");
  241. }

  242. void drawHead(){
  243.   display.drawLine(0,10,96,10,0x6666);
  244.   display.drawLine(11,0,11,10,0x6666);
  245.   display.drawLine(31,10,31,96,0x6666);
  246.   display.fillTriangle(81,4,85,0,85,8,0x2222);
  247.   display.fillTriangle(87,0,87,8,91,4,0x6666);
  248.   display.fillCircle(4,4,2,RED);
  249.   delay(500);
  250.   display.fillCircle(4,4,2,BLUE);
  251. }

  252. void drawTab(){
  253.   display.drawRect(32,12,62,38,GRAY);
  254.   for(int y=14; y<48; y=y+4){
  255.     display.drawFastHLine(32,y,3,GRAY);
  256.     display.drawFastHLine(90,y,3,GRAY);
  257.   }
  258.    for(int x=35; x<90; x=x+4){
  259.     display.drawFastVLine(x,12,3,GRAY);
  260.     display.drawFastVLine(x,46,3,GREEN);
  261.   }
  262.   display.drawFastHLine(32,48,62,GREEN);
  263.   display.drawLine(92,46,94,48,GREEN);
  264.   display.drawLine(92,50,94,48,GREEN);  
  265. }
  266. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  267. void tempAlarm(){
  268.   display.fillTriangle(23,52,18,62,29,62,YELLOW);
  269.   display.setCursor(21,56);
  270.   display.setTextColor(WHITE);
  271.   display.print("H");
  272.   delay(1000);
  273.   display.fillTriangle(23,52,18,62,29,62,BLACK);
  274. }

  275. void fireAlarm(){
  276.   display.fillTriangle(23,52,18,62,29,62,RED);
  277.   display.setCursor(21,56);
  278.   display.setTextColor(WHITE);
  279.   display.print("F");
  280.   delay(1000);
  281.   display.fillTriangle(23,52,18,62,29,62,BLACK);
  282. }

  283. void gasAlarm(){
  284.   display.fillTriangle(23,52,18,62,29,62,BLUE);
  285.   display.setCursor(21,56);
  286.   display.setTextColor(WHITE);
  287.   display.print("G");
  288.   delay(1000);
  289.   display.fillTriangle(23,52,18,62,29,62,BLACK);
  290. }

  291. void envStatus1(){
  292.    display.fillRoundRect(0,50,13,13,2,GREEN);
  293.    //display.fillRect(0,57,28,7,PURPLE);
  294.   display.fillRoundRect(15,50,13,13,2,0x6666);
  295.   display.setCursor(19,53);
  296.   display.setTextColor(0xFFFF);
  297.   //display.setTextSize(2);
  298.   display.print("G");
  299.   delay(500);   
  300.   display.fillRect(15,50,13,13,BLACK);
  301. }

  302. void envStatus2(){
  303.    display.fillRoundRect(0,50,13,13,2,RED);
  304.    delay(1000);
  305.    //display.fillRect(0,50,28,14,BLACK);
  306. }
  307. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  308. void envComfirm(){
  309.   int h = dht.readHumidity();
  310.   int t = dht.readTemperature();
  311.   int f = dht.readTemperature(true);
  312.   int fire=digitalRead(7);
  313.   delay(1);
  314.   if(fire==0){
  315.    envStatus2();
  316.    fireAlarm();
  317.    Alarm();
  318.   }
  319.   if(t>17&& t<33&& fire==1){
  320.   envStatus1();
  321.   }  
  322.   if(t>32){
  323.    envStatus2();
  324.    tempAlarm();
  325.   }
  326. }
  327. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  328. void envConsole(){
  329.   display.fillScreen(BLACK);
  330.   drawTittle();
  331.   drawHead();
  332.   drawTab();
  333.   while(1){
  334. //sensorCheck();
  335.   drawHead();
  336.   drawTempData();
  337.   drawDataLine();
  338.   envComfirm();
  339.   clearDataLine();
  340.   //drawDataLine();
  341.   //envComfirm();
  342.   //clearDataLine();
  343.   if(counter!=0) break;
  344.   }
  345. }
  346. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  347. void clearScreen(){
  348.   display.fillScreen(BLACK);
  349. }
  350. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  351. void showTemperature(){
  352.   int h = dht.readHumidity();
  353.   int t = dht.readTemperature();
  354.   display.fillScreen(BLACK);
  355.   drawThermo();
  356.   display.setCursor(16,1);
  357.   display.setTextSize(1);
  358.   display.setTextColor(WHITE);
  359.   display.println("TEMP");
  360.   display.setCursor(65,1);
  361.   display.setTextSize(1);
  362.   display.setTextColor(PURPLE);
  363.   display.println("M2");
  364.   display.fillTriangle(81,4,85,0,85,8,0x6666);
  365.   display.fillTriangle(87,0,87,8,91,4,0x6666);
  366.   display.drawLine(0,9,96,9,0xFFFF);
  367.   display.drawLine(0,37,68,37,0xFFFF);
  368.   while(1){
  369.    //sensorCheck();
  370.    statusLt();
  371.    int h = dht.readHumidity();
  372.    int t = dht.readTemperature();
  373.    display.fillRect(81,24,3,50-t,BLACK);
  374.    display.fillRect(81,74-t,3,t-24,YELLOW);
  375.    delay(5);
  376.    display.setCursor(0,11);
  377.    display.setTextColor(BLUE);
  378.    display.setTextSize(1);
  379.    display.println("Humidity");
  380.    display.setCursor(0,21);
  381.    display.setTextColor(GREEN,BLACK);
  382.    display.setTextSize(2);
  383.    display.print(h);
  384.    display.println(" %");
  385.    display.setCursor(0,39);
  386.    display.setTextColor(RED);
  387.    display.setTextSize(1);
  388.    display.println("Temperature");
  389.    display.setCursor(0,49);
  390.    display.setTextColor(YELLOW,BLACK);
  391.    display.setTextSize(2);
  392.    display.print(t);
  393.    display.println(" C");
  394.    if(counter!=1) break;
  395.   }
  396. }
  397. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  398. void blink(){
  399.   while(1){
  400.   digitalWrite(blueLed,HIGH);
  401.   delay(200);
  402.   digitalWrite(blueLed,LOW);
  403.   delay(200);
  404.   if(counter!=4) break;
  405. }
  406. }

  407. void Alarm(){
  408.   for(int i=0; i<100; i++){
  409.    digitalWrite(speaker,HIGH);
  410.    delay(3);
  411.    digitalWrite(speaker,LOW);
  412.    delay(3);   
  413.    }
  414.    delay(200);
  415.   for(int i=0; i<100; i++){
  416.    digitalWrite(speaker,HIGH);
  417.    delay(3);
  418.    digitalWrite(speaker,LOW);
  419.    delay(3);
  420.    }
  421.    delay(200);
  422.   for(int i=0; i<100; i++){
  423.    digitalWrite(speaker,HIGH);
  424.    delay(3);
  425.    digitalWrite(speaker,LOW);
  426.    delay(3);  
  427.   }
  428. }

  429. void statusLt(){
  430.   display.fillCircle(4,4,2,RED);
  431.   delay(500);
  432.   display.fillCircle(4,4,2,GREEN);
  433. }  
  434. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  435. void counterChange(){
  436.   counter++;
  437.   if(counter>3) counter=0;
  438. }
  439. void counterDown(){
  440.   counter--;
  441.   if(counter<0) counter=0;
  442. }

  443. void drawThermo(){
  444. display.drawCircle(82,56,5,0x2222);
  445. display.drawRoundRect(80,19,5,35,2,0x2222);
  446. display.fillCircle(82,56,3,YELLOW);
  447. display.fillRect(81,24,3,30,YELLOW);
  448. for(int y=51;y>21;y=y-3){
  449.   display.drawFastHLine(78,y,2,0x2222);
  450.   display.drawFastHLine(85,y,2,0x2222);
  451. }
  452. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-4-25 11:28:21 | 显示全部楼层
个人观点,仅供参考:
1、DHT11精度确实不高,如要高精度的,可能就得换。
2、屏幕刷新的问题,我觉得是否可以试试用背景色画原来的图形,然后画新图形,不用整屏清屏。
3、按键要加防抖,硬软都行。最简单的,在按键上并一个104电容,也可以用软件去抖。即便你买很高级的按键,用久了可能也会抖。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 11:45:13 | 显示全部楼层
老胖熊 发表于 2016-4-25 11:28
个人观点,仅供参考:
1、DHT11精度确实不高,如要高精度的,可能就得换。
2、屏幕刷新的问题,我觉得是否 ...

谢谢朋友!
1.考虑换DHT22试下。
2.此前已用朋友说的办法改成了现在的代码,数字刷新的问题基本能解决,但现仍有新问题出现,如果前一个数据位数后者,那么在更新数据时会出现托尾现象,比如前数据显示为  26 C,如温度是两位数没有问题,若是突然温度降到一位数就会显示为  6 CC。这个问题有点烦人,当然中断重启后可刷屏。实心图形的重新显示也就没办法整了。
3.应该是已经加 了104电阻的,但可能是在板上的传感器和其他元件太多的原因造成的吧。最大原因还是程序不够稳定,继续研究。
谢谢支持!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 12:05:51 | 显示全部楼层
老胖熊 发表于 2016-4-25 11:28
个人观点,仅供参考:
1、DHT11精度确实不高,如要高精度的,可能就得换。
2、屏幕刷新的问题,我觉得是否 ...

不好意思,朋友,我搞错了,还没有加104电容,过些日子再试试看。
回复 支持 反对

使用道具 举报

发表于 2016-4-25 12:16:55 | 显示全部楼层
mingzhi080218 发表于 2016-4-24 23:49
之前试过u8glib,里面有1351的彩色OLED,但好像不太支持SSD1331的屏,尝试改库文件但失败了。Adafruit_SS ...

http://www.geek-workshop.com/thread-4998-1-1.html  这个的屏幕也是ssd1331的芯片
回复 支持 反对

使用道具 举报

发表于 2016-4-25 14:38:09 | 显示全部楼层
mingzhi080218 发表于 2016-4-25 12:05
不好意思,朋友,我搞错了,还没有加104电容,过些日子再试试看。

26C变成6C会显示成6CC是有可能的,我觉得是因为刷新的时候没有覆盖掉原来的显示信息造成的。

我的意思是,比如,黑底白字,那么在显示6C之前,先用黑底黑字显示一下26C,然后再用黑底白字显示6C。这样,刷新的只是局部,不是全屏,可以一定程度避免闪屏。实心图形比如实心圆,也许可以考虑用方形区域覆盖实心圆,然后再画新图形,我觉得画方应该比画圆快。

加104电容应该挺管用的,我之前做过个类似的东西,开始测试的时候没加,有时候有抖动,按一次键会翻2次屏或者更多,加了104没出现过。软件去抖也可以,但是我觉得这种小mcu,能在代码上省点是点吧,毕竟处理能力有限。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 15:10:53 | 显示全部楼层
老胖熊 发表于 2016-4-25 14:38
26C变成6C会显示成6CC是有可能的,我觉得是因为刷新的时候没有覆盖掉原来的显示信息造成的。

我的意思 ...

用黑底黑字应该是个不错的方法。我回去再试试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 15:14:25 | 显示全部楼层
老胖熊 发表于 2016-4-25 14:38
26C变成6C会显示成6CC是有可能的,我觉得是因为刷新的时候没有覆盖掉原来的显示信息造成的。

我的意思 ...

实心图形我已经在用朋友说的方法做了,比如第一屏的曲线图我就是用局部刷新的,虽然效果不是太好,但总是一个进步。雷达图我也是用一个实心圆来局部刷的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 15:48:09 | 显示全部楼层
davidce 发表于 2016-4-25 12:16
http://www.geek-workshop.com/thread-4998-1-1.html  这个的屏幕也是ssd1331的芯片

谢谢指导!我先学习一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 14:11 , Processed in 0.040639 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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