#include "Arduino.h"
#include <SD.h>
#include <SPI.h>
//#include <NewPing.h>
#include "SdFat.h"
#include <SdFat.h>
//#include "DFRobotDFPlayerMini.h"
//#include "SoftwareSerial.h"
//#include <DFPlayerMini_Fast.h>
//#include <DFPlayerMini.h>
//#include <AsyncLiquidCrystal.h>
//#include <SoftwareSerial.h>
//SoftwareSerial softSerial(/*rx =*/10, /*tx =*/11); // novo/ teste
//teste
#if (defined(ARDUINO_AVR_UNO) || defined(ESP8266)) // teste
#include <SoftwareSerial.h>
SoftwareSerial softSerial(/*rx =*/10, /*tx =*/11);
#define FPSerial softSerial
#else
#define FPSerial Serial1
#endif
//DFRobotDFPlayerMini myDFPlayer;
//#include <DFRobotDFPlayerMini.h>
#define trigger 9 // sensor de obstaculo 8,9
#define echo 8
#define trigger1 5
#define echo1 4
//#define pinRx 10
//#define pinTx 11
//#define volumeMP3 30 // modicado de volume para volumeMP3
// novo dispositivo
#define SPI_SPEED SD_SCK_MHZ(4)
#define SD_CS 3 // SD card select pin
//#define SCK 6
//#define DO 2
//#define DI 10
SdFat sd;
//SoftwareSerial playerMP3Serial(pinRx, pinTx);
//DFRobotDFPlayerMini playerMP3;
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
//DFRobotDFPlayerMini myDFPlayer;
//char buf;
int motor= 12;
int Buzzer= 13;
int motor2= 7;
float distancia = 0;
float tempo = 0;
float distancia1=0;
float tempo1=0;
void leitura(); // leitura do sensor de obstaculo
void leitura1(); // leitura do sensor de desnivel
//DFRobotDFPlayerMini playerMP3;
NewPing sonar1(trigPin1, echoPin1, 200);
NewPing sonar2(trigPin2, echoPin2, 200);
File myFile;
void setup() {
// playerMP3Serial.begin(9600);
pinMode(trigger1, OUTPUT);
pinMode(echo1, LOW );
pinMode(trigger, OUTPUT);
pinMode(echo, LOW);
pinMode(Buzzer,OUTPUT);
pinMode(motor,OUTPUT);
pinMode(motor2,OUTPUT);
Serial.begin(115200);
Serial.begin(9600);
//mySoftwareSerial.begin(9600);
//if (!myDFPlayer.begin(mySoftwareSerial)) {
//Serial.println(F("Não é possível inicializar o DFPlayer"));
// while (true);
//}
Serial.begin(115200);
if (!sd.begin(CS_PIN, SPI_SPEED)) {
if (sd.card()->errorCode()) {
Serial.println("Falha ao iniciar SD");
} else if (sd.vol()->fatType() == 0) {
Serial.println("arquivo não encontado FAT16/FAT32 ");
} else {
Serial.println("erro erro erro");
}
return;
}
Serial.println("Files on card:");
Serial.println(" Size Name");
sd.ls(LS_R | LS_SIZE);
}
// playerMP3.volume(volumeMP3);
// playerMP3.playFolder(1);
//}
void loop() {
//long duration, distance;
// digitalWrite(TRIGGER_PIN, LOW);
//delayMicroseconds(2);
//digitalWrite(TRIGGER_PIN, HIGH);
// delayMicroseconds(10);
// digitalWrite(TRIGGER_PIN, LOW);
// duration = pulseIn(ECHO_PIN, HIGH);
// distance = duration * 0.034 / 2;
// Serial.print("Distância: ");
// Serial.print(distance);
// Serial.println(" cm");
leitura();
distancia= tempo/59;
Serial.print("CM:");
Serial.println(distancia);
delay (1000);
leitura1();
distancia1= tempo1/59;
Serial.print("CM:");
Serial.println(distancia1);
delay (1000);
// if (distance >= 150 && distance <= 200) {
// myDFPlayer.playMp3Folder(1); // Tocar um arquivo MP3 na pasta 1 (ajuste conforme sua configuração)
// tone(BUZZER_PIN, 1000);
// delay(1000);
// noTone(BUZZER_PIN);
// delay(1000);
// }
// delay(100);
//}
if (distancia>=30 && distancia<=40){
// digitalWrite(motor,HIGH);
tone(Buzzer, 756, 854);
//myDFPlayer.playMp3Folder(1); // tocar uma midia avisando que ha um obstaculo
playMusic("song1.mp3");
delayMicroseconds(500);
} // obstaculo longe
else {
digitalWrite(motor, LOW);
}
if (distancia<29){
// digitalWrite(motor,HIGH);
tone(Buzzer, 3456, 354);
// myDFPlayer.playMp3Folder(2); // tocar uma midia avisando que ha um obstaculo mais proximo
playMusic("song1.mp3");
delayMicroseconds(500);
} //obstaculo perto
else {
//digitalWrite(motor, LOW);
}
// segundo sensor echo1, trigger1(4 e 5)
// este sensor tem como objetivo identificar desnivel
if (distancia1>=20 && distancia1<=30){
//digitalWrite(motor2,HIGH);
tone(Buzzer, 856, 554);
// myDFPlayer.playMp3Folder(3); // tocar uma midia avisando que ha um desnivel à frente
playMusic("song1.mp3");
delayMicroseconds(500);
} // desnivel de 10cm
else {
//digitalWrite(motor2, LOW);
}
if (distancia1>31){
//digitalWrite(motor2,HIGH);
tone(Buzzer, 456, 554);
//myDFPlayer.playMp3Folder(4); // tocar uma midia avisando que ha um buraco à frente
playMusic("song1.mp3");
delayMicroseconds(500);
}// buraco acima de 10cm
else {
// digitalWrite(motor2, LOW);
}
}
void leitura()
{
pinMode(trigger, OUTPUT);
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
pinMode(echo, INPUT);
tempo=pulseIn(echo,HIGH);
}
void leitura1(){
pinMode(trigger1, OUTPUT);
digitalWrite(trigger1, HIGH);
delayMicroseconds(10);
digitalWrite(trigger1, LOW);
pinMode(echo1, INPUT);
tempo1=pulseIn(echo1,HIGH);
}