微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决尝试使用键盘输入访问数组时出现“错误:数组下标的无效类型‘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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?