request for member ' ' in ' ' which is of non class type Arduino

354 views Asked by At

ARDUINO PAD BLUETOOTH

Hi, I´m trying to do a PAD controll by Bluetooth, the conexion with be between my smartphone (Android) and the Esp32 but i have some issues

The error <request for member 'equals' in 'pwm', which is of non-class type 'int'> continues appearing.

I´m using an ESP32 with a bipolar motor

Here´s my code


int v = 0;    //Contador para velocidades


//ARREGLOS
int motor [4] = {25, 26, 27, 14};  //Pines donde se conecta el motor
int sh [8][4] = {{1, 0, 0, 0},     //Arreglo PAP en sentido horario
                 {1, 1, 0, 0},
                 {0, 1, 0, 0},
                 {0, 1, 1, 0},
                 {0, 0, 1, 0},
                 {0, 0, 1, 1},
                 {0, 0, 0, 1},
                 {1, 0, 0, 1}};
int sah [8][4] = {{1, 0, 0, 1},    //Arreglo PAP en sentido antihorario
                 {0, 0, 0, 1},
                 {0, 0, 1, 1},
                 {0, 0, 1, 0},
                 {0, 1, 1, 0},
                 {0, 1, 0, 0},
                 {1, 1, 0, 0},
                 {1, 0, 0, 0}};
int vel [3]={30, 10, 5};

BluetoothSerial BT;

void setup() {
  Serial.begin(115200);
  BT.begin("ESP32_BLUE");
  //CONFIGURACIÓN
   //OUTPUT´s
   //Salidas de los pines del motor
   pinMode (25, OUTPUT);
   pinMode (26, OUTPUT);
   pinMode (27, OUTPUT);
   pinMode (14, OUTPUT);

     //INICIALIZACIÓN
  for (int i=0; i<=3; i++){
    digitalWrite(motor[i],0);
  }
  Serial.println();
  Serial.println("Control PAP mediante BT");
  Serial.println("# → 1 o 2");
  Serial.println();
  
}

void loop() {
  if (BT.available()){
    decoBT();
  }
}

void decoBT(){
  String msg=BT.readStringUntil ('\r');
  msg.toUpperCase();
  int tam = msg.length();                 //Veo el tamaño de la cadena y la guardo en la variable tam
  int sep = msg.indexOf(':');             //Busca posición del caracter
  String motor=msg.substring(0, sep);       //Hago cadena que agarre desde la posición 0 hasta el separador
  int pwm = msg.substring(sep+1, tam).toInt(); //Obtiene la segunda parte del protocolo y lo convierte a entero

if(motor.equals("A")&&pwm.equals("O")){
  for(int j=0; j<=7; j++){             //For para desplazarse por el arreglo bidimensional
    for(int k=0; k<=3; k++){           //For para desplazarse por el arreglo bidimensional
        digitalWrite(motor[k],sh[j][k]); //Asignación de cda valor en filas x columnas
      }
      delay(vel[v]);                     //Retardo de acuerdo a la velocidad
    }
  }
  
else if(motor.equals("A")&&pwm.equals("I")){
    for(int l=0; l<=7; l++){       //For para desplazar por el arreglo bidimensional
          for(int m=0; m<=3; m++){      //For para desplazar por el arreglo bidimensional
           digitalWrite(motor[m],sah[l][m]);  //Asignación de cda valor en filas x columnas 
      }
      delay(vel[v]);                   //Retardo de acuerdo a la velocidad
    }
  }
else if(motor.equals("A")&&pwm.equals("F")){
    for(int i=0; i<=2; i++){
      digitalWrite(motor[i],0);        //Apaga las salidas
    }
  }
}```
1

There are 1 answers

0
stdunbar On

The variable pwm is an int and doesn't have an equals() method declared. Just compare directly:

if(motor.equals("A")&&pwm == 'O')){

for example. Don't compare against the string (double quotes), just the single character.