#1 2018-01-04 11:30:15

Maxim
Учасник
Зареєстрований: 2018-01-04
Повідомлень: 2

Задача для ПРОФИ

Здравствуйте гуру ардуино!
Пишет вам поклонник и новичок ардуино!

Ниже приведен Скетч (доработанный под свои нужды) СПАСИБО MaksVV из другого форума, который необходимо доработать.
Суть его работы такая:
-пользователь нажимает на дисплее NEXTION кнопку СТАРТ, включается музыка и пины 8,10,12 (время их работы 25 мин)
-пользователь нажимает на дисплее NEXTION кнопку КВАРЦ, проигрывается сообщение "включен кварц" и пины 11 (время их работы 15 мин)
-пользователь нажимает на дисплее NEXTION кнопку СТОП,  выключаются все пины и включается только пин 9 (время не ограничено).

ВОПРОС:
- как передать в NEXTION время работы, чтобы было видно период работы (25 и 15 мин)?
- как сделать, так чтобы при нажатии на кнопку СТАРТ проиграло сообщение "СЕАНС НАЧАТ" а затем начала играть музыка рандомом непрерывно (трек за треком)
- как сделать, так чтобы при нажатии на кнопку КВАРЦ проиграло сообщение "ВКЛЮЧЕН КВАРЦ".
- как сделать, так чтобы при нажатии на кнопку СТОП проиграло сообщение "СЕАНС ОКОНЧЕН".
- и последнее, сейчас работает так
/////////////////////////////////////////////////////////////КНОПКА START//////////////////////////////////////////////////////////////
  String message = myNextion.listen(); //check for message
   if(message == "65 0 3 1 ffff ffff ffff")
{
    timer = millis();            // как бы сбрасываем таймер на ноль
    timerenabled = 1;            // включаем таймер
    digitalWrite(RELAY9, 1);  //выключаем реле
    digitalWrite(RELAY11, 1);  //выключаем реле
    digitalWrite(RELAY8, 0);      // ну и включаем реле
    digitalWrite(RELAY10, 0);      // ну и включаем реле
    digitalWrite(RELAY12, 0);      // ну и включаем реле
    mp3_play (); // запускаем трек
    delay (100);
    mp3_random_play ();  // Даем команду проигрывать треки в случайной последовательности
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ПОЧЕМУ ПРИ КАЖДОМ НАЖАТИИ ИГРАТЬ НАЧИНАЕТ ВСЕ ТАКЖЕ С ПЕРВОГО ТРЕКА, ХОТЯ СТОИТ РАНДОМ??????



СКЕТЧ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define RELAY8 8          // диспригатор        220
#define RELAY9 9          // ВЫХОД и вытяжка    12 и 220
#define RELAY10 10        // Конвекционные вентиляторы 12
#define RELAY11 11        // КВАРЦ     220
#define RELAY12 12        // ИОНИЗАТОР 220

#include <SoftwareSerial.h>
#include <Nextion.h>
#include <DFPlayer_Mini_Mp3.h>

SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino
Nextion myNextion(nextion, 9600);

int interval = 25;      // время работы таймера реле 8, 10, 12, мин
int interval2 = 15;      // время работы таймера реле 11, мин
unsigned long timer =0; // переменная для работы таймера
unsigned long timer2 =0; // переменная для работы таймера
bool timerenabled = 0;  // флаг включен таймер или нет
bool timerenabled2 = 0;  // флаг включен таймер или нет

int min_timer = 0;      // минуты таймера   
int min_timer2 = 0;      // минуты таймера   
int sec_timer = 0;      // секунды таймера 
int sec_timer2 = 0;      // секунды таймера
 
int prevsec_timer = 0;  // последнее значение секунд
int prevsec_timer2 = 0;  // последнее значение секунд


void setup()
{
Serial.begin(9600);

  mp3_set_serial (Serial);    //set Serial for DFPlayer-mini mp3 module
  delay (100);
  mp3_set_volume (25);
  delay (100);

pinMode     (RELAY8, OUTPUT);
digitalWrite(RELAY8, HIGH  );
pinMode     (RELAY9, OUTPUT);
digitalWrite(RELAY9, HIGH  );
pinMode     (RELAY10, OUTPUT);
digitalWrite(RELAY10, HIGH  );
pinMode     (RELAY11, OUTPUT);
digitalWrite(RELAY11, HIGH  );
pinMode     (RELAY12, OUTPUT);
digitalWrite(RELAY12, HIGH  );
  myNextion.init();
}

void loop() {
/////////////////////////////////////////////////////////////КНОПКА START//////////////////////////////////////////////////////////////
  String message = myNextion.listen(); //check for message
   if(message == "65 0 3 1 ffff ffff ffff")
{
    timer = millis();            // как бы сбрасываем таймер на ноль
    timerenabled = 1;            // включаем таймер
    digitalWrite(RELAY9, 1);  //выключаем реле
    digitalWrite(RELAY11, 1);  //выключаем реле
    digitalWrite(RELAY8, 0);      // ну и включаем реле
    digitalWrite(RELAY10, 0);      // ну и включаем реле
    digitalWrite(RELAY12, 0);      // ну и включаем реле
    mp3_play (); // запускаем трек
    delay (100);
    mp3_random_play ();  // Даем команду проигрывать треки в случайной последовательности

}
if (timerenabled && millis()-timer> (unsigned long) interval*60000UL)  //если таймер был включен и он кончился
{  timerenabled = 0 ;       // выключаем таймер
  digitalWrite(RELAY8, 1);  //выключаем реле
  digitalWrite(RELAY10, 1);  //выключаем реле
  digitalWrite(RELAY11, 1);  //выключаем реле
  digitalWrite(RELAY12, 1);  //выключаем реле
  digitalWrite(RELAY9, 0);  //включаем реле
  mp3_stop ();
  delay (100);
}
//////////////////////////////////////////////////////////////END//////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////КНОПКА QVARC//////////////////////////////////////////////////////////////

  if(message == "65 0 4 1 ffff ffff ffff")
{
    timer = millis();            // как бы сбрасываем таймер на ноль
    timerenabled = 1;            // включаем таймер
digitalWrite(RELAY8, 1);  //выключаем реле
digitalWrite(RELAY9, 1);  //выключаем реле
digitalWrite(RELAY10, 1);  //выключаем реле
digitalWrite(RELAY12, 1);  //выключаем реле
digitalWrite(RELAY11, 0);  // ну и включаем реле
}
if (timerenabled2 && millis()-timer2> (unsigned long) interval2*60000UL)  //если таймер был включен и он кончился
{  timerenabled2 = 0 ;       // выключаем таймер
  digitalWrite(RELAY11, 1);  //выключаем реле
  digitalWrite(RELAY9, 0);  //включаем реле
}
//////////////////////////////////////////////////////////////END//////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////КНОПКА STOP//////////////////////////////////////////////////////////////

  if(message == "65 0 5 1 ffff ffff ffff")
{   
    timer = millis();            // как бы сбрасываем таймер на ноль
    timerenabled = 0;            // выключаем таймер
    timer2 = millis();            // как бы сбрасываем таймер на ноль
    timerenabled2 = 0;            // выключаем таймер
    digitalWrite(RELAY8, 1);      // ну и выключаем реле
    digitalWrite(RELAY9, 0);      // ну и выключаем реле
    digitalWrite(RELAY10, 1);      // ну и выключаем реле
    digitalWrite(RELAY11, 1);      // ну и выключаем реле
    digitalWrite(RELAY12, 1);      // ну и выключаем реле
    mp3_stop ();
    delay (100);
}
//////////////////////////////////////////////////////////////END//////////////////////////////////////////////////////////////
//****************************РУЧНОЕ УПРАВЛЕНИЕ*****************************************
if(message == "1")
{
digitalWrite (RELAY8, LOW);
}
if(message == "2")
{
digitalWrite (RELAY8, HIGH);
}
if(message == "3")
{
digitalWrite (RELAY9, LOW);
}
if(message == "4")
{
digitalWrite (RELAY9, HIGH);
}
if(message == "5")
{
digitalWrite (RELAY10, LOW);
}
if(message == "6")
{
digitalWrite (RELAY10, HIGH);
}
if(message == "7")
{
digitalWrite (RELAY11, LOW);
}
if(message == "8")
{
digitalWrite (RELAY11, HIGH);
}
if(message == "9")
{
digitalWrite (RELAY12, LOW);
}
if(message == "10")
{
digitalWrite (RELAY12, HIGH);
}

  if(message != ""){ // if a message is received...
    Serial.println(message); //...print it out
  }

  }

Остання редакція Maxim (2018-01-04 11:56:07)

Неактивний

#2 2018-01-04 12:19:20

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Задача для ПРОФИ

1 - " Ниже приведен Скетч (доработанный под свои нужды) СПАСИБО MaksVV из другого форума, который необходимо доработать. "
Почему MaksVV из другого форума не захотел помочь еще и доработать ?

2 - научитесь вставлять код в сообщение !!!

Неактивний

#3 2018-01-04 13:37:36

maksim
Гість

Re: Задача для ПРОФИ

СОВЕТ ХОРОШИЙ, ТАМ Я БЫЛ МНЕ НЕ ХВАТИЛО опыта или мозгов))) ПОНЯТЬ ОТ ТУДА ИНФУ((((((((

#4 2018-01-05 17:10:58

Гoсть
Гість

Re: Задача для ПРОФИ

Культуры общения тебе там тоже не хватило.

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму