问题描述
#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 (将#修改为@)