Como recibir un dato en hexadecimal que viene de una aplicación móvil por medio de bluetooth

Antes que nada saludos a la comunidad Arduino y les deseo éxito en los proyectos que se encuentren desarrollando.

El problema es básicamente el siguiente:

Recibía mediante Bluetooth un caracter enviado desde una aplicación móvil (el caracter pertenece al código ASCII), estaba satisfecho con los resultados. Sin embargo, hay caracteres que arduino no acepta, me muestra la siguiente advertencia : warning: multi-character character constant [-Wmultichar] if (N == '¡'). Resulta que en la programación necesito 180 datos distintos que sean guardados en 180 variables, para luego comparar el valor de esa variable y hacer lo siguiente, pero arduino no lo acepta (Es decir, no acepta algunos caracteres).

int R = 2;
int G = 3;
int B =  4;
char N = 0; //variable de dato serial

void setup() 
{
pinMode(N , INPUT);
  
pinMode(R, OUTPUT);
pinMode(G, OUTPUT ); 
pinMode(B, OUTPUT); 

Serial.begin(9600);
}
void loop() {
  if(Serial.available() > 0)
  {
             N = Serial.read();
  }

if (N == '¡') 
{
analogWrite (R,  255);
analogWrite(G,  0);
analogWrite(B,  0);
}
else
{
analogWrite(R,  0);
analogWrite(G,  0);
analogWrite(B,  0);
}
}`

Entonces, me gustaría utilizar el sistema numérico Hexadecimal, es decir, que desde la aplicación móvil se envíe por medio del Bluetooth un dato Hexadecimal y que Arduino lo reciba por medio de otro bluetooth y lo guarde en una variable y lo convierta a decimal, para después, comparar el resultado por la función if.

Ejemplo:

if (Resultado == '125') 
{
analogWrite (R,  255);
analogWrite(G,  0);
analogWrite(B,  0);
}
else
{
analogWrite(R,  0);
analogWrite(G,  0);
analogWrite(B,  0);
}
}

Es muy probable que la programación anterior tenga errores, pero me gustaría que me ayudaran en como hacerle para guardar valores hexadecimales y convertirlos a decimales, o también, que el mismo valor Hexadecimal recibido desde el móvil pueda compararlo en if por el mismo valor Hexadecimal.
Se los agradeceré mucho.

La clave es que en Arduino a los datos hexadecimales los llamamos bytes, si utilizas google con la palabra bytes aparecerán numerosos tutoriales. Básicamente es que tu dato no debe ser recibido por un char, sino por un byte.

PD Edita el post utilizando marcas para el código </>

Mira este enlace.

Cambia el tipo de la variable N a byte

Saludos

Hola Gracias por responder. Supongamos que se recibió el dato hexadecimal en la variable N, la cual está definida como tipo byte. Bien, supongamos ahora que, ese dato hexadecimal guardado en la viable N, ahora se desea utilizarla en un if que va a comparar el valor de la variable N. Ejemplo:

Digamos que se recibió lo siguiente: F2 (en sistema hexadecimal el cual fue guardado en una variable tipo byte y se guardó en N, ahora me gustaría que si N es igual a F2 entonces realizo la acción de encender un LED (estado alto), de lo contrario si N es diferente a F2 el LED se mantiene apagado (permanece en estado bajo).

int R = 2;
int G = 3;
int B =  4;
byte N = 0; //variable de dato serial

void setup() 
{
pinMode(N , INPUT);
  
pinMode(R, OUTPUT);
pinMode(G, OUTPUT ); 
pinMode(B, OUTPUT); 

Serial.begin(9600);
}
void loop() {
  if(Serial.available() > 0)
  {
             N = Serial.read();
  }

if (N == 'F2') 
{
analogWrite (R,  255);
analogWrite(G,  0);
analogWrite(B,  0);
}
else
{
analogWrite(R,  0);
analogWrite(G,  0);
analogWrite(B,  0);
}
}

El detalle aquí es que, al poner

if ( N == 'F2')

Arduino no lo toma como un valor en si, como pueden ver el código lo marca en rojo, supongo que eso da a entender que no lo capta como un valor en si. La duda es como tengo que programar esto. De antemano muchas gracias.

[quote="danielhernandez2302, post:5, topic:888694, full:true"]
Hola Gracias por responder. Supongamos que se recibió el dato hexadecimal en la variable N, la cual está definida como tipo byte. Bien, supongamos ahora que, ese dato hexadecimal guardado en la viable N, ahora se desea utilizarla en un if que va a comparar el valor de la variable N. Ejemplo:

Digamos que se recibió lo siguiente: F2 (en sistema hexadecimal el cual fue guardado en una variable tipo byte y se guardó en N, ahora me gustaría que si N es igual a F2 entonces realizo la acción de encender un LED (estado alto), de lo contrario si N es diferente a F2 el LED se mantiene apagado (permanece en estado bajo).

int R = 2;
int G = 3;
int B =  4;
byte N = 0; //variable de dato serial

void setup() 
{
pinMode(N , INPUT);
  
pinMode(R, OUTPUT);
pinMode(G, OUTPUT ); 
pinMode(B, OUTPUT); 

Serial.begin(9600);
}
void loop() {
  if(Serial.available() > 0)
  {
             N = Serial.read();
  }

if (N == 'F2') 
{
analogWrite (R,  255);
analogWrite(G,  0);
analogWrite(B,  0);
}
else
{
analogWrite(R,  0);
analogWrite(G,  0);
analogWrite(B,  0);
}
}

El detalle aquí es que, al poner

if ( N == 'F2')

Arduino no lo toma como un valor en si, como pueden ver el código lo marca en rojo, supongo que eso da a entender que no lo capta como un valor en si. La duda es como tengo que programar esto. De antemano muchas gracias.

La notación correcta para un Byte seria 0xF2
if (N == 0xF2)

Me has resuelto el problema, muchísimas gracias por tu tiempo y colaboración, Bendiciones.