基于arduino 2560 编写一个程序,通过三个按键来设置正转时间,反转时间,暂停时间,还有保护电流,并通过控制TM1640芯片再控制16位数码管显示出来,每个数据各占4位数码管。其中一个按键控制位选择,另两个按键控制加和减
时间: 2023-11-12 07:06:04 浏览: 40
以下是一个基于 Arduino 2560 的程序,可以通过三个按键来设置正转时间、反转时间、暂停时间和保护电流,并且可以在16位数码管上显示出来。请注意,由于我没有实体的TM1640芯片,所以我无法测试这个程序。但是这个程序应该可以帮助你开始编写你自己的程序。
```C++
#include <TM1640.h>
#define CLK_PIN 2
#define DIO_PIN 3
TM1640 display(CLK_PIN, DIO_PIN);
#define BUTTON1_PIN 4
#define BUTTON2_PIN 5
#define BUTTON3_PIN 6
#define FORWARD_TIME_MAX 9999
#define REVERSE_TIME_MAX 9999
#define PAUSE_TIME_MAX 9999
#define CURRENT_MAX 9999
int forwardTime = 0;
int reverseTime = 0;
int pauseTime = 0;
int current = 0;
int selectedSetting = 0;
void setup() {
pinMode(BUTTON1_PIN, INPUT_PULLUP);
pinMode(BUTTON2_PIN, INPUT_PULLUP);
pinMode(BUTTON3_PIN, INPUT_PULLUP);
display.setupDisplay();
display.setBrightness(1);
}
void loop() {
if (digitalRead(BUTTON1_PIN) == LOW) {
selectedSetting = (selectedSetting + 1) % 4;
delay(200);
}
if (digitalRead(BUTTON2_PIN) == LOW) {
switch (selectedSetting) {
case 0:
forwardTime = (forwardTime + 1) % (FORWARD_TIME_MAX + 1);
break;
case 1:
reverseTime = (reverseTime + 1) % (REVERSE_TIME_MAX + 1);
break;
case 2:
pauseTime = (pauseTime + 1) % (PAUSE_TIME_MAX + 1);
break;
case 3:
current = (current + 1) % (CURRENT_MAX + 1);
break;
}
delay(200);
}
if (digitalRead(BUTTON3_PIN) == LOW) {
switch (selectedSetting) {
case 0:
forwardTime = (forwardTime - 1 + FORWARD_TIME_MAX + 1) % (FORWARD_TIME_MAX + 1);
break;
case 1:
reverseTime = (reverseTime - 1 + REVERSE_TIME_MAX + 1) % (REVERSE_TIME_MAX + 1);
break;
case 2:
pauseTime = (pauseTime - 1 + PAUSE_TIME_MAX + 1) % (PAUSE_TIME_MAX + 1);
break;
case 3:
current = (current - 1 + CURRENT_MAX + 1) % (CURRENT_MAX + 1);
break;
}
delay(200);
}
display.clearDisplay();
switch (selectedSetting) {
case 0:
display.displayInt(forwardTime, 4);
break;
case 1:
display.displayInt(reverseTime, 4);
break;
case 2:
display.displayInt(pauseTime, 4);
break;
case 3:
display.displayInt(current, 4);
break;
}
}
```
此程序中使用了一个名为TM1640的库,该库可以让我们轻松地控制TM1640芯片。在程序中,我们使用了三个按键,分别连接到Arduino的4、5和6引脚。我们还定义了一些常量,以确保输入的值不会超出最大值。在setup函数中,我们初始化了按钮和TM1640芯片。在loop函数中,我们首先检查按键是否被按下。如果BUTTON1_PIN被按下,我们将selectedSetting递增到0、1、2、3中的下一个数字。如果BUTTON2_PIN被按下,则根据所选的设置增加对应的值。如果BUTTON3_PIN被按下,则根据所选的设置减少相应的值。最后,我们清除显示并显示所选的值。