2016-07-25 1 views
0

Функциональность:видео и аудио перезапускается, когда условие не выполняется

Я использовал Arduino, чтобы ощутить близость пользователя. И когда будет обнаружена близость, ардуино обнаружит и вернет «1». Задержка составляет 4 секунды: это означает, что до 4 "1 секунды раньше, воспроизведение видео будет перезапущено и будет сопровождаться звуком видео.

Когда пользователь уходит, ардуино обнаружит и вернет «0». Будет задержка в 3 секунды: значение 3 "0", пока звук видео не будет отключен, а видео продолжит воспроизведение. Между тем, для дополнительного пользовательского опыта, даже если пользователь существует, но происходит с таким же искажением, что ардуино обнаруживает и возвращает «0», видео со звуком предполагается продолжать без функции остановки звука, если нет возврата 3 "0" с.

Выпуск:

мне удалось достичь следующих:

1.) видео повторы со звуком, когда Arduino возвращается 4 "1" 2.) звук немой, но видео будет продолжать играть, когда Arduino возвращается 3 «0» s

Однако это вопрос, который я в настоящее время сталкивается:

1.) Я не могу получить видео с аудио, чтобы продолжить воспроизведение, когда arduino возвращает хотя бы «0» или «2» 0 до состояния 3 «0». Видео с аудио будет прервано, и когда пользователь все еще находится в непосредственной близости, видео перезапустится с аудио.

Это не поведение, которое я ищу. Правильное поведение потока:

  • Пользователь проксимити почувствовал: Arduino возвращается 4 "1" s, видео будет перезапущен с аудио. Когда пользователь fidgets, arduino возвращает временное «0», видео с аудио по-прежнему будет продолжать воспроизводиться. Однако, когда пользователь покидает, Arduino возвращается 3 "0", звук будет отключить звук во время видео будет продолжать играть

Код:

function getFeedback() { 
 
    //To call on ajac getFeedBack 
 
    ajax_getArduinoFeedback("flash.do", "formType=getArduinoFeedback"); 
 
} 
 

 
//To stop interrupt method and reset fields to original 
 
function stop_interrupt() { 
 
    isInterrupt = false; 
 
    triggerFeedback = "0"; 
 

 
    setTimeout(function() { 
 
    $("#M_Video").jPlayer("mute", true); 
 
    }, 3000); 
 
    //console.log("stop_interrupt triggerFeedback: " + triggerFeedback);   
 
} 
 

 
//Interrupt method to call on refresh method 
 
function show_interrupt(flag) { 
 
    //Set Timeout for flag to be equal to "1" 
 
    isInterrupt = true; 
 
    isPlay = false; 
 
    triggerFeedback = flag; 
 

 
    if (flag == "1") { 
 

 
    Flag = setTimeout(function() { 
 

 

 
     if (triggerFeedback == "1") { 
 
     //Display digital alert 
 

 
     console.log("4 seconds later"); 
 
     console.log("flag: " + triggerFeedback); 
 

 
     //Clear Timeout value of flag="1" when current flag 
 
     clearTimeout(Flag); 
 

 
     //Clear Timeout value of flag ="0" 
 
     clearTimeout(Absent); 
 

 
     if (isPlay == false) { 
 
      isPlay = true; 
 
      $('#smell_background').fadeIn({ 
 
      duration: slideDuration, 
 
      queue: false, 
 
      complete: function() { 
 

 
       $('#smell_text').fadeIn({ 
 
       duration: slideDuration, 
 
       queue: false 
 
       }); 
 
       //Smell-Image to fadeOut after delay 
 
       setTimeout(function() { 
 
       $('#smell_text').fadeOut({ 
 
        duration: slideDuration, 
 
        queue: false 
 
       }); 
 
       setTimeout(function() { 
 
        $('#smell_background').fadeOut({ 
 
        duration: slideDuration, 
 
        queue: false 
 
        }); 
 
       }, 900); 
 
       }, 4000); 
 
      } 
 
      }); 
 

 
      setTimeout(function() { 
 
      //Restart video 
 

 
      $("#M_Video").hide(); 
 

 
      $("#M_Video").jPlayer("setMedia", { 
 
       m4v: "lib/video/video_03.mp4" 
 
      }).jPlayer("play"); 
 
      $("#M_Video").jPlayer("mute", false); 
 

 
      setTimeout(function() { 
 
       $("#M_Video").fadeIn(); 
 
      }, 2500); 
 
      console.log("videoList:" + videoList[videoIndex]); 
 
      }, 5000); 
 
     } 
 
     } 
 
    }, 2000); 
 
    } else if (flag == "0") { 
 

 
    isPlay = false; 
 
    clearTimeout(Flag); 
 
    console.log(isPlay + "1"); 
 

 
    Absent = setTimeout(function() { 
 
     if (triggerFeedback == "0") { 
 
     clearTimeout(Flag); 
 
     isPlay = false; 
 
     console.log("flag: " + triggerFeedback); 
 

 
     console.log(isPlay + "2"); 
 
     if (isPlay == false) { 
 
      console.log(isPlay + "3"); 
 
      stop_interrupt(); 
 
     } 
 
     } 
 
    }, 5000); 
 

 
    } 
 
} 
 

 
//Method call when data from Arduino is "1" 
 
function interrupt(flag) { 
 
    console.log("isInterrupt : " + flag); 
 
    //location.reload(); 
 
    if (isInterrupt == false) { 
 

 
    if (triggerFeedback != flag) { 
 
     if (triggerFeedback == "1" && flag == "0") { 
 
     //stop_interrupt(); 
 
     show_interrupt(flag); 
 
     } else { 
 
     if (flag != "0") { 
 
      //console.log("1"); 
 
      show_interrupt(flag); 
 
     } 
 
     } 
 
    } else { 
 
     //console.log("2"); 
 
     show_interrupt(flag); 
 
    } 
 
    } else { 
 
    if (triggerFeedback != flag) { 
 
     if (triggerFeedback == "1" && flag == "0") { 
 
     //stop_interrupt(); 
 
     show_interrupt(flag); 
 
     } else { 
 
     if (flag != "0") { 
 
      //console.log("3"); 
 
      show_interrupt(flag); 
 
     } 
 
     } 
 
    } 
 
    } 
 
}
<body oncontextmenu="return false"> 
 

 
    <div id="M_Start" align="center" class="M"> 
 

 
    <!--Video Div--> 
 
    <div id="M_Video" style="position:absolute; z-index:99; left:-80px; top:0px;"></div> 
 
    <!--Alert background--> 
 
    <img id="smell_background" class="Smell_Cask" src="lib/img/Smell_Background.png" /> 
 

 
    <!--Alert Text--> 
 
    <img id="smell_text" class="Smell_Cask_Text" src="lib/img/Smell_Text.png" /> 
 

 
    </div> 
 

 
</body>

// Arduino Код:

const int trigPin = 8; 
const int echoPin = 9; 
//Motor-Fan connected to arduino pin number 
const int FanPin = 5; 

long duration; 
int distance; 

void setup() 
{ 
pinMode (FanPin , OUTPUT) ; // Set pinMode for FanPin as OUTPUT, display 
pinMode(trigPin, OUTPUT); 
pinMode(echoPin, INPUT); 
Serial.begin(9600); // Open serial port to communicate with the Ultrasaonic Sensor 
} 

void loop() 
{ 

digitalWrite(trigPin, LOW); 
delayMicroseconds(2); 

digitalWrite(trigPin, HIGH); 
delayMicroseconds(10); 
digitalWrite(trigPin, LOW); 

duration = pulseIn(echoPin, HIGH); 

distance= duration*0.034/2; 

if(distance < 20) 
{ 
    //delay a time of 2 seconds before writing Print of '1' and set Motor fan to HIGH 
    delay(1000); 

    // Write a pin of HIGH 
    Serial.println("1"); 
    //Set motor-fan to operate 
    digitalWrite (FanPin, HIGH); 
} 
else 
{ 
    Serial.println("0"); 
    //Set motor-fan to stop 
    digitalWrite (FanPin, LOW); 
} 
delay(100); 
} 

Что я совершил неправильно или отсутствует? Пожалуйста помоги.

+0

Я скучаю по точке, код отсутствует, что делает javascript с ардуино, какое видео, какой звук, вы вопрос неправильно написано –

+0

@MarkoMackic, извините за это. Я загрузил коды.Я использовал arduino для запуска функции в javascript через вызов ajax. – Luke

+0

Снова этот вопрос не задан должным образом, что js имеет отношение к arduino, что такое взаимодействие, я вижу только последовательный порт в качестве источника связи, как вы читаете sp, что делает ajax с этим, какой язык есть что. вы код почти не читается, комментарии неясны, как вы читаете ультразвуковой датчик (если это обычный ультразвуковой датчик, который не способ справиться с этим), поэтому я не думаю, что мы собираемся ответить на ваш вопрос легко –

ответ

0

Помните, что функция прерывания должна быть ОЧЕНЬ короткой. Мне также хотелось бы получить некоторые разъяснения и некоторый текущий код. Но так, как я выяснил ваш вопрос, я думаю, вам нужна более короткая функция прерывания.

Прерывание должно устанавливать только глобальное значение, основанное на значении датчика, и оно есть.

+0

У меня есть обновленный код. Пожалуйста, посмотрите, извините за недостающие коды. был в спешке, чтобы сделать что-то еще. поэтому не учитывается при загрузке кода – Luke

+0

, что вы имеете в виду, что функция прерывания должна быть очень короткой? – Luke

+0

Он думал о прерываниях ардуинов, и вы ничего не используете –

Смежные вопросы