Добрый день и всех с Новым годом !!!
В начале попробую изложить свою идею, что я сделал и что не получается. Прошу сразу на меня не сетовать, так как я далёк от программирования ( я просто доктор ), но прилагаю усилия, что бы с ним (программированием ) подружится ,что не всегда получается . Так вот на счёт идеи. У меня в семье 3 девчонки (жена + 2 дочки ) так вот я заколебался приучать их гасить свет в комнатах. Так возникла идея создать напоминалку. Тех. Сторона проста, динамик, ардуинка нано, DFPlayer, одноканальный усилитель небольшой мощности ну и конечно фоторезистор + горстка сопротивлений, всё с алиэкспресс. И вот тут я впал в ступор, пришло время писать скетч. Взял типовой, ардуино + фоторезистор, всё прекрасно работает. DFPlayer ( библиотека DFPlayer_Mini_Mp3.h ) по отдельности команды хотя и не все, но выполняет ( не выполняет, быстрей всего из за моей криворукости). Склеил как мог код, работает, да вот только как то криво. Сама логика такова, человек входит в комнату, включает свет, срабатывает фоторезистор, загорается светодиод, проигрывается тир-линь тир-линь как в аэропорту и голосом сообщается, мол, что « вы включили свет, уходя не забудьте его выключит», затем проигрывает приятная не громкая музыка и через какое то время музыка становится тише или отключается и повторяется тир-линь тир-линь « вы включили свет, уходя не забудьте его выключит» и так до тех пор пока фоторезистор видит свет. Как только человек выключает свет приятный голос сообщает что мол ты молодец, свет выключен, и всё музыка и голосовые сообщения прекращаются до следующего включения света. С виду всё просто, но по складу гуманитарного ума не допру. Пример моего кода;
#include "DFRobotDFPlayerMini.h"
#include "Arduino.h"
const int pinPhoto = A0;
#include <SoftwareSerial.h> // библиотека для для обмена данными
#include <DFPlayer_Mini_Mp3.h> // подключаем библиотеку для DFPlayer Mini
int raw = 0;
int led = 13; //переменная с номером пина светодиода
void setup() {
Serial.begin(9600);
pinMode( pinPhoto, INPUT );
pinMode(led, OUTPUT); //указываем, что светодиод - выход
mp3_set_serial(Serial); // включаем передачу данных с DFPlayer mini mp3
delay(1); // задержка в 1ms для установки громкости
mp3_set_volume(20); // устанавливаем громкость от 0 до 30
mp3_set_EQ(5); // Эквалайзер 0~5 (0 - Normal, 1 - Pop, 2 - Rock, 3 - Jazz, 4 - Classic, 5 - Bass)
}
void loop()
{
raw = analogRead( pinPhoto );
boolean play_state = digitalRead(3);
if ( raw > 201)
{
digitalWrite(led, HIGH);
mp3_play ();
}
else if ( raw < 200)
{
digitalWrite(led, LOW);
mp3_pause();
}
}
Что в нём не нравится. 1) проигрывается только один музыкальный файл по кругу, а надо что бы все файлы в папке по очерёдке ( при чём свет выключили – пауза , ну на крайней случай стоп ).
2) начитался в инете, что можно как то запрограммировать что бы через какое то время включалась как бы реклама через BUST по моему ( а на самом деле можно вставить mp3 тир-линь тир-линь « вы включили свет, уходя не забудьте его выключить» ).
3) пробовал до mp3_pause(); ставить mp_play ( № файла); ( типо «ты молодец, свет выключен») так он по кругу его гонял и так и не отключался.
4) При команде mp3_pause(); или reset; или abort; ардуинка постоянно моргает светодиодом на самой платке, не знаю это нормально или нет?
Ну примерно так, заранее огромное спасибо, если возникнет у кого желание помочь мне или выскажет свои идеи или укажет мне на мои ошибки.