boa tarde,como que faço uma coisa simples no código do arduino ,vou mandar código abaixo explicado o que é só preciso tem uma função que pega string do serial e coloca na variavel "comando" PARTE EM COR VERMELHA  aceita char e int irsend.sendNEC e no println mostra chegando valor

#include <IRremote.h>
IRsend irsend;
int led = 13;
  
void setup() { 
 pinMode(led, OUTPUT); 
 Serial.begin(9600);
}
  
/**
 * Função que lê uma string da Serial
 * e retorna-a
 */
String leStringSerial(){
  String conteudo = "";
  char caractere;
  
  // Enquanto receber algo pela serial
  while(Serial.available() > 0) {
    // Lê byte da serial
    caractere = Serial.read();
    // Ignora caractere de quebra de linha
    if (caractere != '\n'){
      // Concatena valores
      conteudo.concat(caractere);
    }
    // Aguarda buffer serial ler próximo caractere
    delay(10);
  }
    conteudo.trim();
  Serial.print("Recebi: ");
  Serial.print(conteudo);
    
  return conteudo;
}
//Envia o comando LIGA com 32 bits utilizando protocolo NEC
void ligaDesliga(String comando){
  
  for (int i = 0; i < 3; i++) {
//assim não funciona pois estou tentanto converte uma string pra char "0x20DFC23D"
    irsend.sendNEC(comando.c_str(), 32);
 
//agora com mesmo valor passando manual funciona comando de infra vermelho :{
 
 irsend.sendNEC(0x20DFC23D, 32);
 
//esse comando estou enviado atravez monitor serial
  }
  //0x20DFC23D
  Serial.println(comando.c_str());
  Serial.println("");
}
  
void loop(){
  // Se receber algo pela serial
  if (Serial.available() > 0){
    
    // Lê toda string recebida
    String recebido = leStringSerial();
    
    if (recebido == "LED1:0"){
      digitalWrite(led, LOW);
    }
    
    if(recebido != ""){
      digitalWrite(led, HIGH);
      ligaDesliga(recebido);
    }
      
  }//FIM LOOP
}

Exibições: 281

Responder esta

Respostas a este tópico

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço