Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.05.2014, 23:42   #201
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Голосовое управление нагрузками

При использовании библиотек TimerOne или CyberLib, можно реализовать
Admin вне форума   Ответить с цитированием
Старый 03.06.2014, 00:05   #202
Net
Junior Member
 
Регистрация: 24.05.2014
Сообщений: 5
Вес репутации: 0
Net is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Просмотрел библиотеки, пробывал применить но НО. Не работает.
В программировании не силен.

(Захотелось применить EasyVR к машине, что бы открывал и закрывал окна.)

Есть такой код, который отлично работает. (На данный момент в ардуинку вставлен светодиод (вместо окна от машины) который реагирует на первые две команды (вкл. и выкл.)).

Мне нужен только 'вкл.' во всех командах но никак не 'выкл.'
Поднять окно это 'вкл.'
Опустить окно это тоже 'вкл.'

(НЕ ПОЛУЧАЕТСЯ ПРИМЕНИТЬ ТАЙМЕР )

PHP код:
#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
  #include "SoftwareSerial.h"
  
SoftwareSerial port(12,13);
#else // Arduino 0022 - use modified NewSoftSerial
  #include "WProgram.h"
  #include "NewSoftSerial.h"
  
NewSoftSerial port(12,13);
#endif

#include "EasyVR.h"
EasyVR easyvr(port);

//Groups and Commands
enum Groups
{
  
GROUP_0  0,
  
GROUP_1  1,
};

enum Group1 
{
  
G1_OPEN_LEFT_WINDOW 0,
  
G1_CLOSE_LEFT_WINDOW 1,
  
G1_OPEN_RIGHT_WINDOW 2,
  
G1_CLOSE_RIGHT_WINDOW 3,
  
G1_OPEN_WINDOWS 4,
  
G1_CLOSE_WINDOWS 5,
};


EasyVRBridge bridge;

int8_t groupidx;

void setup()
{
  
// bridge mode?
  
if (bridge.check())
  {
    
cli();
    
bridge.loop(011213);
  }
  
// run normally
  
Serial.begin(9600);
  
port.begin(9600);

  if (!
easyvr.detect())
  {
    
Serial.println("EasyVR not detected!");
    for (;;);
  }

  
easyvr.setPinOutput(EasyVR::IO1LOW);
  
Serial.println("EasyVR detected!");
  
easyvr.setTimeout(5);
  
easyvr.setLanguage(0);

  
group EasyVR::TRIGGER//<-- start group (customize)
  
  
pinMode(11OUTPUT);
  
digitalWrite(11LOW);
  
}

void action();

void loop()
{
  
easyvr.setPinOutput(EasyVR::IO1HIGH); // LED on (listening)

  
Serial.print("Say a command in Group ");
  
Serial.println(group);
  
easyvr.recognizeCommand(group);

  do
  {
    
// can do some processing while waiting for a spoken command
  
}
  while (!
easyvr.hasFinished());
  
  
easyvr.setPinOutput(EasyVR::IO1LOW); // LED off

  
idx easyvr.getWord();
  if (
idx >= 0)
  {
    
// built-in trigger (ROBOT)
    
group GROUP_1// (<-- jump to another group X)
    
return;
  }
  
idx easyvr.getCommand();
  if (
idx >= 0)
  {
    
// print debug message
    
uint8_t train 0;
    
char name[32];
    
Serial.print("Command: ");
    
Serial.print(idx);
    if (
easyvr.dumpCommand(groupidxnametrain))
    {
      
Serial.print(" = ");
      
Serial.println(name);
    }
    else
      
Serial.println();
    
easyvr.playSound(0EasyVR::VOL_FULL);
    
// perform some action
    
action();
  }
  else 
// errors or timeout
  
{
    if (
easyvr.isTimeout())
      
Serial.println("Timed out, try again...");
    
int16_t err easyvr.getError();
    if (
err >= 0)
    {
      
Serial.print("Error ");
      
Serial.println(errHEX);
    }
  }
}

void action()
{
    switch (
group)
    {
    case 
GROUP_1:
      switch (
idx)
      {
      case 
G1_OPEN_LEFT_WINDOW:
        
// write your action code here
        
group GROUP_1// <-- or jump to another group X for composite commands
        
digitalWrite(11HIGH);
        break;
      case 
G1_CLOSE_LEFT_WINDOW:
        
// write your action code here
        
group GROUP_1// <-- or jump to another group X for composite commands
        
digitalWrite(11LOW);
        break;
      case 
G1_OPEN_RIGHT_WINDOW:
        
// write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        
break;
      case 
G1_CLOSE_RIGHT_WINDOW:
        
// write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        
break;
      case 
G1_OPEN_WINDOWS:
        
// write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        
break;
      case 
G1_CLOSE_WINDOWS:
        
// write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        
break;
      }
      break;
    }

Net вне форума   Ответить с цитированием
Старый 04.06.2014, 11:42   #203
YUR
Junior Member
 
Регистрация: 28.02.2013
Сообщений: 29
Вес репутации: 0
YUR is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Подскажите, пож-та, где ошибка! Использую vrbot. Суть кода: в первой группе записаны 2 голоса (1 ячейка один голос, 2 ячейка - другой). "Слушаем" первую группу всегда, при обнаружении 1-го голоса (1 яч.памяти) - идем на прием 2-й группы, при обнаружении 2-го голоса (2 яч. памяти) - переход на 3-ю группу. Во 2-й и 3-й группах записаны (соответствующими голосами, конечно же) команды на выполнения действий - отсылка кода передатчиком 315МГц.
Забегая вперед - Serial1 - т.к. использую Arduino Micro (32U4). Отдельно все работает, т.е. врбот и ардуина - другим кодом зажигал диод на 13-м пине и ардуина с передатчиком тоже - другим кодом слал коды пульта - свет включался.
А вот собрав все вместе и записав 2 голоса ни чего не работает...


PHP код:
 #include <RemoteSwitch.h>

#define RF1 229662  // свет 1- возле окна
#define RF2 229644  // свет 2 – над столом
#define RF3 330588  // свет 3 – люстра слабо
#define RF4 330570  // свет 4 – люстра ярко
// #define RF5 11111  // свободный канал пульта

#define PERIOD 238;   //period duration - полученные из монитор порта
#define PERIOD 237;
#define PERIOD 241;
#define PERIOD 240;


byte com 0

void setup() 
                      { 
                        
pinMode(13OUTPUT);    
                        
Serial1.begin(9600);
                        
delay(2000);
                        
Serial1.write(0xAA);
                        
Serial1.write(0x37);
                        
delay(1000);
                        
Serial1.write(0xAA);
                        
Serial1.write(0x21);
                        } 

void loop() 


while(
Serial1.available())
                                  {
                                    
com Serial1.read();
                                     switch(
com)
                                  {
  case 
0x11:
                 
Serial1.write(0xAA);  // вызываем из памяти 
                
Serial1.write(0x22); // команды 2-й группы 
                
delay(2000);

                                      while(
Serial1.available())
                                  {
                                    
com Serial1.read();
                                     switch(
com)
                                  {
                                       case 
0x21:
                                        
transmit(RF1);
                                       break;

                                     case 
0x22:
                                      
transmit(RF2);
                                      break;

                                      case 
0x23:
                                        
transmit(RF3);
                                      break;

                                      case 
0x24:
                                        
transmit(RF4);
                                      break;

                                      case 
0x25:
                                       
// transmit(RF5);
                                      
break;
                                 }
                                 }
delay(100); 
 break;


case 
0x12:
                 
Serial1.write(0xAA);  // вызываем из памяти 
                
Serial1.write(0x23); // команды 3-й группы 
                
delay(2000);

                                      while(
Serial1.available())
                                  {
                                    
com Serial1.read();
                                     switch(
com)
                                  {
                                       case 
0x31:
                                        
transmit(RF1);
                                      break;

                                     case 
0x32:
                                        
transmit(RF2);
                                      break;

                                      case 
0x33:
                                     
transmit(RF3);
                                      break;

                                      case 
0x34:
                                        
transmit(RF4);
                                      break;

                                      case 
0x35:
                                        
// transmit(RF5);
                                      
break;
                                 }
                                 }
delay(100); 
break;

}
}


void transmit(unsigned long rcode){
unsigned long code rcode;
unsigned long period PERIOD;
code |= (unsigned long)period << 23;
code |= 4L << 20//(|= 4L) цифра перед (L), это (условное число), количество повторов посылаемого сигнала. (соответственно и паузы)
RemoteSwitch::sendTelegram(code11); // RF transmitter pin - пин радио передатчика

YUR вне форума   Ответить с цитированием
Старый 04.06.2014, 11:44   #204
YUR
Junior Member
 
Регистрация: 28.02.2013
Сообщений: 29
Вес репутации: 0
YUR is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

После выполнения команды система должна возвращаться к "прослушиванию" первой группы, т.е. той где голоса
YUR вне форума   Ответить с цитированием
Старый 04.06.2014, 14:25   #205
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Голосовое управление нагрузками

У меня код в шапке как раз расщитан на несколько голосов
Admin вне форума   Ответить с цитированием
Старый 04.06.2014, 16:24   #206
YUR
Junior Member
 
Регистрация: 28.02.2013
Сообщений: 29
Вес репутации: 0
YUR is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Что то он сложен для моего понимания. Хотелось бы заставить работать свой скетч..
YUR вне форума   Ответить с цитированием
Старый 07.06.2014, 15:52   #207
Net
Junior Member
 
Регистрация: 24.05.2014
Сообщений: 5
Вес репутации: 0
Net is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

я в программировании никакой, хз может порт не приписал port1.begin(9600);
Net вне форума   Ответить с цитированием
Старый 07.06.2014, 16:13   #208
Net
Junior Member
 
Регистрация: 24.05.2014
Сообщений: 5
Вес репутации: 0
Net is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Пожалуйста подскажите как прописать delay(5000); под каждую команду. Пока далеко от кода не ушли, знаю что это не сложно.

Прописывал, но оно действовало на все команды одновременно.
Net вне форума   Ответить с цитированием
Старый 07.06.2014, 19:12   #209
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Голосовое управление нагрузками

Delay(5000) тупо останавливает выполнение кода на 5сек.
Для отсчета времени можно использовать millis()
Admin вне форума   Ответить с цитированием
Старый 08.09.2014, 14:56   #210
flyteran
Junior Member
 
Регистрация: 08.09.2014
Сообщений: 4
Вес репутации: 0
flyteran is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Доброго дня.Я прошил плату EasyVR. как на этом сайте http://we.easyelectronics.ru/part/vs...-ex-vrbot.html Вроде плата ожила стала записывать срабатывать( память поставил 24LC1024). Поставил моторчик.говорю то срабатывае то не срабатывает.И заметил что если просто стоит то самопроизвольное срабатывание.при шуме и тем более разговоре она не работает.вариант использовать дома пока 0! так как на видеороликах видно что то же дергается!А если включать лампоку как на этом сайте http://compcar.ru/forum/showthread.php?t=8016 ,то она сама по себе работает-ложное срабатывание.Конкрет� �ости 0, есче пробовал через генератор кодов - якобы сам генерирует и делает готовую программку. тоже самое.На счет срабатывания у меня выставлен английский.Но мы же задаем команды на русском. все работает.
flyteran вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 13 (пользователей: 0 , гостей: 13)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 04:01. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика