Topic: Вопрос по звуковому уведомлению
Что-то не пойму как мне включить звуковое уведомление в последней версии вашей программы.
You are not logged in. Please login or register.
RemoteXY community → Программирование → Вопрос по звуковому уведомлению
Что-то не пойму как мне включить звуковое уведомление в последней версии вашей программы.
Эта функция пока еще недоступна. Появится в самое ближайшее время.
Ребят в общем разобрался со звуками. Но хочется чтоб при нажатии на кнопку button_ - файл проигрывался полностью , а не пока кнопка нажата.. Как реализовать?
Ребят в общем разобрался со звуками. Но хочется чтоб при нажатии на кнопку button_ - файл проигрывался полностью , а не пока кнопка нажата.. Как реализовать?
Нет возможности проиграть файл и остановить в конце. Файл проигрывается по кругу пока установлена соответствующая переменная в структуре RemoteXY. Но вы можете запрограммировать проигрывание столько сколько нужно по времени даже после отпускания кнопки.
Код будет примерно такой:
uint32_t start_time = 0;
void loop () {
if (RemoteXY.sound_1 == 0) { // если мелодия в данный момент не играет
if (RemoteXY.button_1 != 0) { // если кнопка нажата
start_time = millis (); // запоминаем время когда начали проигрывание
RemoteXY.sound_1 = 2001; // и запускаем проигрывание
}
}
else { // иначе молодия играет
if (millis () - start_time >= 10000 ) { // если время проигрывания 10 секунд уже истекло
RemoteXY.sound_1 = 0; // останавливаем проигрывание мелодии в RemoteXY
}
}
}
pred3d wrote:Ребят в общем разобрался со звуками. Но хочется чтоб при нажатии на кнопку button_ - файл проигрывался полностью , а не пока кнопка нажата.. Как реализовать?
Нет возможности проиграть файл и остановить в конце. Файл проигрывается по кругу пока установлена соответствующая переменная в структуре RemoteXY. Но вы можете запрограммировать проигрывание столько сколько нужно по времени даже после отпускания кнопки.
Код будет примерно такой:uint32_t start_time = 0; void loop () { if (RemoteXY.sound_1 == 0) { // если мелодия в данный момент не играет if (RemoteXY.button_1 != 0) { // если кнопка нажата start_time = millis (); // запоминаем время когда начали проигрывание RemoteXY.sound_1 = 2001; // и запускаем проигрывание } } else { // иначе молодия играет if (millis () - start_time >= 10000 ) { // если время проигрывания 10 секунд уже истекло RemoteXY.sound_1 = 0; // останавливаем проигрывание мелодии в RemoteXY } } }
убрал старое управление звуком, записал кусок кода , который Вы привели - и теперь звук пытается воспроизводиться самостоятельно при включении контроллера. при чем всегда по разному - проиграет несколько милисекунд - пауза - пару секунд, проиграет почти секунду - пауза - несколько секунд - и так циклично..
не могли бы мне помочь с кодом , чтоб этот таймер отрабатывал как надо? а то в написании кода - я ноль.
что тут не так - подскажите !
/*
-- фары JEEP --
This source code of graphical user interface
has been generated automatically by RemoteXY editor.
To compile this code using RemoteXY library 2.4.3 or later version
download by link http://remotexy.com/en/library/
To connect using RemoteXY mobile app by link http://remotexy.com/en/download/
- for ANDROID 4.5.1 or later version;
- for iOS 1.4.1 or later version;
This source code is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
*/
//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__ESP8266_HARDSERIAL_POINT
#include <RemoteXY.h>
// настройки соединения
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 115200
#define REMOTEXY_WIFI_SSID "JEEP"
#define REMOTEXY_WIFI_PASSWORD "87654321"
#define REMOTEXY_SERVER_PORT 6377
// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,12,0,2,0,19,1,10,187,0,
1,0,4,37,12,12,2,31,208,146,
208,155,208,149,208,146,208,158,0,1,
0,17,23,12,12,2,31,208,146,208,
146,208,149,208,160,208,165,0,1,0,
17,50,12,12,2,31,208,146,208,157,
208,152,208,151,0,1,0,31,37,12,
12,2,31,208,146,208,159,208,160,208,
144,208,146,208,158,0,1,0,58,36,
12,12,2,31,208,146,208,155,208,149,
208,146,208,158,0,1,0,71,22,12,
12,2,31,208,146,208,146,208,149,208,
160,208,165,0,1,0,84,36,12,12,
2,31,208,146,208,159,208,160,208,144,
208,146,208,158,0,1,0,71,50,12,
12,2,31,208,146,208,157,208,152,208,
151,0,1,9,4,2,12,12,134,31,
208,146,208,154,208,155,0,1,9,30,
2,12,12,134,31,208,161,208,146,208,
149,208,162,0,1,9,57,2,12,12,
134,31,208,161,208,146,208,149,208,162,
0,1,9,83,2,12,12,134,31,208,
146,208,154,208,155,0,129,0,12,16,
21,6,17,208,155,208,149,208,146,208,
144,208,175,0,129,0,65,16,24,6,
17,208,159,208,160,208,144,208,146,208,
144,208,175,0,129,0,42,23,15,6,
1,74,69,69,80,0,69,1,5,3,
10,10 };
// структура определяет все переменные и события вашего интерфейса управления
struct {
// input variables
uint8_t button_1; // =1 если кнопка нажата, иначе =0
uint8_t button_2; // =1 если кнопка нажата, иначе =0
uint8_t button_3; // =1 если кнопка нажата, иначе =0
uint8_t button_4; // =1 если кнопка нажата, иначе =0
uint8_t button_5; // =1 если кнопка нажата, иначе =0
uint8_t button_6; // =1 если кнопка нажата, иначе =0
uint8_t button_7; // =1 если кнопка нажата, иначе =0
uint8_t button_8; // =1 если кнопка нажата, иначе =0
uint8_t button_9; // =1 если кнопка нажата, иначе =0
uint8_t button_10; // =1 если кнопка нажата, иначе =0
uint8_t button_11; // =1 если кнопка нажата, иначе =0
uint8_t button_12; // =1 если кнопка нажата, иначе =0
// output variables
int16_t sound_1; // =0 нет звука, иначе ID звука, для примера 1001, смотри список звуков в приложении
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define PIN_BUTTON_1 5
#define PIN_BUTTON_2 4
#define PIN_BUTTON_3 7
#define PIN_BUTTON_4 6
#define PIN_BUTTON_5 11
#define PIN_BUTTON_6 10
#define PIN_BUTTON_7 12
#define PIN_BUTTON_8 13
#define PIN_BUTTON_9 2
#define PIN_BUTTON_10 3
#define PIN_BUTTON_11 8
#define PIN_BUTTON_12 9
void setup()
{
RemoteXY_Init ();
pinMode (PIN_BUTTON_1, OUTPUT);
pinMode (PIN_BUTTON_2, OUTPUT);
pinMode (PIN_BUTTON_3, OUTPUT);
pinMode (PIN_BUTTON_4, OUTPUT);
pinMode (PIN_BUTTON_5, OUTPUT);
pinMode (PIN_BUTTON_6, OUTPUT);
pinMode (PIN_BUTTON_7, OUTPUT);
pinMode (PIN_BUTTON_8, OUTPUT);
pinMode (PIN_BUTTON_9, OUTPUT);
pinMode (PIN_BUTTON_10, OUTPUT);
pinMode (PIN_BUTTON_11, OUTPUT);
pinMode (PIN_BUTTON_12, OUTPUT);
// TODO you setup code
}
void loop()
{
RemoteXY_Handler ();
digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_2, (RemoteXY.button_2==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_3, (RemoteXY.button_3==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_4, (RemoteXY.button_4==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_5, (RemoteXY.button_5==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_6, (RemoteXY.button_6==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_7, (RemoteXY.button_7==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_8, (RemoteXY.button_8==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_9, (RemoteXY.button_9==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_10, (RemoteXY.button_10==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_11, (RemoteXY.button_11==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_12, (RemoteXY.button_12==0)?LOW:HIGH);
uint32_t start_time = 0;
if (RemoteXY.sound_1 == 0) { // если мелодия в данный момент не играет
if (RemoteXY.button_1 != 0) { // если кнопка нажата
start_time = millis (); // запоминаем время когда начали проигрывание
RemoteXY.sound_1 = 1; // и запускаем проигрывание
}
}
else { // иначе молодия играет
if (millis () - start_time >= 4000 ) { // если время проигрывания 4 секунды уже истекло
RemoteXY.sound_1 = 0; // останавливаем проигрывание мелодии в RemoteXY
}
}
}
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
// не используйте функцию delay()
Hello, try this:
void loop()
{
RemoteXY_Handler ();
static uint32_t start_time = 0;
if (RemoteXY.sound_1 == 0) { // если мелодия в данный момент не играет
if (RemoteXY.button_1 != 0) { // если кнопка нажата
start_time = millis (); // запоминаем время когда начали проигрывание
RemoteXY.sound_1 = 1; // и запускаем проигрывание
}
}
else { // иначе молодия играет
if (millis () - start_time >= 4000 ) { // если время проигрывания 4 секунды уже истекло
RemoteXY.sound_1 = 0; // останавливаем проигрывание мелодии в RemoteXY
}
}
}
Note the "static" keyword to the variable start_time. It means that this variable will be initialized only once, kind of like a global variable.
If you need very precise timings like for a music sequencer, then RemoteXY is not the solution because there will always be latency between your controller and your smartphone...
Да, действительно. Вы передвинули объявление переменной start_time в тело цикла loop.
В моем примере переменная объявляется глобальной.
RemoteXY community → Программирование → Вопрос по звуковому уведомлению
Powered by PunBB, supported by Informer Technologies, Inc.