如何解决尝试使用键盘输入访问数组时出现“错误:数组下标的无效类型‘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 举报,一经查实,本站将立刻删除。