разрабатываю охранную систему на базе ардуино , и столкнулся со следующими трудностями:
мне нужно чтобы от датчика вибрации одновременно сработало реле (3 раза) и DFPlayer mini воспроизвел один аудиофайл
я написал подобный скетч
#include <SoftwareSerial.h> // библиотека для для обмена данными
#include <DFPlayer_Mini_Mp3.h> // подключаем библиотеку для DFPlayer Mini
#define PIN_REL 4
#define PIN_SENSOR 7 // Пин, ккотормоу присоединен датчик вибрации
void setup() {
Serial.begin(9600);
mp3_set_serial(Serial); // включаем передачу данных с DFPlayer mini mp3
delay(1); // задержка в 1ms для установки громкости
mp3_set_volume(15); // устанавливаем громкость от 0 до 30
mp3_set_EQ(0); // устанавливаем эквалайзер от 0 до 5
pinMode(PIN_REL, OUTPUT);
}
void loop() {
{
digitalWrite(PIN_REL, HIGH);
int val = digitalRead(PIN_SENSOR); // Считваем значение с датчика
int var = 0;
if(val==1){
{mp3_play(1); // проигрываем файл mp3/0001.mp3
delay(0); // задержка
mp3_prev(); // проигрываем предыдущий файл
delay(0); // задержка
}
while(var<3){ var++;
{digitalWrite(PIN_REL, LOW); // реле включено
delay(1000);
digitalWrite(PIN_REL, HIGH); // реле выключено
delay(1000); } }
}}
}
проблема в том что при подаче питания включается только реле 3 раза, а аудиофайл не воспроизводится или воспроизводится редко не понятно от чего. Я догадываюсь что тут нужно решить вопрос с многозадачностью но как? прошу помочь и подсказать.
мне нужно чтобы от датчика вибрации одновременно сработало реле (3 раза) и DFPlayer mini воспроизвел один аудиофайл
я написал подобный скетч
#include <SoftwareSerial.h> // библиотека для для обмена данными
#include <DFPlayer_Mini_Mp3.h> // подключаем библиотеку для DFPlayer Mini
#define PIN_REL 4
#define PIN_SENSOR 7 // Пин, ккотормоу присоединен датчик вибрации
void setup() {
Serial.begin(9600);
mp3_set_serial(Serial); // включаем передачу данных с DFPlayer mini mp3
delay(1); // задержка в 1ms для установки громкости
mp3_set_volume(15); // устанавливаем громкость от 0 до 30
mp3_set_EQ(0); // устанавливаем эквалайзер от 0 до 5
pinMode(PIN_REL, OUTPUT);
}
void loop() {
{
digitalWrite(PIN_REL, HIGH);
int val = digitalRead(PIN_SENSOR); // Считваем значение с датчика
int var = 0;
if(val==1){
{mp3_play(1); // проигрываем файл mp3/0001.mp3
delay(0); // задержка
mp3_prev(); // проигрываем предыдущий файл
delay(0); // задержка
}
while(var<3){ var++;
{digitalWrite(PIN_REL, LOW); // реле включено
delay(1000);
digitalWrite(PIN_REL, HIGH); // реле выключено
delay(1000); } }
}}
}
проблема в том что при подаче питания включается только реле 3 раза, а аудиофайл не воспроизводится или воспроизводится редко не понятно от чего. Я догадываюсь что тут нужно решить вопрос с многозадачностью но как? прошу помочь и подсказать.
