在不触摸任何按钮的情况下增加号码
going up the number without touching any button
我正在研究一个计算器,就像在计算器中按多少次按钮作为计算器中的第一个一样。例如,我按了四次按钮,现在计算器中的数字是四。但问题是,当 Arduino 打开时,数字会在不触摸按钮的情况下上升。我能做什么?我正在使用数字显示器、Arduino UNO 板和四个按钮,这是我的代码:
#include <TM1637.h>
// this is a calculater with four buttons on pins 2 3 4 5 and a number display and the driver is TM1637 CLK on pin 13 and DIO on pin 12. after making sure you connected
// all the modules you can program these codes on your Arduino UNO. LET'S JUTS MAKE IT!
const int btn_one = 2;
const int btn_two = 3;
const int btn_three = 4;
const int btn_four = 5;
/*
int b1s = LOW;
int b2s = LOW;
int b3s = LOW;
int b4s = LOW;
*/
int num1 = 0;
int num2 = 0;
int mathop = 1;
int CLK = 13;
int DIO = 12;
TM1637 tm(CLK,DIO);
void setup(){
tm.init();
tm.set(7);
pinMode(btn_one, INPUT);
pinMode(btn_two, INPUT);
pinMode(btn_three, INPUT);
pinMode(btn_four, INPUT);
}
void loop(){
int b1s = digitalRead(btn_one);
int b2s = digitalRead(btn_two);
int b3s = digitalRead(btn_three);
int b4s = digitalRead(btn_four);
if(b1s == true){
num1 = num1 + 1;
displayNumber(num1);
//digitalWrite(btn_one, LOW);
delay(1000);
}
}
void displayNumber(int num){
tm.display(3, num % 10);
tm.display(2, num / 10 % 10);
tm.display(1, num / 100 % 10);
tm.display(0, num / 1000 % 10);
}
这些是我的联系人:
Connections 1
Connections 2
如果你能帮到我,请把对我很有帮助的答案发给我,非常感谢。
我看到了你的按钮连接电路。主要问题出在电路本身。您没有在按钮和数字输入引脚上添加电阻器,因此,digitalRead 读取的按钮状态是一个介于 0 和 1 之间的浮动值(假值)。按照这里给出的电路:
https://www.arduino.cc/en/Tutorial/BuiltInExamples/Button
每个按键最好用10k欧姆的电阻。
其次,你为什么使用延迟 1秒?
我正在研究一个计算器,就像在计算器中按多少次按钮作为计算器中的第一个一样。例如,我按了四次按钮,现在计算器中的数字是四。但问题是,当 Arduino 打开时,数字会在不触摸按钮的情况下上升。我能做什么?我正在使用数字显示器、Arduino UNO 板和四个按钮,这是我的代码:
#include <TM1637.h>
// this is a calculater with four buttons on pins 2 3 4 5 and a number display and the driver is TM1637 CLK on pin 13 and DIO on pin 12. after making sure you connected
// all the modules you can program these codes on your Arduino UNO. LET'S JUTS MAKE IT!
const int btn_one = 2;
const int btn_two = 3;
const int btn_three = 4;
const int btn_four = 5;
/*
int b1s = LOW;
int b2s = LOW;
int b3s = LOW;
int b4s = LOW;
*/
int num1 = 0;
int num2 = 0;
int mathop = 1;
int CLK = 13;
int DIO = 12;
TM1637 tm(CLK,DIO);
void setup(){
tm.init();
tm.set(7);
pinMode(btn_one, INPUT);
pinMode(btn_two, INPUT);
pinMode(btn_three, INPUT);
pinMode(btn_four, INPUT);
}
void loop(){
int b1s = digitalRead(btn_one);
int b2s = digitalRead(btn_two);
int b3s = digitalRead(btn_three);
int b4s = digitalRead(btn_four);
if(b1s == true){
num1 = num1 + 1;
displayNumber(num1);
//digitalWrite(btn_one, LOW);
delay(1000);
}
}
void displayNumber(int num){
tm.display(3, num % 10);
tm.display(2, num / 10 % 10);
tm.display(1, num / 100 % 10);
tm.display(0, num / 1000 % 10);
}
这些是我的联系人: Connections 1 Connections 2
如果你能帮到我,请把对我很有帮助的答案发给我,非常感谢。
我看到了你的按钮连接电路。主要问题出在电路本身。您没有在按钮和数字输入引脚上添加电阻器,因此,digitalRead 读取的按钮状态是一个介于 0 和 1 之间的浮动值(假值)。按照这里给出的电路: https://www.arduino.cc/en/Tutorial/BuiltInExamples/Button 每个按键最好用10k欧姆的电阻。
其次,你为什么使用延迟 1秒?