我需要使按钮随机化,然后显示在4段上

问题描述 投票:0回答:1

这是我的主要代码,我想在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的括号内。

c++ arduino-uno arduino-c++
1个回答
0
投票

像这样更改您的主循环:

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;。>>

© www.soinside.com 2019 - 2024. All rights reserved.