下面代码是想用温湿度感测器侦测湿度,并用两颗七段显示器显示出来,不知道为什么十位数与个位数不能分开显示,请求大佬们帮忙下啦。
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int a = 9;
int b = 3;
int c = 4;
int d = 5;
int e = 12;
int f = 7;
int g = 8;
int GND1 = 10;
int GND2 = 13;
int dig1 = 0;
int dig2 = 0;
void setup()
{
Serial.begin(9600);
dht.begin();
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(7, OUTPUT);
pinMode(GND1, OUTPUT);
pinMode(GND2, OUTPUT);
}
void loop()
{
int h = dht.readHumidity();
int t = dht.readTemperature();
//Serial.println(t);
Serial.println(h);
dig1 = h / 10;//十位數
dig2 = h - (dig1 * 10);//個位數
Serial.println(dig1);
Serial.println(dig2);
digitalWrite( GND2, HIGH);
digitalWrite( GND1,LOW);
DisplayNumber(dig2);//個位數
delay(1000);
digitalWrite( GND2,LOW);
digitalWrite( GND1,HIGH);
DisplayNumber(dig1);//十位數
delay(1000);
}
byte bcd_code[10][4] = {
{0,0,0,0},
{0,0,0,1},
{0,0,1,0},
{0,0,1,1},
{0,1,0,0},
{0,1,0,1},
{0,1,1,0},
{0,1,1,1},
{1,0,0,0},
{1,0,0,1}
};
void DisplayNumber(int x) {
switch (x) {
case 0:
digitalWrite(7, bcd_code[0][0]);
digitalWrite(5, bcd_code[0][1]);
digitalWrite(4, bcd_code[0][2]);
digitalWrite(3, bcd_code[0][3]);
break;
case 1:
digitalWrite(7, bcd_code[1][0]);
digitalWrite(5, bcd_code[1][1]);
digitalWrite(4, bcd_code[1][2]);
digitalWrite(3, bcd_code[1][3]);
break;
case 2:
digitalWrite(7, bcd_code[2][0]);
digitalWrite(5, bcd_code[2][1]);
digitalWrite(4, bcd_code[2][2]);
digitalWrite(3, bcd_code[2][3]);
break;
case 3:
digitalWrite(7, bcd_code[3][0]);
digitalWrite(5, bcd_code[3][1]);
digitalWrite(4, bcd_code[3][2]);
digitalWrite(3, bcd_code[3][3]);
break;
case 4:
digitalWrite(7, bcd_code[4][0]);
digitalWrite(5, bcd_code[4][1]);
digitalWrite(4, bcd_code[4][2]);
digitalWrite(3, bcd_code[4][3]);
break;
case 5:
digitalWrite(7, bcd_code[5][0]);
digitalWrite(5, bcd_code[5][1]);
digitalWrite(4, bcd_code[5][2]);
digitalWrite(3, bcd_code[5][3]);
break;
case 6:
digitalWrite(7, bcd_code[6][0]);
digitalWrite(5, bcd_code[6][1]);
digitalWrite(4, bcd_code[6][2]);
digitalWrite(3, bcd_code[6][3]);
break;
case 7:
digitalWrite(7, bcd_code[7][0]);
digitalWrite(5, bcd_code[7][1]);
digitalWrite(4, bcd_code[7][2]);
digitalWrite(3, bcd_code[7][3]);
break;
case 8:
digitalWrite(7, bcd_code[8][0]);
digitalWrite(5, bcd_code[8][1]);
digitalWrite(4, bcd_code[8][2]);
digitalWrite(3, bcd_code[8][3]);
break;
case 9:
digitalWrite(7, bcd_code[9][0]);
digitalWrite(5, bcd_code[9][1]);
digitalWrite(4, bcd_code[9][2]);
digitalWrite(3, bcd_code[9][3]);
break;
}
}
|