|

楼主 |
发表于 2019-8-29 16:04:15
|
显示全部楼层
- #include <dht11.h>
- #define DHT11PIN 13 //DHT11 data接13引脚
- dht11 DHT11;
- #include "Adafruit_GFX.h"// Hardware-specific library
- #include <MCUFRIEND_kbv.h>
- #define LCD_CS A3 // Chip Select goes to Analog 3
- #define LCD_CD A2 // Command/Data goes to Analog 2
- #define LCD_WR A1 // LCD Write goes to Analog 1
- #define LCD_RD A0 // LCD Read goes to Analog 0
- #define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
- MCUFRIEND_kbv ucg;
- #define BLACK 0x0000
- #define BLUE 0x001F
- #define RED 0xF800
- #define GREEN 0x07E0
- #define CYAN 0x07FF
- #define MAGENTA 0xF81F
- #define YELLOW 0xFFE0
- #define WHITE 0xFFFF
- //左边仪表
- void draw(int value) {
- int cx = 77; //圆心x
- int cy = 120; //圆心y
- int cr = 75; //圆半径r
- float angle; //数值转换指针偏转角度
- float rad; //指针偏转角度转换弧度
-
- //仪表刻度
- for(int i=0;i<=100;i+=2){
- angle = 150+i*2.4;
- rad = angle/180*PI;
- if(i==0 ||i==20 ||i==40 ||i==60 ||i==80 ||i==100)
- {
- //刻度线
- ucg.drawLine(cx+(cr-13)*cos(rad),cy+(cr-13)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),WHITE);
- //刻度数值
- ucg.setTextSize(2);
- ucg.setTextColor(WHITE);
- ucg.setCursor((cx-10)+(cr-33)*cos(rad),(cy-8)+(cr-33)*sin(rad));
- ucg.print(int(i));
- }
- else if(i==10 ||i==30 ||i==50 ||i==70 ||i==90)
- {
- //刻度线
- ucg.drawLine(cx+(cr-13)*cos(rad),cy+(cr-13)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),WHITE);
- }
- else
- {
- //刻度线
- ucg.drawLine(cx+(cr-8)*cos(rad),cy+(cr-8)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),WHITE);
- }
- }
-
- //仪表外圆
- ucg.drawCircle(cx,cy,cr,BLUE);
- ucg.drawCircle(cx,cy,(cr-1),BLUE);
- ucg.drawCircle(cx,cy,(cr-2),BLUE);
- //仪表指针及轨迹
- for(float i=0;i<=value;i+=0.25)
- {
- angle = 150+i*2.4;
- rad = angle/180*PI;
- if(i<value)
- {
- ucg.drawLine(cx+(cr-8)*cos(rad),cy+(cr-8)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),WHITE);
- }
- else
- {
- ucg.drawLine(cx+(cr-60)*cos(rad),cy+(cr-60)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),BLUE);
- }
- }
- //仪表中心小圆
- ucg.fillCircle(cx,cy,(cr-60),BLUE);
- //中心小圆符号
- ucg.setTextSize(2);
- ucg.setTextColor(WHITE);
- ucg.setCursor((cx-5),(cy-7));
- ucg.print("H");
- }
- //右边仪表
- void draw2(int value) {
- int cx = 243; //圆心x
- int cy = 120; //圆心y
- int cr = 75; //圆半径r
- float angle; //数值转换指针偏转角度
- float rad; //指针偏转角度转换弧度
-
- //仪表刻度
- for(int i=0;i<=50;i+=1){
- angle = i*4.8+150;
- rad = angle/180*PI;
- if(i==0 ||i==10 ||i==20 ||i==30 ||i==40 ||i==50)
- {
- //刻度线
- ucg.drawLine(cx+(cr-18)*cos(rad),cy+(cr-18)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),WHITE);
- //刻度数值
- ucg.setTextSize(2);
- ucg.setTextColor(WHITE);
- ucg.setCursor((cx-10)+(cr-33)*cos(rad),(cy-8)+(cr-33)*sin(rad));
- ucg.print(i);
- }
- else if(i==5 ||i==15 ||i==25 ||i==35 ||i==45)
- {
- //刻度线
- ucg.drawLine(cx+(cr-13)*cos(rad),cy+(cr-13)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),WHITE);
- }
- else
- {
- //刻度线
- ucg.drawLine(cx+(cr-8)*cos(rad),cy+(cr-8)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),WHITE);
- }
- }
-
- //仪表外圆
- ucg.drawCircle(cx,cy,cr,RED);
- ucg.drawCircle(cx,cy,(cr-1),RED);
- ucg.drawCircle(cx,cy,(cr-2),RED);
-
- //仪表指针及轨迹
- for(float i=0;i<=value;i+=0.25)
- {
- angle = 150+i*4.8;
- rad = angle/180*PI;
- if(i<value)
- {
- ucg.drawLine(cx+(cr-8)*cos(rad),cy+(cr-8)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),WHITE);
- }
- else
- {
- ucg.drawLine(cx+(cr-60)*cos(rad),cy+(cr-60)*sin(rad),cx+(cr-3)*cos(rad),cy+(cr-3)*sin(rad),RED);
- }
- }
- //仪表中心小圆
- ucg.fillCircle(cx,cy,(cr-60),RED);
- //中心小圆符号
- ucg.setTextSize(2);
- ucg.setTextColor(WHITE);
- ucg.setCursor((cx-5),(cy-7));
- ucg.print("T");
- }
- void setup()
- {
- pinMode(DHT11PIN,OUTPUT);
- ucg.begin(0x9341); //ILI9341
- ucg.setRotation(3); //屏幕旋转270度
- }
- void loop()
- {
- int chk = DHT11.read(DHT11PIN); //将读取到的值赋给chk
- int tem=(float)DHT11.temperature; //将温度值赋值给tem
- int hum=(float)DHT11.humidity; //将湿度值赋值给tem
- ucg.fillScreen(BLACK); //清屏
- draw(hum);
- draw2(tem);
- delay(5000); //5秒刷新一次
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|