#include <IRremote.h>
#define irPin 3
#include "SD.h"
#define SD_ChipSelectPin 4
#include "TMRpcm.h"
#include "SPI.h"
TMRpcm tmrpcm;
IRrecv irrecv(irPin);
decode_results results;
/* define L298N or L293D motor control pins */
int leftMotorForward = A3; /* -> IN3 */
int rightMotorForward = A1; /* -> IN1 */
int leftMotorBackward = A4; /* -> IN4 */
int rightMotorBackward = A2; /* -> IN2 */
/* define L298N or L293D enable pins */
int rightMotorENB = A0; /* -> Motor-A Enable */
int leftMotorENB = A5; /* -> Motor-B Enable */
void setup()
{
tmrpcm.speakerPin = 9;
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}
tmrpcm.setVolume(5);
//tmrpcm.play("Voyage .wav");
irrecv.enableIRIn();
/* initialize motor control pins as output */
pinMode(leftMotorForward, OUTPUT);
pinMode(rightMotorForward, OUTPUT);
pinMode(leftMotorBackward, OUTPUT);
pinMode(rightMotorBackward, OUTPUT);
/* initialize motor enable pins as output */
pinMode(leftMotorENB, OUTPUT);
pinMode(rightMotorENB, OUTPUT);
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.print(results.value, HEX);
Serial.print(" - ");
Serial.println(results.value);
switch (results.value)
{
case 1077989423:
MotorForward();
break;
case 1077964943:
MotorBackward();
break;
case 1077938423:
TurnLeft();
break;
case 1077971063:
TurnRight();
break;
default:
MotorStop();
}
irrecv.resume();
}
}
/********************************************* FORWARD *****************************************************/
void MotorForward(void)
{
tmrpcm.play("forward.wav");
digitalWrite(leftMotorENB,HIGH);
digitalWrite(rightMotorENB,HIGH);
digitalWrite(leftMotorForward,HIGH);
digitalWrite(rightMotorForward,HIGH);
digitalWrite(leftMotorBackward,LOW);
digitalWrite(rightMotorBackward,LOW);
}
/********************************************* BACKWARD *****************************************************/
void MotorBackward(void)
{
tmrpcm.play("backward.wav");
digitalWrite(leftMotorENB,HIGH);
digitalWrite(rightMotorENB,HIGH);
digitalWrite(leftMotorBackward,HIGH);
digitalWrite(rightMotorBackward,HIGH);
digitalWrite(leftMotorForward,LOW);
digitalWrite(rightMotorForward,LOW);
}
/********************************************* TURN LEFT *****************************************************/
void TurnLeft(void)
{
tmrpcm.play("left.wav");
digitalWrite(leftMotorENB,HIGH);
digitalWrite(rightMotorENB,HIGH);
digitalWrite(leftMotorForward,LOW);
digitalWrite(rightMotorForward,HIGH);
digitalWrite(rightMotorBackward,LOW);
digitalWrite(leftMotorBackward,HIGH);
}
/********************************************* TURN RIGHT *****************************************************/
void TurnRight(void)
{
tmrpcm.play("right.wav");
digitalWrite(leftMotorENB,HIGH);
digitalWrite(rightMotorENB,HIGH);
digitalWrite(leftMotorForward,HIGH);
digitalWrite(rightMotorForward,LOW);
digitalWrite(rightMotorBackward,HIGH);
digitalWrite(leftMotorBackward,LOW);
}
/********************************************* STOP *****************************************************/
void MotorStop(void)
{
digitalWrite(leftMotorENB,LOW);
digitalWrite(rightMotorENB,LOW);
digitalWrite(leftMotorForward,LOW);
digitalWrite(leftMotorBackward,LOW);
digitalWrite(rightMotorForward,LOW);
digitalWrite(rightMotorBackward,LOW);
}
Comments