arduino并口屏_Adafruit_GFX驱动ILI9341 2.4寸并口屏

#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秒刷新一次

}


版权声明:本文为weixin_39948439原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。