我正在尝试使用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();}
}}
答案 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';
}