Sensor IR passa a fazer leituras diferentes do mesmo botão sempre que o Buzzer é acionado

Bom dia pessoal, sou novo aqui.
Queria entender uma coisa que está acontecendo com meu projeto.

Estou com um projeto teste (hobby) de um carro com sensor de distância, um sensor IR e um buzzer.

Intenção é controlar o carro via IR , sempre que ele estiver perto de um objeto configurei para emitir um sinal sonoro e vou configurar para também desligar os motores.

Quando comecei a configurar o controle remoto por IR e percebi que os comandos não eram obedecidos sempre que o buzzer era acionado e fui ver no Serial.print que realmente o sensor de IR lê diferente quando aperto o mesmo botão a partir do acionamento do buzzer.

Fiquei sem entender.

vou copiar aqui o projeto (me desculpem a desorganização - estou em fase de aprendizado!)

#include <IRremote.h>
#include <LiquidCrystal.h>
#include <Ultrasonic.h>

// definicoes da porta do Hmotor
#define in1 22
#define in2 24
#define in3 26
#define in4 28

// instacao do buzzer na porta 10
int buzzer = 10;

// definicao da porta (trig, echo);

Ultrasonic ultrassom (8,7);

// cricao da variavel distancia (variavel long)
long distancia;

// criacao da tela de lcd
LiquidCrystal lcd (12,11,5,4,3,2);

// incluindo o sensor de IR para cotrole após instalar biblioteca
int RECV_PIN = 6;
IRrecv irrecv (RECV_PIN);

long int codTecla1 = 16753245;
long int codTecla2 = 16736925;
long int codTecla3 = 16769565;
long int codTecla4 = 16720605;
long int codTecla5 = 148431611;
long int codTecla6 = 16761405;
long int codTecla7 = 16769055;
long int codTecla8 = 16754775;
long int codTecla9 = 16748655;
long int codTeclaAsterisco = 4294967295;
long int codTecla0 = 16750695;
long int codTeclaJogodavelha = 16756815;
long int setaParaCima = 16718055;
long int setaParaBaixo = 16730805;
long int setaParaDireita = 16734885;
long int setaParaEsquerda = 16716015;
long int botaoOk = 16726215;

decode_results results;

void setup() {

Serial.begin (9600);

lcd.begin (16,2);

irrecv.enableIRIn ();

pinMode (buzzer, OUTPUT);

//frase de abertura
lcd.setCursor(3,0);
lcd.print ("OLA JADSONN");
delay (1000);
lcd.setCursor(3,1);
lcd.print ("VAMOS DIRIGIR");
delay (1000);

}

void loop() {

if (irrecv.decode(&results)) {
Serial.print ("codigo HEX: ");
Serial.println (results.value, HEX);
Serial.print ("Codigo DEC: ");
Serial.println (results.value, DEC);
Serial.println (" ");
irrecv.resume ();
}
delay (100);

distancia = ultrassom.Ranging (CM);
Serial.print (distancia);
Serial.println (" cm para bater");
delay (100);

lcd.clear ();
lcd.setCursor(3,0);
lcd.print (distancia);
lcd.print (" cm");
lcd.setCursor(3,1);
lcd.print ("para bater");
delay (200);

digitalWrite (in1, LOW);
digitalWrite (in2, LOW);
digitalWrite (in3, LOW);
digitalWrite (in4, LOW);

bool atencaopranaobater = distancia < 15;

if (atencaopranaobater) {
tone (10, 440);
}
else{
noTone (10);
}

if (results.value == setaParaCima) {
digitalWrite (in1, HIGH);
digitalWrite (in2, LOW);
digitalWrite (in3, HIGH);
digitalWrite (in4, LOW);
}

if (results.value == setaParaBaixo) {
digitalWrite (in1, LOW);
digitalWrite (in2, HIGH);
digitalWrite (in3, LOW);
digitalWrite (in4, HIGH);
}

Olá @jadsonn ,

Bem-vindo ao Forum!

Sobre a sua dúvida, a minha suspeita é que, por alguma razão, o acionamento do Buzzer esteja sobrecarregando o consumo de energia do circuito. Vale lembrar que alguns Buzzers consomem 75 mA quando acionados e o máximo que uma porta do Arduíno (UNO) consegue fornecer é 40 mA.

Duas dicas para que outras pessoas possam te ajudar:

  1. Colocar seu código formatado (usando o botão image

  2. Postar o esquema elétrico das suas conexões

Divirta-se! :upside_down_face:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.