#include
#define DHT11PIN 13 //DHT11 data接13引脚
dht11 DHT11;
#include "Adafruit_GFX.h"// Hardware-specific library
#include
#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
{
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
{
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秒刷新一次
}