gpt4 book ai didi

c - Arduino Uno - 使用按钮控制和 7 段显示从 1-9 计数并返回的 C 代码

转载 作者:行者123 更新时间:2023-11-30 19:12:16 25 4
gpt4 key购买 nike

我想要一个代码,可以让我在按下一个按钮时使数字从 1 变为 9,然后在按下另一个按钮时使数字从 9 变为 1。

这是我到目前为止的代码:

    // set pin numbers:

int pinButton = 2;
int pinButton2 = 3;

struct number {
int pinA = 4;
int pinB = 5;
int pinC = 6;
int pinD = 7;
int pinE = 8;
int pinF = 9;
int pinG = 10;
};

int LED = 13;
int stateLED = LOW;
int stateButton = 0;
int stateButton2 = 0;

number n;

void setup() {
pinMode(pinButton, INPUT);
pinMode(pinButton2, INPUT);
pinMode(LED, OUTPUT);

pinMode(n.pinA, OUTPUT);
pinMode(n.pinB, OUTPUT);
pinMode(n.pinC, OUTPUT);
pinMode(n.pinD, OUTPUT);
pinMode(n.pinE, OUTPUT);
pinMode(n.pinF, OUTPUT);
pinMode(n.pinG, OUTPUT);
}


void loop() {
stateButton = digitalRead(pinButton);
stateButton2 = digitalRead(pinButton2);

if(stateButton == 0 && stateButton2 == 1)
{
stateLED = HIGH;
digitalWrite(LED, HIGH);
//1
digitalWrite(n.pinA, LOW);
digitalWrite(n.pinB, HIGH);
digitalWrite(n.pinC, HIGH);
digitalWrite(n.pinD, LOW);
digitalWrite(n.pinE, LOW);
digitalWrite(n.pinF, LOW);
digitalWrite(n.pinG, LOW);

}

if(stateButton == 1 && stateButton2 == 0) {
stateLED = LOW;
digitalWrite(LED, LOW);
//2
digitalWrite(n.pinA, HIGH);
digitalWrite(n.pinB, HIGH);
digitalWrite(n.pinC, LOW);
digitalWrite(n.pinD, HIGH);
digitalWrite(n.pinE, HIGH);
digitalWrite(n.pinF, LOW);
digitalWrite(n.pinG, HIGH);

}
}

它从 1 到 2 工作,我这里有从 3 到 9 的其余代码:

{
//3
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);


//4
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);


//5
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);

//6
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);

//7
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);

//8
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);


//9
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}

...但是当我将其组合到上面的第一个代码块并将其上传到显示器上时,数字似乎重叠(即,我执行以下操作...)。

    void loop() {
stateButton = digitalRead(pinButton);
stateButton2 = digitalRead(pinButton2);

if(stateButton == 0 && stateButton2 == 1)
{
stateLED = HIGH;
digitalWrite(LED, HIGH);
//1
digitalWrite(n.pinA, LOW);
digitalWrite(n.pinB, HIGH);
digitalWrite(n.pinC, HIGH);
digitalWrite(n.pinD, LOW);
digitalWrite(n.pinE, LOW);
digitalWrite(n.pinF, LOW);
digitalWrite(n.pinG, LOW);
//2
digitalWrite(n.pinA, HIGH);
digitalWrite(n.pinB, HIGH);
digitalWrite(n.pinC, LOW);
digitalWrite(n.pinD, HIGH);
digitalWrite(n.pinE, HIGH);
digitalWrite(n.pinF, LOW);
digitalWrite(n.pinG, HIGH);
}

if(stateButton == 1 && stateButton2 == 0) {
stateLED = LOW;
digitalWrite(LED, LOW);
//2
digitalWrite(n.pinA, HIGH);
digitalWrite(n.pinB, HIGH);
digitalWrite(n.pinC, LOW);
digitalWrite(n.pinD, HIGH);
digitalWrite(n.pinE, HIGH);
digitalWrite(n.pinF, LOW);
digitalWrite(n.pinG, HIGH);
//1
digitalWrite(n.pinA, LOW);
digitalWrite(n.pinB, HIGH);
digitalWrite(n.pinC, HIGH);
digitalWrite(n.pinD, LOW);
digitalWrite(n.pinE, LOW);
digitalWrite(n.pinF, LOW);
digitalWrite(n.pinG, LOW);
}
}

有人有更好的方法吗?

最佳答案

您需要在两个数字之间引入延迟。这可以通过以下方式完成两个数字之间的简单软件延迟。

     if(stateButton == 0 && stateButton2 == 1) 
{
stateLED = HIGH;
digitalWrite(LED, HIGH);

// Write digit 1
delay(50);
// Write digit 2
delay(50);
}

上述方法的特点是,一旦按下按钮,就会从1-9或9-1循环,不停顿。

关于c - Arduino Uno - 使用按钮控制和 7 段显示从 1-9 计数并返回的 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com