尝试使用键盘输入访问数组时出现“错误:数组下标的无效类型‘char [int]’”

问题描述

#include <Keypad.h>
#include <IRremote.h>
const int ROW_NUM = 4; //four rows
const int COLUMN_NUM = 4; //four columns
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
irsend irsend;
int A[] = {NULL,NULL,NULL};
int B[] = {NULL,NULL};
int C[] = {NULL,NULL};
int D[] = {NULL,NULL};

char keys[ROW_NUM][COLUMN_NUM] = {
  {'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}
};

byte pin_rows[ROW_NUM] = {2,3,4,5}; //connect to the row pinouts of the keypad
byte pin_column[COLUMN_NUM] = {6,7,8,9}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys),pin_rows,pin_column,ROW_NUM,COLUMN_NUM );

void setup(){
  Serial.begin(9600);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop(){
  char key = keypad.getKey();

  if (key == "#"){
    irsend.sendRC5(0x0,8); //send 0x0 code (8 bits)
    delay(200);
    irsend.sendRC5(0x1,8); 
    delay(200); 
    char array_choice = keypad.getKey();
    if (array_choice == "A") {
      int selected_array = A;
      int index_of_signal = keypad.getKey();
      if (index_of_signal == 0) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 1) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 2) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 3) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 4) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 5) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 6) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 7) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 8) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      if (index_of_signal == 9) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      }
    if (array_choice == "B") {
      int selected_array == B;
      int index_of_signal = keypad.getKey();
      if (index_of_signal == 0) {
        irsend.sendRC5(selected_array[index_of_signal],8);
        }
      }
    }
    if (key == "*") {
      if (irrecv.decode(&results)) {
      Serial.println(results.value,HEX);
      irrecv.resume();
      }
  }
}

代码用于通用红外遥控器,它应该获取所选阵列中红外信号的值并传输信号。

然而,当我尝试通过键盘输入来选择用户想要使用的数组时,出现了标题中提到的错误。我知道我的错误键盘将选择存储为字符,因此,它无法识别输入应该选择特定数组并访问它。我听说以这种方式获取变量及其存储的数组可能是不可能的,所以如果您对如何做有任何想法,请说出来。

我将如何解决这个问题?任何帮助将不胜感激。

Edit1:我尝试用数组本身替换 selected_array,例如:

if (index_of_signal == 1) {
        irsend.sendRC5(A[index_of_signal],8);
        }

然而,我现在得到的错误是为 Arduino uno 板编译错误,但它并没有指向代码中的特定错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...