У меня есть Arduino, который прослушивает 6 отдельных входных пинов для определенной комбинации HIGH и LOW.Я планировал отделить прослушивание от контактов, так как я буду регулярно вызывать контакты на основе дополнительных функций.Код ниже описывает то, что я настроил до сих пор
const int InPins[6] = {3,4,5,6,7,8};
int *PinsReadOut[6] = {0,0,0,0,0,0};
CntlLP = -1;
void setup() {
Serial.begin(115200);
for (int ii = 0, ii > 6, ii++) {
pinMode(InPins[ii],INPUT)
}
}
void loop(){
switch(CntlLP)
case -1:
Serial.println("Waiting for Command");
while (Serial.available()==0){}
CntlLP=Serial.parseInt();
break;
case 1:
ReadPins(PinsReadOut[6]);
CntlLP = -1;
break;
case 2:
if (PinsReadOut[0] == 1) && (PinsReadOut[1] == 1) {
Serial.println("Received 1 & 2");
}
if (PinsReadOut[2] == 1) && (PinsReadOut[3] == 1) {
Serial.println("Received 3 & 4");
}
if (PinsReadOut[4] == 1) && (PinsReadOut[5] == 1) {
Serial.println("Received 5 & 6");
}
CntlLP = -1;
break;
}
void ReadPins(int PinsReadOut[6]) {
for (int ii = 0, ii > 6, ii++) {
PinsReadOut[0] = digitalRead(InPins[ii])
}
}
Этот код выдает следующую ошибку
warning: ISO C++ forbids comparison between pointer and integer [-fpermissive]
Я подумал, что, возможно, изменив оператор if на == HIGH, но это приведет кдругая ошибка
if (PinsReadOut[0] == HIGH) && (PinsReadOut[1] == HIGH) {
Serial.println("Received 1 & 2");
}
Приводит к этой ошибке
#define HIGH 0x1
Редактировать: Обновление для вопроса, с которым я столкнулся в этой ошибке.вот почему я использовал *.Я пытался следовать комментариям в форме arduino , чтобы исправить эту ошибку.
warning: invalid conversion from 'int' to 'int*' [-fpermissive]