Grazie, finalmente ho risolto, ho adattato il codice al mio progetto e modificato alcune cose, come ho già detto in alcuni post in precedenza questi sensori mi servono per una Arduino Car. I problemi erano 2, uno quello che viene detto nel mio primo post e due, una singola batteria da 9 volt non era sufficiente e quindi ne ho inserite due (ovviamente su due Arduino differenti). Riporto il codice per chi in futuro fosse interessato:
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include <SRF05.h>
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
SRF05 Sensor1(3, 5, 200, 5);
SRF05 Sensor2(14, 15, 200, 5);
SRF05 Sensor3(18, 19, 200, 5);
int led1;
int led2;
int led3;
void setup()
{
mySoftwareSerial.begin(9600);
Serial.begin(9600);
Sensor1.Unlock = true;
Sensor2.Unlock = true;
Sensor3.Unlock = true;
if (!myDFPlayer.begin(mySoftwareSerial)) {
while (true);
}
myDFPlayer.volume(15); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3
}
void loop() {
static unsigned long timer = millis();
if (millis() - timer > 900000) {
timer = millis();
myDFPlayer.next();
}
if ( Sensor1.Read() > -1 ) {
if ( Sensor1.Distance == 0 ) {
Serial.println("Out of range");
} else if (Sensor1.Distance <= 15) {
digitalWrite(led1, HIGH);
Serial.print("Dist1: ");
Serial.print(Sensor1.Distance);
Serial.println(" cm");
}
else if (Sensor1.Distance > 14) {
digitalWrite(led1, LOW);
Serial.print("Dist1: ");
Serial.print(Sensor1.Distance);
Serial.println(" cm");
}
}
if ( Sensor2.Read() > -1 ) {
if ( Sensor2.Distance == 0 ) {
Serial.println("Out of range");
} else if (Sensor2.Distance <= 15) {
digitalWrite(led2, HIGH);
Serial.print("Dist2: ");
Serial.print(Sensor2.Distance);
Serial.println(" cm");
}
else if (Sensor2.Distance > 14) {
digitalWrite(led2, LOW);
Serial.print("Dist2: ");
Serial.print(Sensor2.Distance);
Serial.println(" cm");
}
}
if ( Sensor3.Read() > -1 ) {
if ( Sensor3.Distance == 0 ) {
Serial.println("Out of range");
} else if (Sensor3.Distance <= 15) {
digitalWrite(led3, HIGH);
Serial.print("Dist3: ");
Serial.print(Sensor3.Distance);
Serial.println(" cm");
}
else if (Sensor3.Distance > 14) {
digitalWrite(led3, LOW);
Serial.print("Dist3: ");
Serial.print(Sensor3.Distance);
Serial.println(" cm");
}
}
}
In questo vi è anche l'uso di uno speaker in combo con un
DFPlayer_Mini_SKU_DFR0299-DFRobot
#include <AFMotor.h>
#include <SRF05.h>
AF_DCMotor m1(1);
AF_DCMotor m2(2);
AF_DCMotor m3(3);
AF_DCMotor m4(4);
int i = 0;
int j = 0;
char state;
int vSpeed = 255 ;
SRF05 Sensor1(23, 22, 200, 5);
SRF05 Sensor2(26, 27, 200, 5);
SRF05 Sensor3(51, 50, 200, 5);
int led1;
int led2;
int led3;
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
m1.run(RELEASE);
m2.run(RELEASE);
m3.run(RELEASE);
m4.run(RELEASE);
Sensor1.Unlock = true;
Sensor2.Unlock = true;
Sensor3.Unlock = true;
}
void loop() {
if ( Sensor1.Read() > -1 ) {
if ( Sensor1.Distance == 0 ) {
Serial.println("Out of range");
} else if (Sensor1.Distance <= 15) {
digitalWrite(led1, HIGH);
Serial.print("Dist1: ");
Serial.print(Sensor1.Distance);
Serial.println(" cm");
}
else if (Sensor1.Distance > 14) {
digitalWrite(led1, LOW);
Serial.print("Dist1: ");
Serial.print(Sensor1.Distance);
Serial.println(" cm");
}
}
if ( Sensor2.Read() > -1 ) {
if ( Sensor2.Distance == 0 ) {
Serial.println("Out of range");
} else if (Sensor2.Distance <= 15) {
digitalWrite(led2, HIGH);
Serial.print("Dist2: ");
Serial.print(Sensor2.Distance);
Serial.println(" cm");
}
else if (Sensor2.Distance > 14) {
digitalWrite(led2, LOW);
Serial.print("Dist2: ");
Serial.print(Sensor2.Distance);
Serial.println(" cm");
}
}
if ( Sensor3.Read() > -1 ) {
if ( Sensor3.Distance == 0 ) {
Serial.println("Out of range");
} else if (Sensor3.Distance <= 15) {
digitalWrite(led3, HIGH);
Serial.print("Dist3: ");
Serial.print(Sensor3.Distance);
Serial.println(" cm");
}
else if (Sensor3.Distance > 14) {
digitalWrite(led3, LOW);
Serial.print("Dist3: ");
Serial.print(Sensor3.Distance);
Serial.println(" cm");
}
}
m1.setSpeed(vSpeed);
m2.setSpeed(vSpeed);
m3.setSpeed(vSpeed);
m4.setSpeed(vSpeed);
if (Serial1.available() > 0) {
state = Serial1.read();
Serial.println(state);
}
/***********************Forward****************************/
//If state is equal with letter 'A', car will go forward!
if (state == 'A') {
m1.run(FORWARD);
m2.run(FORWARD);
m3.run(FORWARD);
m4.run(FORWARD);
}
/***********************Backward****************************/
//If state is equal with letter 'I', car will go backward
else if (state == 'I') {
m1.run(BACKWARD);
m2.run(BACKWARD);
m3.run(BACKWARD);
m4.run(BACKWARD);
}
/***************************Left*****************************/
//If state is equal with letter 'S', wheels will turn left
else if (state == 'S') {
m1.run(FORWARD);
m2.run(BACKWARD);
m3.run(BACKWARD);
m4.run(FORWARD);
}
/***************************Right*****************************/
//If state is equal with letter 'D', wheels will turn right
else if (state == 'D') {
m1.run(BACKWARD);
m2.run(FORWARD);
m3.run(FORWARD);
m4.run(BACKWARD);
}
/************************Bonus*****************************/
/************************Bonus*****************************/
/************************Bonus*****************************/
/**********************Bonus***************************/
/************************Bonus*****************************/
//If state is equal with letter 'S', stop the car
else if (state == 'P') {
m1.run(RELEASE);
m2.run(RELEASE);
m3.run(RELEASE);
m4.run(RELEASE);
}
}
In questo codice invece c'è in aggiunta il controllo dei motori tramite bt. Grazie ancora @docdoc