String voice;
int flashlight = 8;
int eyebrows = 2;
int front = 14;
int back = 15;
int right = 16;
int left = 17;
int fromslave = 18;
int racemode = 19;
#include "SD.h"
#define SD_ChipSelectPin 10
#include "TMRpcm.h"
#include "SPI.h"
#include <Servo.h> //Servo library
Servo lefthand;
Servo righthand;
TMRpcm speech;
#include <SoftwareSerial.h>
SoftwareSerial BT(4,3); //RX | TX
void setup() {
BT.begin(9600);
Serial.begin(9600);
speech.speakerPin=9;
Serial.begin(9600);
if(!SD.begin(SD_ChipSelectPin))
{
Serial.println("SD fail");
return;
}
speech.quality(1);
speech.setVolume(6);
lefthand.attach(5);
righthand.attach(6);
pinMode(flashlight, OUTPUT);
pinMode(eyebrows, OUTPUT);
pinMode(front, OUTPUT);
pinMode(back, OUTPUT);
pinMode(right, OUTPUT);
pinMode(left, OUTPUT);
pinMode(fromslave, INPUT);
pinMode(racemode, INPUT);
}
void blink()
{
digitalWrite(eyebrows, LOW);
delay(200);
digitalWrite(eyebrows, HIGH);
delay(200);
digitalWrite(eyebrows, LOW);
delay(200);
digitalWrite(eyebrows, HIGH);
delay(200);
digitalWrite(eyebrows, LOW);
delay(200);
}
void loop() {
digitalWrite(eyebrows, HIGH);
int t = digitalRead(fromslave);
if(t == 1)
{
blink();
}
digitalWrite(racemode,LOW);
while(BT.available()) {
delay(500);
digitalWrite(right, LOW);
digitalWrite(left, LOW);
char c = BT.read();
if(c=='#')
{break; }
voice += c;
}
if (voice.length() > 0) {
if (voice == "move forward" || voice == "forward" || voice == "front") {
speech.play("3.wav");
delay(1500);
digitalWrite(front, HIGH);
delay(500);
digitalWrite(front, LOW);
blink();
}
else if (voice == "move backward" || voice == "backward" || voice == "back" || voice == "move back") {
speech.play("2.wav");
delay(1500);
digitalWrite(back, HIGH);
delay(500);
digitalWrite(back, LOW);
blink();
}
else if (voice == "move right" || voice == "turn right" || voice == "right") {
speech.play("5.wav");
delay(1500);
digitalWrite(right, HIGH);
delay(500);
digitalWrite(right, LOW);
blink();
}
else if (voice == "move left" || voice == "turn left" || voice == "left") {
speech.play("4.wav");
delay(1500);
digitalWrite(left, HIGH);
delay(500);
digitalWrite(left, LOW);
blink();
}
else if (voice == "hi" || voice == "hello" || voice == "hey" || voice == "hey there") {
speech.play("1.wav");
lefthand.write(90);
righthand.write(90);
delay(1000);
lefthand.write(0);
righthand.write(0);
digitalWrite(eyebrows, LOW);
delay(500);
digitalWrite(eyebrows, HIGH);
delay(500);
digitalWrite(eyebrows, LOW);
delay(500);
digitalWrite(eyebrows, HIGH);
delay(500);
digitalWrite(eyebrows, LOW);
delay(500);
digitalWrite(eyebrows, HIGH);
delay(2500);
righthand.write(0);
}
else if (voice == "play a song" || voice == "song" || voice == "play song" || voice == "need a song") {
speech.play("6.wav");
blink();
}
else if (voice == "turn on flashlight" || voice == "flashlight on" || voice == "light on" || voice == "flashlight" || voice == "light") {
digitalWrite(flashlight, HIGH);
blink();
}
else if (voice == "turn off flashlight" || voice == "flashlight off" || voice == "light off") {
digitalWrite(flashlight, LOW);
blink();
}
else if (voice == "joke" || voice == "tell me a joke" || voice == "say a joke" || voice == "tell me joke") {
int randnumber = random(1,10);
switch (randnumber) {
case 1:
speech.play("7.wav");
break;
case 2:
speech.play("8.wav");
break;
case 3:
speech.play("9.wav");
break;
case 4:
speech.play("10.wav");
break;
case 5:
speech.play("11.wav");
break;
case 6:
speech.play("12.wav");
break;
case 7:
speech.play("13.wav");
break;
case 8:
speech.play("14.wav");
break;
case 9:
speech.play("15.wav");
break;
default:
speech.play("7.wav");
}
delay(500);
}
else if (voice == "enter race mode" || voice == "race mode" || voice == "race" || voice == "race mode on" || voice == "move fast" || voice == "fast") {
digitalWrite(racemode, HIGH);
while(true){
if(BT.available()){
char input = BT.read();
if(input == 'F'){
digitalWrite(front, HIGH);
}
else if(input == 'B'){
digitalWrite(back, HIGH);
}
else if(input == 'R'){
digitalWrite(right, HIGH);
}
else if(input == 'L'){
digitalWrite(left, HIGH);
}
else if(input == 'X'){
break;
}
else
{ digitalWrite(front, LOW);
digitalWrite(back, LOW);
digitalWrite(right, LOW);
digitalWrite(left, LOW);
}
}
}
digitalWrite(racemode, LOW);
blink();
}
else {
Serial.print("I couldn't understand");
}
Serial.println(voice);
voice="";
}
}