Confrontare caratteri in IF

Ciao a tutti,
Mi è sorto un problema nello scrivere un codice tramite il quale l'ARDUINO dovrà ricevere comandi tramite porta seriale da Unity per eseguire delle operazioni predefinite a seconda di ciò che riceve.
Sono poco esperto con questi codici, quindi perdonate qualsiasi tipo di strafalcione.

Questo è un esempio:
char READ[20] = "abcd";

void setup() {
  Serial.begin(9600);
}

void loop() {
  //  Serial.println(READ[0]);  --> stampa a
  //  Serial.println(READ[1]);  --> stampa b
  //  Serial.println(READ[2]);  --> stampa c
  //  Serial.println(READ[3]);  --> stampa d
  if (strcmp(READ[3], 'a') == 0) {
    Serial.print("A \n");
  }
  else if (strcmp(READ[2], 'b') == 0) {
    Serial.print("B \n");
  }
  else {
    Serial.print("C \n");
  }
}

Da Unity io leggo dei caratteri che inserisco in READ, ora io vorrei leggere un carattere e nel caso corrisponda a quello inserito in strcmp allora esegua un'azione (in questo caso è un semplice Serial.print).

Se provo a stampare direttamente con:

//  Serial.println(READ[1]);  --> stampa b
  //  Serial.println(READ[2]);  --> stampa c

Tuttavia usando strcmp ottengo un risultato positivo sia con:

(strcmp(READ[1], 'b')

che con

(strcmp(READ[2], 'b')

come se b occupasse sia la casella 1 che la 2.

Oltre a questo ottengo un errore che non compromette il funzionamento del codice:

warning: invalid conversion from 'char' to 'const char*' [-fpermissive]

if (strcmp(READ[3], 'a') == 0) {

...
note: initializing argument 1 of 'int strcmp(const char*, const char*)'

extern int strcmp(const char *, const char *) ATTR_PURE;

Quindi credo di star facendo casino con char, str e int. Ma non ne vengo a capo.

Qualcuno può aiutarmi?

Grazie!

RISOLTO
Grazie dell'aiuto, bastava semplicemente utilizzare il comando per il caratteri invece di quello per le stringhe. Quindi niente strcomp ma READ[0]=='a'

'a'

è un singolo carattere.

"a"

è una stringa lunga un carattere.

strcmp() confronta stringhe. Per confrontare un singolo carattere basta un if:

if (pippo[1] == 'x') {
  ...

>riccardocandeo: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice (… anche poche righe) all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra). Grazie,

Guglielmo

Grazie, infatti cercavo il modo di inserirlo in CODE ma non ci sono riuscito. Ora rimedio.

riccardocandeo:
Grazie, infatti cercavo il modo di inserirlo in CODE ma non ci sono riuscito. Ora rimedio.

Grazie a te :slight_smile:

Guglielmo