Запуск MP3 по значению фоторезистора
- Войдите на сайт для отправки комментариев
Вс, 15/07/2018 - 18:11
Добрый день, прошу помочь с кодом, что не так, mp3 не запускается (((
const int pinPhoto = A0;
#include <SoftwareSerial.h> // библиотека для для обмена данными
#include <DFPlayer_Mini_Mp3.h> // подключаем библиотеку для DFPlayer Mini
int raw = 0;
void setup() {
Serial.begin(9600);
pinMode( pinPhoto, INPUT );
mp3_set_serial(Serial); // включаем передачу данных с DFPlayer mini mp3
delay(1); // задержка в 1ms для установки громкости
mp3_set_volume(6); // устанавливаем громкость от 0 до 30
mp3_set_EQ(0); // устанавливаем эквалайзер от 0 до 5
}
void loop() {
raw = analogRead( pinPhoto );
// Serial.println( raw );
// delay(1000);
if( raw < 800) mp3_play(2);
}
Вставьте код нормально.
По отдельности работает?
Можешь привесто код, который
1. Просто заупскает плеер (без резистора)
2. Просто зажигает светодиод на 13-ом пине при нужной освещённости (без плеера).
Так можешь? И оно работает?
Приведи пожалуйста эти два кода только работающих!
И перевставь общий код правильно.
Отдельно mp3 работает
#include <SoftwareSerial.h> // библиотека для для обмена данными #include <DFPlayer_Mini_Mp3.h> // подключаем библиотеку для DFPlayer Mini void setup() // процедура setup { Serial.begin(9600); mp3_set_serial(Serial); // включаем передачу данных с DFPlayer mini mp3 delay(1); // задержка в 1ms для установки громкости mp3_set_volume(1); // устанавливаем громкость от 0 до 30 mp3_set_EQ(0); // устанавливаем эквалайзер от 0 до 5 } void loop() // процедура loop { mp3_play(2); // проигрываем файл mp3/0001.mp3 delay(5000); // задержка 5 секунд mp3_next(); // проигрываем следующий файл delay(5000); // задержка 5 секунд mp3_play(4); // проигрываем файл mp3/0004.mp3 delay(5000); // задержка 5 секунд mp3_prev(); // проигрываем предыдущий файл delay(5000); // задержка 5 секунди Отдельно скетч фоторезистор с монитором порта работает
const int pinPhoto = A0; #include <SoftwareSerial.h> // библиотека для для обмена данными #include <DFPlayer_Mini_Mp3.h> // подключаем библиотеку для DFPlayer Mini int raw = 0; void setup() { Serial.begin(9600); pinMode( pinPhoto, INPUT ); mp3_set_serial(Serial); // включаем передачу данных с DFPlayer mini mp3 delay(1); // задержка в 1ms для установки громкости mp3_set_volume(6); // устанавливаем громкость от 0 до 30 mp3_set_EQ(0); // устанавливаем эквалайзер от 0 до 5 } void loop() { raw = analogRead( pinPhoto ); // Serial.println( raw ); // delay(1000); if( raw < 800) mp3_play(2);Ну так скетч постоянно перезапускает mp3_play(). Задержку кто будет делать - Пушкин АС?
Заработало!, Спасибо. Подскажите команду для работы с диапазонами показайний фоторезистора, что бы в в одном инервале запускался один файл, в другом интервале другой. Заранее спасибо.
Команда называется if()
Спасибо, поможете с вопросом выше?
Это понятно.
Как поставить вместо меньше 800, диапазон, что то типа >100 и <200
А я что сделал?
Хорошо, подскажу поисковый запрос: "с++ if диапазон значений"
Как поставить вместо меньше 800, диапазон, что то типа >100 и <200
Есть такие страшно-секретные операции И и ИЛИ изучите внимательно, причём всё, а не только эти операции.
А потом так и пишите
x > 100 И x < 200
Вот и получится Ваш интервал.
const int pinPhoto = A0; #include <SoftwareSerial.h> // библиотека для для обмена данными #include <DFPlayer_Mini_Mp3.h> // подключаем библиотеку для DFPlayer Mini int raw = 0; void setup() { Serial.begin(9600); pinMode( pinPhoto, INPUT ); mp3_set_serial(Serial); // включаем передачу данных с DFPlayer mini mp3 delay(1); // задержка в 1ms для установки громкости mp3_set_volume(30); // устанавливаем громкость от 0 до 30 mp3_set_EQ(0); // устанавливаем эквалайзер от 0 до 5 } void loop() { raw = analogRead( pinPhoto ); // Serial.println( raw ); // delay(100); if( raw >= 11 && raw < 50) mp3_play(31); delay(1000); return 0; else if( raw >= 51 && raw < 150) mp3_play(32); delay(1000); return 1; else if( raw >= 151 && raw < 650) mp3_play(33); delay(1000); return 2; else return 0; if( raw >= 651 && raw < 800) mp3_play(34); delay(1000); }ругается что последнее else без значения if )))
Потомушто надо внимательно читать про фигурные скобки: http://arduino.ru/Reference/If
Или return-ы убрать.
Не "или", а "и". Поторопился жать "сохранить"
Благодарю
void loop() { ... return 0; ... return 1; ... return 2; ... if( raw >= 651 && raw < 800) mp3_play(34); delay(1000); }А Вас ни разу не смущает, что из функции, описанной как void, Вы пытаетесь вернуть какие-то значения. Да ещё и не во всех ветках?
Да, тут ошибка, уже убрал. Все заработало.