Arduino Uno-C代码,可从1-9开始计数,带按钮控制和7段显示
我想要一个代码,当我按下一个按钮时,让我的数字从1变为9,然后当我按下另一个按钮时,让数字从9变为1 这是我目前掌握的代码:Arduino Uno-C代码,可从1-9开始计数,带按钮控制和7段显示,c,arduino,C,Arduino,我想要一个代码,当我按下一个按钮时,让我的数字从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;
// 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);
}
…但是当我将其与上面的第一个代码块合并并将其上传到显示器上时,数字似乎重叠(即,我执行以下操作…)
有谁有更好的方法吗?您需要在两个数字之间引入延迟。这可以通过 两位数之间的简单软件延迟
if(stateButton == 0 && stateButton2 == 1)
{
stateLED = HIGH;
digitalWrite(LED, HIGH);
// Write digit 1
delay(50);
// Write digit 2
delay(50);
}
上述方法的特点是,一旦按下按钮,它将从1-9或9-1循环,而不会停止。“我知道Arduino不是C”-那么你错了,Arduino代码是C(有时是C++)代码。@ParamagneticCroissant如果我错了,那么Olaf也是,他在我引用的评论中粗鲁地说“Arduino不是C”“谢谢。很好的知道它也使用C++。你应该了解一些。看一看。顺便说一句,@rishikshraje回答您的是强制性的:您必须在数字之间设置延迟或更好的延迟,使用计时器增加变量和显示传递数字的函数。使用常量数组存储不同的7段显示序列。您确实需要实现去抖动。@Olaf“这很好,因为它添加了所需的功能。”–嗯……什么?它增加了什么样的核心语言功能?它只是增加了库…这绝对不是一种不同的语言。只需看看ArduinoIDE的编译器调用。它使用通用的C++编译器,G+,从AVR GCC工具链中,没有任何额外的杂波。已经尝试过这种方法。我更喜欢只按按钮而不是自动进行循环。在这种方法中,循环将按按钮进行。你必须像其他人提到的那样注意去抖动,这样它才能在物理环境中工作。
if(stateButton == 0 && stateButton2 == 1)
{
stateLED = HIGH;
digitalWrite(LED, HIGH);
// Write digit 1
delay(50);
// Write digit 2
delay(50);
}