boa noite pessoal estou com um problema em uma interpretação de programa.
tenho esse loop que funciona certinho

void loop() {
while (LORA.available()) {
int c = LORA.read();
Serial.println(c);
if (c == ‘101 0 1 1 255 255 255’){
digitalWrite(led, HIGH);
LORA.print(“vis p1,0”);
LORA.print("\xFF\xFF\xFF");

mas quando aperto no botao da ihm ela manda os valores assim pra mim que estao em DEC , mas preciso deles em HEXA.
20:55:43.057 → 101
20:55:43.057 → 0
20:55:43.057 → 1
20:55:43.057 → 1 @ tenho que saber receber esse valor e jogar no proximo if para acender o led
20:55:43.057 → 255
20:55:43.101 → 255
20:55:43.101 → 255

e o byte mais importante e o que coloquei o @, o if que fiz tem que reconhecer esse byte para dar o comando
if (c == ‘101 0 1 (1) 255 255 255’){

101 0 1 1 255 255 255

Exibições: 237

Responder esta

Respostas a este tópico

Boa noite, 

Simples assim:

https://www.arduino.cc/reference/pt/language/functions/communicatio...

Serial.println(c,HEX);

Não entendi isso, explique

if (c == ‘101 0 1 (1) 255 255 255’){

101 0 1 1 255 255 255

20:55:43.057 → 101
20:55:43.057 → 0
20:55:43.057 → 1
20:55:43.057 → 1 
20:55:43.057 → 255
20:55:43.101 → 255
20:55:43.101 → 255

recebo os dados acima, e o que me interessa é o quarto que esta sublinhado, caso ele seja 1 ele ligara o led

if (c == ‘igual o quarto fazer abaixo’){   

digitalWrite(led, HIGH);
LORA.print("vis p1,0");
LORA.print("\xFF\xFF\xFF");

Na terceira linha o resultado é o mesmo. Qual a diferença?

20:55:43.057 → 1
20:55:43.057 → 1 

Bom dia Sr. RDC,  (se não gosta que te chame pelas iniciais, avise),

o Sr. define a variável "C" como o tipo int  e lê os dados vindo do LORA. na sequencia imprime os dados.

e então testa "C" contra um caractere (símbolo )   ‘101 0 1 1 255 255 255’.

 Um caractere é do tamanho de um byte e  ‘101 0 1 1 255 255 255’ tem  21 bytes.

O valor de C na função if que o Sr. usou está errada, pois ‘101 0 1 1 255 255 255’ não é um caractere 

e nem um int.

Estou inferindo que o Sr. está usando a IDE do arduino.

Se estiver usando a plataforma arduino, a definição do tipo "int" estabelece que a variável poderá

receber valores no intervalo de -32.768 a 32.767.

Todos valores recebidos e testados na plataforma IDE do arduino estão em formato Hexadecimal, a forma de apresentação (impressão ) é que aparentemente muda o formato.

Testa o arquivo que está abaixo e depois conta pra gente o resultado.

LORA.txt

RV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço