#include <LedControl.h>
#include <DHT.h>
#define DHTPIN 2 // DATA引脚
#define DHTTYPE DHT11 // 型号选择
int DIN = 11; //数据引脚
int CS = 10; //片选脚
int CLK = 13; //时钟引脚
int numDevices = 4; //点阵数量,最多8个
unsigned char GOOD[32]={
0x71,0x8a,0x8a,0x8a,0xb2,0x82,0x82,0x71,
0xc7,0x28,0x28,0x28,0x28,0x28,0x28,0xc7,
0x38,0xa4,0xa2,0xa2,0xa2,0xa2,0xa4,0x38,
0x3c,0x42,0x99,0xa5,0x81,0xa5,0x42,0x3c
};
unsigned char BAD[32]={
0xf2,0x8a,0x8a,0xf1,0x89,0x89,0x88,0xf0,
0x17,0x14,0x14,0xe4,0x24,0x24,0xc4,0xc7,
0x07,0x88,0x54,0x53,0x50,0x54,0x88,0x07,
0x80,0x40,0xa0,0x20,0x20,0xa0,0x40,0x80
};
LedControl lc = LedControl(DIN,CLK,CS,numDevices); //lc是建立的对象
DHT dht(DHTPIN, DHTTYPE); //建立DHT对象
void setup(){
lc.shutdown(0,false); //启动时,MAX72XX处于省电模式
lc.setIntensity(0,8); //将亮度设置为最大值
lc.clearDisplay(0); //清除显示
Serial.begin(9600);
dht.begin(); //初始化dht
}
void loop(){
float h = dht.readHumidity(); //读取湿度
float t = dht.readTemperature(); //读取温度(摄氏度)
if(t >= 30 || h >= 65){
printByte(GOOD);
}else{
printByte(BAD);
}
}
void printByte(byte character []) //点阵显示函数
{
for(int i=0;i<8;i++)
lc.setRow(0,i,character[i]);
for(int i=8;i<16;i++)
lc.setRow(1,i-8,character[i]);
for(int i=16;i<24;i++)
lc.setRow(2,i-16,character[i]);
for(int i=24;i<32;i++)
lc.setRow(3,i-24,character[i]);
}