Новости:

Форум Infotex WeaponMod

Тема: Ардуино , напоминалка для слабых памятью  (Прочитано 6829 раз)

Orlan 28 Декабря 2019, 11:01:35

  • Гость
Добрый день и всех с Новым годом !!!
В начале попробую изложить свою идею, что я сделал и что не получается. Прошу сразу на меня не сетовать, так как я далёк от программирования ( я просто доктор ), но прилагаю усилия, что бы с ним  (программированием )  подружится ,что не всегда получается . Так вот на счёт идеи. У меня в семье 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; ардуинка постоянно моргает светодиодом на самой платке, не знаю это нормально или нет?
Ну примерно так, заранее огромное спасибо, если возникнет у кого желание помочь мне или выскажет свои идеи или укажет мне на мои ошибки.

Оффлайн Koshak 04 Января 2020, 19:29:43 (#1)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2754
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Я конечно такими вещами не заморачивался, надо подумать :-)
У кошки четыре ноги: вход, выход, земля и питание

Orlan 06 Января 2020, 08:22:41 (#2)

  • Гость
ВСЕХ С РОЖДЕСТВОМ !!!!! Буду очень признателен. На праздниках руки не доходили, чуть попозже выложу ещё скетч, но я его ещё не проверял в деле. Всем огромного здоровья!