I'm a mostly beginner at coding, but i've been trying to make my robot make a noise with a buzzer when it opens it's mouth. Although when it opens its mouth and buzzes it messes up the IR sensor I'm controling the robot with. It makes the IR sensor scramble the HEX code the IR remote sends to the sensor.
Here's my code
#include <IRremote.h>
#include <Servo.h>
IRrecv IR(3);
Servo Mservo;
Servo Lservo;
Servo Rservo;
int pos = 0;
const int Buzzer = 4;
void setup() {
Lservo.attach(8);
Rservo.attach(12);
Mservo.attach(13);
Mservo.write(pos);
Lservo.write(pos);
Rservo.write(pos);
pinMode(Buzzer, OUTPUT);
IR.enableIRIn();
Serial.begin(9600);
}
void loop() {
if(IR.decode()){
Serial.println(IR.decodedIRData.decodedRawData, HEX);//left eye
if(IR.decodedIRData.decodedRawData == 0xBB44FF00){
for (int i = 0; i < 1; i++) //repeat
{
for(pos = 0; pos < 60; pos++){
Lservo.write(pos);
delay(20);
}
delay(500);
for(pos = 60; pos > -60; pos--){
Lservo.write(pos);
delay(20);
}
}
}
delay(50);
IR.resume();
}
if(IR.decode()){
Serial.println(IR.decodedIRData.decodedRawData, HEX);//right eye
if(IR.decodedIRData.decodedRawData == 0xBC43FF00){
for (int i = 0; i < 1; i++) //repeat
{
for(pos = 0; pos < 60; pos++){
Rservo.write(pos);
delay(20);
}
delay(500);
for(pos = 60; pos > -60; pos--){
Rservo.write(pos);
delay(20);
}
}
}
delay(100);
IR.resume();
}
if(IR.decode()){
Serial.println(IR.decodedIRData.decodedRawData, HEX);//restart eyes
if(IR.decodedIRData.decodedRawData == 0xBA45FF00){
for (int i = 0; i < 1; i++) //repeat
{
for(pos = pos; pos > 0; pos++){
Lservo.write(pos);
delay(20);
}
delay(500);
for(pos = pos; pos < 0; pos--){
Lservo.write(pos);
delay(20);
}
}
}
delay(100);
IR.resume();
}
if(IR.decode()){
Serial.println(IR.decodedIRData.decodedRawData, HEX);//mouth
if(IR.decodedIRData.decodedRawData == 0xEA15FF00){
for (int i = 0; i < 1; i++) //repeat
{
for(pos = 0; pos > -30; pos--){
Mservo.write(pos);
delay(20);
}
tone(Buzzer, 500);
delay(1000);
noTone(Buzzer);
for(pos = -30; pos < 30; pos++){
Mservo.write(pos);
delay(20);
}
}
}
delay(100);
IR.resume();
}
}