Будет ли работать

london
Offline
Зарегистрирован: 11.04.2021

Смысл создания данной темы в том, чтобы Наши гиганты мыслей подсказали:

будет данный скетч работать с заданными и описанными алгоритмами или нет

и дать свою оценку или же комментарии.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

london пишет:

будет данный скетч работать с заданными и описанными алгоритмами или нет

А может отец русской демократии не поленится запустить сам, посмотреть работает или нет и нам рассказать? Не? Камасутра не позволяет?

sadman41
Offline
Зарегистрирован: 19.10.2016

Скетч этот подобен хлопку одной ладони.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

Скетч этот подобен хлопку одной ладони.

А описанные алгоритмы? Чему подобны?

london
Offline
Зарегистрирован: 11.04.2021

Тема для того чтобы неопытный программер не запорол ардуинку

london
Offline
Зарегистрирован: 11.04.2021

или просто проблемы со скетчем

sadman41
Offline
Зарегистрирован: 19.10.2016

ЕвгенийП пишет:

sadman41 пишет:

Скетч этот подобен хлопку одной ладони.

А описанные алгоритмы? Чему подобны?

Будде, созерцающему несовершенство мира.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

sadman41 пишет:

созерцающему 

Всё суетитесь? (С) 

london
Offline
Зарегистрирован: 11.04.2021

У меня ситуация следующая: хочу сделать беспроводной звонок на ардуинке с применением модулей dfplayer mini и приёмника rx480e-4, который будет отправлять однократный сигнал на определённый пин. При нажатии на кнопу выбора мелодий будет воспроизводить следующую композицию в течении 60 секунд и если кнопка выбора не нажата больше сохраняет заданную мелодию. При повторном нажатии на кнопку выбора мелодий до достижения 6о сек должна произойти очередная смена мелодии. Дополнил скетч описанием.

Вот скетч:

#include <SoftwareSerial.h> // подключение библиотеки программного порта RX, TX
#include <DFPlayer_Mini_Mp3.h> // подключение библиотеки для работы с dfplayer mini
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
byte melody = 1; // переменная для номера мелодии
byte knopkaVybora = 1; // кнопка выбора мелодий на пин 1
byte knopkaZvonka = 2; // нажатие кнопки радиопередатчика на пин 2
unsigned long raznitsaVremeni = 0; // для хранения последнего времени миллес
byte drebezgPeriod = 20; // задержка для устранения дребезга контактов
unsigned long vremyaMelody = 60000; // воспроизведение мелодии как в основном цикле, так и в функции vyborMelody
void setup() {
  vyborMelody(); // создание функции vyborMelody для выбора мелодий
  mySoftwareSerial.begin(9600); // запуск порта с плеером
  mp3_set_serial (mySoftwareSerial); // открываем программный порт для dfplayer mini
  pinMode (knopkaVybora, INPUT_PULLUP); // кнопка выбора мелодий
  pinMode (knopkaZvonka, INPUT); // кнопка звонка
  mp3_set_volume(30); // уровень громкости 30
}

void loop() {
  unsigned long tekuscheeVremya = millis(); // сохраняем текущее время работы программы
  if ((tekuscheeVremya - raznitsaVremeni) >= drebezgPeriod && digitalRead(knopkaVybora) == LOW)  // организация задержки в 20 мс для устранения эффекта дребезга контактов
  {
  raznitsaVremeni = tekuscheeVremya; // присваиваем значение текущего времени
  vyborMelody(); // выполняем функцию выбора мелодий
  }
  if (knopkaZvonka) // если сигнал с приёмника от передатчика
  {if ((tekuscheeVremya - raznitsaVremeni) <= vremyaMelody) // проигрывать трек 60 секунд (переменная vremyaMelody)
  {
  mp3_play (melody); // функция библиотеки с включением выбраного файла из плеера
  }
  else {
  mp3_stop (); // если прошло 60 секунд остановить трек
  }
  }
}
void vyborMelody(){
  mp3_play (melody); // функция библиотеки с включением выбраного файла из плеера
  unsigned long tekuscheeVremya = millis(); // сохраняем текущее время работы программы
  if ((tekuscheeVremya - raznitsaVremeni) >= drebezgPeriod && digitalRead(knopkaVybora) == LOW) // организация задержки в 20 мс для устранения эффекта дребезга контактов
  {
  melody = melody++; // следующая мелодия
  if ((tekuscheeVremya - raznitsaVremeni) <= vremyaMelody) // проигрывать трек 60 секунд (переменная vremyaMelody)
  {
  mp3_play (melody); // функция библиотеки с включением выбраного файла из плеера
  }
  else {
  mp3_stop (); // если прошло 60 секунд остановить трек
  }
  }
}
london
Offline
Зарегистрирован: 11.04.2021

Это мой первый скетч после прочтения кучи литературы и просмотров роликов, так что не судите строго

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы уверены, что понимаете, что делаете в строке №40? Выглядит она как бред сивой кобылы, но формально так делать можно.

london пишет:

не судите строго

А вот этого я вообще не понимаю. Вы просите критики, но при этом запрещаете бред называть бредом? Тогда сами высказывайте мнение о коде.

london пишет:

Тема для того чтобы неопытный программер не запорол ардуинку

Т.е. чтобы навсегда остался неопытным. Ибо пока не запорет, опыт не появится.

Короче, приподнимаем ленивую задницу,запускаем и проверяем работает или нет. Мы это за Вас делать будем? С какого бодуна?

rkit
Offline
Зарегистрирован: 23.11.2016

Что-то запороть можно только накосячив со схемой, да и там это нелегко. Ардуино это учебный инструмент.

london
Offline
Зарегистрирован: 11.04.2021

Извините ЕвгенийП, не учёл Ваших замечаний и хотелось бы услышать ещё вашей критики насчёт этой строки, перевыложил скетч с более подробным описанием.