这是我的主要代码,我想在void循环中创建它,以便激活按钮的rand函数,然后进入sevseg.setNumber部分进行显示。我正在尝试制作20面的模具,因此rand功能应为1-20。我不太确定该怎么办,我可以帮忙吗?
#include "SevSeg.h"
SevSeg sevseg;
const int BUTTON = 1;
int buttonState = 0;
int lastButtonState = LOW;
void setup(){
byte numDigits = 4;
byte digitPins[] = {10, 11, 12, 13};
byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};
bool resistorsOnSegments = true;
bool updateWithDelaysIn = true;
byte hardwareConfig = COMMON_ANODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins,
resistorsOnSegments);
sevseg.setBrightness(150);
pinMode(BUTTON, OUTPUT);
Serial.begin(9600);
lastButtonState = LOW;
}
void loop(){
sevseg.setNumber();
sevseg.refreshDisplay();
if (digitalRead (BUTTON) == HIGH)
{
rand() % 20 + 1;
}
}
我将buttonPin更改为BUTTON,现在我需要弄清楚如何将rand值放入sevseg.setNumber的括号内。
像这样更改您的主循环:
void loop(){
if (digitalRead (BUTTON) == HIGH)
{
if (!high) {//<-- make sure it only changes the value the first time
sevseg.setNumber(rand() % 20 + 1);
sevseg.refreshDisplay();
high = true
}
}
else {
high = false;//<-- reset high to false when the button isn't pressed anymore
}
}
不要忘记在定义部分中声明bool high = false;
。>>