新手奶爸 发表于 2020-5-28 16:50:34

如何使数字各别显示,麻烦路过的大佬帮忙

下面代码是想用温湿度感测器侦测湿度,并用两颗七段显示器显示出来,不知道为什么十位数与个位数不能分开显示,请求大佬们帮忙下啦。
#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 = {
{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);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 1:
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 2:
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 3:
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 4:
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 5:
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 6:
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 7:
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 8:   
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
    case 9:   
    digitalWrite(7, bcd_code);
    digitalWrite(5, bcd_code);
    digitalWrite(4, bcd_code);
    digitalWrite(3, bcd_code);
    break;
   
}
}

页: [1]
查看完整版本: 如何使数字各别显示,麻烦路过的大佬帮忙