用于多个按钮和LED矩阵的Arduino代码

时间:2018-10-18 13:49:59

标签: button arduino arduino-uno led

我正在尝试使用Arduino Uno,8x8 LED矩阵和3个按钮来构建系统。该系统的目标是在相应地按下3个按钮时显示3个不同的字符。例如,我选择了字母A,B,C。当按下与A对应的按钮时,必须显示字母A,并且对于B和C也是如此。我有点陷入这段代码中,在逻辑上对我来说似乎是正确的,但我不知道为什么它不起作用。预先感谢。

#include "LedControlMS.h"
#define NBR_MTX 1
LedControl lc=LedControl(4,3,2, NBR_MTX);//
const int buttonPinA = 8;
const int buttonPinB = 9;
const int buttonPinC = 10;
char ip2;
void setup()
{
  Serial.begin(9600);
  for (int i=0; i< NBR_MTX; i++)
  {
    lc.shutdown(i,false);
    lc.setIntensity(i,8);
    lc.clearDisplay(i);
    delay(100);
  }
}
void Fun1()
{
              lc.writeString(0,"A");
              delay(500);
              lc.clearAll();
}
void Fun2{
          lc.writeString(0,"B");
              delay(500);
              lc.clearAll();
}
void Fun3()
{
              lc.writeString(0,"C");
              delay(500);
              lc.clearAll();
}
void loop(){

if( digitalRead(buttonPinA) == HIGH){
  ip2 = 1;}
else if(digitalRead(buttonPinB) == HIGH){
  ip2 = 2;}
else if(digitalRead(buttonPinC) == HIGH){
  ip2 = 3;
}
if(ip2 == '1'){
for(int i=1;i<=6;i++){
  Fun1();
  }
}
else if(ip2 == '2')
{
 for(int i=1;i<=6;i++){
 Fun2();}
}
else if(ip2 == '3'){
for(int i=1;i<=6;i++){
Fun3();}
}}

1 个答案:

答案 0 :(得分:0)

您要将char ip2变量设置为整数,然后将其检查为字符。您将在此ASCII Table中看到,“ 1”等于整数31,“ 2”等于32,依此类推。

用下面的代码替换主循环的前几行应该可以解决您的问题。如果没有,我将检查您正在使用的led库的文档,并确保正确实施。

if( digitalRead(buttonPinA) == HIGH)
{
    ip2 = '1';
}
else if(digitalRead(buttonPinB) == HIGH)
{
    ip2 = '2';
}
else if(digitalRead(buttonPinC) == HIGH)
{
    ip2 = '3';
}