Добрый день. Есть Arduino WEMOS d1 мини есть датчик дистанции и есть плеер DFPlayer-Mini. Хочу собрать внучку шкатулку со сказками и повесить ему в коечку. Нашел на просторах интернета скетч правда он для двух HC-SR04 но это не главное главное что он встал на мою ардуинку. Но есть проблема он воспроизводит только первый файл останавливается не продолжает воспроизводить следующий файл. файлы менял местами все равно первый проигрывает и стоп. Может кто нибудь помочь в редактирование скетча я сам в програмировании полный 0. Надо что бы файлы воспроизводились в случайном порядке при запуске и не останавливались после воспроизведения одного файла. Файлы у меня на SD карте в папке mp3 и имеют обозначения с 0001.mp3 и до 0010.mp3. Короче 10 коротких сказок записал звук выставил чтобы тихо читали. Если есть желающие в помощи я выложу скетч. Заранее благодарю всех кто отзовется. С уважением Владимир.
так выкладывай, может кто и отзовётся
купи готовое
// calling pre written software libraries - use of simplified functions
// MP3 player by DFRobot – from wiki.dfrobot
#include <DFRobotDFPlayerMini.h>
// for using the Ultrasonic sensor
#include <NewPing.h>
// for communicating with the DFPlayer. creates two virtual serial ports for TX/RX. as standard serial port is used by serial monitor for debugging
#include <SoftwareSerial.h>
// defines pin numbers and locations (on Arduino) as constant variables for communicating with the two ultrasonic sensors (_0, _1)
const int trigPin_0 = D6;
const int echoPin_0 = D7;
const int trigPin_1 = D6;
const int echoPin_1 = D7;
// Use pin 2 and 3 to communicate with DFPlayer Mini, set up as serial ports with softwareSerial
static const uint8_t PIN_MP3_TX = D2; // settings pin, connects to module's RX(!)
static const uint8_t PIN_MP3_RX = D3; // setting pin, connects to module's TX(!)
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX); // sonnceting pins to softwareSerial
// Create the Player object - easier to refer to
DFRobotDFPlayerMini player;
// defines variables
long duration_0; // for sensor_0, used for measuring time for echo pin (0) to receive trigger pings
int distance_0; // used for measured distance
long duration_1; // for sensor_1
int distance_1; // for sensor_1
bool isPlaying; // Boolean variable for controlling/ indicating play/ stop
// this block runs once
void setup()
{
pinMode(trigPin_0, OUTPUT); // sets the trigPin_0 as an Output
pinMode(echoPin_0, INPUT); // sets the echoPin_0 as an Input
pinMode(trigPin_1, OUTPUT); // sets the trigPin_1 as an Output
pinMode(echoPin_1, INPUT); // sets the echoPin_1 as an Input
Serial.begin(9600); // starts the serial communication via physical
softwareSerial.begin(9600); // starts virtual serial port for DFPlayer Mini
if (player.begin(softwareSerial)) // Start communication with DFPlayer Mini
{
Serial.println("OK");
}
else if (!player.begin(softwareSerial)) // if serial communication failes
{
Serial.println(F("Unable to begin:")); // print msg
Serial.println(F("1.Please recheck the connection!")); // print msg
Serial.println(F("2.Please insert the SD card!")); // print msg
while(true); // do that until no change
}
Serial.println(F("DFPlayer Mini online.")); // print status msg
// Set volume (0 to 30).
player.volume(18);
player.stop(); // reset MP3 player
isPlaying = false; // switch isPlaying bool int to false
player.EQ(DFPLAYER_EQ_BASS); // set EQ to Davie504
}
// setting up a scanning procedure function for sensor_0, which can be called up on, named as "scan_0"
void scan_0 ()
{
// Clears the trigPin
digitalWrite(trigPin_0, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin_0, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin_0, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration_0 = pulseIn(echoPin_0, HIGH);
// Calculating the distance
distance_0 = duration_0*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance_0: ");
Serial.println(distance_0);
}
// setting up a scanning procedure function for sensor_0, which can be called up on, named as "scan_1"
void scan_1 ()
{
// Clears the trigPin
digitalWrite(trigPin_1, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin_1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin_1, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration_1 = pulseIn(echoPin_1, HIGH);
// Calculating the distance
distance_1 = duration_1*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance_1: ");
Serial.println(distance_1);
}
// this block will repeat infinitely
void loop ()
{
scan_0(); // runs ultrasonic sensor_0 scanning procedure
delay(100); // delay of 100ms
if ((distance_0 < 50) && (isPlaying == false)) // checks for two conditions at the same time to execute 1. distance is less than 50cm 2. player is not playing
{
player.play(1); // start play
isPlaying = true; // switch isPlaying indicator to true
delay(100); // delay for 100 microseconds
}
scan_1(); // runs ultrasonic sensor_1 scanning procedure
delay(100); // delay of 100ms
if ((distance_1 < 50) && (isPlaying == false)) // checks for two conditions at the same time to execute 1. distance is less than 50cm 2. player is not playing
{
player.play(1); // start play
isPlaying = true; // switch isPlaying indicator to true
delay(100); // delay for 100 microseconds
}
if ((distance_1 > 50) && (distance_0 > 50) && (isPlaying == true)) // checks for three conditions at the same time to execute 1. distance is more than 50cm on sensor_0 2. distance is more than 50cm on sensor_0 3. player is playing
{
player.stop(); // stops play
isPlaying = false; // swithces isPlaying Boolean indicator to false
delay(100); // delay for 100 microseconds
}
}
Поменять на player.play(random(10)+1);
где 10 - это число файлов на карте…
Зачем просто плееру такой датчик ???
Мой внук в обед и вечером ложится спать залезает в коечку и просит меня рассказать ему сказки. А я хочу что бы он сам шел в кроватку слушал сказки и засыпал. для этого и датчик как залез в кроватку и сказки начинали проигрывать
не сработало
Там в нескольких местах есть такая команда.
Попробуйте ещё
player.randomAll();
Ура все пошло спасибо
Теперь бы еще сделать чтоб всегда не с первого файла начиналось а со случайного
У меня первый файл колобок а второй репка он так и будет их слушать а до третьго не дождется
и ему быстро они надоедят
еще одна проблема при подключении питания сильно громко говорит а я хочу выключатель поставить чтобы выключать когда заснет
Из ЖЖ стянул. Про колобка.
Интересная интерпретация сказки “Колобок”
— Я тоже не понимаю сказу про колобка.
— Это сказка про взросление. Парень уходит из родительского дома, успешно преодолевает жизненные этапы (социализация — заяц, работа — волк, бытовые трудности — медведь), а потом встречает женщину, которая обманом завлекает его и уничтожает как личность.
— Но почему родители хотели его сожрать?
— Гиперопека и нежелание воспринимать ребенка как личность, что так же рано или поздно приведет к её уничтожению.
Тяжело наверно жить с такими мыслями вам наверно в детстве сказок не рассказывали
Ваш внук хочет живого человеческого общения. А Вы вместо этого хотите, чтобы он общался с магнитофоном.
И - да, аморальные желания тоже имеют право на существование. Только на этом форуме они осуществляются в разделе “Ищу исполнителя” за деньги.
Мы целый день общаемся с ним в этом нет проблем а вот когда идти спать в обед или вечером целая трагедия не хочет ложится я вот и подумал может со сказками будет идти спать без слез. родители они засунули в кровать и все поплачет и заснет говорят а у деда сердце мягкое ему его жалко но если я нахожусь с ним рядом он не спит вот и идешь на хитрости.
Деду 70 лет а младшему внуку еще нету и 3х вод дед и суетится возле него.
Сын мой в два с половиной года уже знал, что будить нас можно, но не нужно. Кроме не очень меткого броска тапка не выйдет ничего! И сам лез в холодильник и смешивал хлопья с кефиром и даже, в меру детской неуклюжести, вытирал лужу кефира под холодильником.
И с двух лет он имел свою комнату и взрослого размера кровать, на которой спал тогда. когда сам этого хотел.
Но когда он вырос, а сейчас ему почти 34, то не стал делать как мы - родители, а избаловал свою дочь вот таким излишним вниманием так, что она им на голову села! Не надо так делать! Очень это портит детей.