![]() |
|
|
#131 |
|
Member
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0 ![]() |
Уважаемый Admin скажите я все сделал как в ссылке Описание работы с EasyVR.
Все получилось. Теперь я не могу разобрать куда подключать пины от easy vr и надоли переводить ардуино на другой режим. При програмировании easy в командоре пины были etx-tx erx-rx. И динамик подключать к ардуино spk и +5v. или к easy j2. |
|
|
|
|
|
#132 | ||
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
|
||
|
|
|
|
|
#133 |
|
Member
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0 ![]() |
Нет не шилд. Обычный я по форуму нашел скетч для програмирования команд т.к. тот что в базе не подошел а остальное все как написано. Звуки залил замкнув res и end и xm на 3.3v. Потом поставил скетч с темы и дальше все.
|
|
|
|
|
|
#134 |
|
Member
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0 ![]() |
Вот скетч.
Код:
#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"
#define SND_AUDIO_1 1
#define SND_AUDIO_2 2
#define SND_AUDIO_3 3
#define SND_AUDIO_4 4
EasyVR easyvr(port);
EasyVRBridge bridge;
uint32_t mask = 0;
int8_t group = 0;
uint8_t train = 0;
char name[32];
void setup()
{
// bridge mode?
if (bridge.check())
{
cli();
bridge.loop(0, 1, 12, 13);
}
Serial.begin(9600);
port.begin(9600);
pinMode(2, OUTPUT);
if (!easyvr.detect())
{
Serial.println("EasyVR not detected!");
for (;;);
}
easyvr.setPinOutput(EasyVR::IO1, LOW);
Serial.println("EasyVR detected!");
easyvr.setTimeout(5);
easyvr.setLanguage(EasyVR::ITALIAN);
int16_t count = 0;
if (easyvr.getGroupMask(mask)) // get trained user names and passwords
{
uint32_t msk = mask;
for (group = 0; group <= EasyVR::PASSWORD; ++group, msk >>= 1)
{
if (!(msk & 1)) continue;
if (group == EasyVR::TRIGGER)
Serial.print("Trigger: ");
else if (group == EasyVR::PASSWORD)
Serial.print("Password: ");
else
{
Serial.print("Group ");
Serial.print(group);
Serial.print(": ");
}
count = easyvr.getCommandCount(group);
Serial.println(count);
for (int8_t idx = 0; idx < count; ++idx)
{
if (easyvr.dumpCommand(group, idx, name, train))
{
Serial.print(idx);
Serial.print(" = ");
Serial.print(name);
Serial.print(", Trained ");
Serial.print(train, DEC);
if (!easyvr.isConflict())
Serial.println(" times, OK");
else
{
int8_t confl = easyvr.getWord();
if (confl >= 0)
Serial.print(" times, Similar to Word ");
else
{
confl = easyvr.getCommand();
Serial.print(" times, Similar to Command ");
}
Serial.println(confl);
}
}
}
}
}
easyvr.setLevel(EasyVR::HARDER);
easyvr.playSound(SND_AUDIO_1, EasyVR::VOL_FULL);
digitalWrite(2, LOW);
}
void loop()
{
int idx_cmd;
int idx_cmd2;
int idx_pwd;
Serial.println("Say a name computer");
easyvr.recognizeCommand(1); // recognise command in group 1
while (!easyvr.hasFinished()); // wait for user name
idx_cmd = easyvr.getCommand(); // get recognised user name
if (idx_cmd >= 0)
{
Serial.print("Name: ");
if (easyvr.dumpCommand(1, idx_cmd, name, train))
Serial.println(name);
else
Serial.println();
easyvr.playSound(SND_AUDIO_3 , EasyVR::VOL_FULL); // ask a command
Serial.println("Say the command");
easyvr.recognizeCommand(2); // set group 2
while (!easyvr.hasFinished()); // wait command
idx_cmd2 = easyvr.getCommand();
if (idx_cmd2 == 0)
{
Serial.println("On");
easyvr.recognizeCommand(3); // set group 3
while (!easyvr.hasFinished()); // wait command
idx_pwd = easyvr.getCommand();
if (idx_pwd == 0)
{
Serial.println("Light");
easyvr.playSound(SND_AUDIO_4 , EasyVR::VOL_FULL);
digitalWrite(2, HIGH);
}
else
Serial.println();
}
if (idx_cmd2 == 1) //
{
Serial.println("Off");
easyvr.recognizeCommand(3); // set group 3
while (!easyvr.hasFinished()); // wait command
idx_pwd = easyvr.getCommand();
if (idx_pwd == 0)
{
Serial.println("Ligh off");
easyvr.playSound(SND_AUDIO_4 , EasyVR::VOL_FULL);
digitalWrite(2, LOW);
}
}
int16_t err = easyvr.getError();
if (easyvr.isTimeout() || (err >= 0)) //
{
Serial.println("Error, try again...");
easyvr.playSound(SND_AUDIO_2 , EasyVR::VOL_FULL);
}
else
{
if (easyvr.isTimeout())
Serial.println("Timed out, try again...");
int16_t err = easyvr.getError();
if (err >= 0)
{
Serial.print("Error ");
Serial.println(err, HEX);
}
}
}
}
|
|
|
|
|
|
#135 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Скетч Вам чужой не подойдет, генерируйте скетч в программе
|
|
|
|
|
|
#136 |
|
Member
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0 ![]() |
т.е этот скетч на easy vr sheild а на обычнай с кардуино нано не пойдет?
|
|
|
|
|
|
#137 | |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Я же Вам написал сгенерируйте скетч в программе commander |
|
|
|
|
|
|
#138 |
|
Member
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0 ![]() |
Вот скетч который сгенерировал командер. Его надо просто залить или скомпановать с другим скетчем.
Код:
#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_1 = 1,
GROUP_2 = 2,
GROUP_3 = 3,
};
enum Group1
{
G1_COMRUTER = 0,
};
enum Group2
{
G2_ON = 0,
G2_OFF = 1,
};
enum Group3
{
G3_LIGHT = 0,
};
EasyVRBridge bridge;
int8_t group, idx;
void setup()
{
// bridge mode?
if (bridge.check())
{
cli();
bridge.loop(0, 1, 12, 13);
}
// run normally
Serial.begin(9600);
port.begin(9600);
if (!easyvr.detect())
{
Serial.println("EasyVR not detected!");
for (;;);
}
easyvr.setPinOutput(EasyVR::IO1, LOW);
Serial.println("EasyVR detected!");
easyvr.setTimeout(5);
easyvr.setLanguage(0);
group = EasyVR::TRIGGER; //<-- start group (customize)
}
void action();
void loop()
{
easyvr.setPinOutput(EasyVR::IO1, HIGH); // 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::IO1, LOW); // LED off
idx = easyvr.getWord();
if (idx >= 0)
{
// built-in trigger (ROBOT)
// group = GROUP_X; <-- 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(group, idx, name, train))
{
Serial.print(" = ");
Serial.println(name);
}
else
Serial.println();
easyvr.playSound(0, EasyVR::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(err, HEX);
}
}
}
void action()
{
switch (group)
{
case GROUP_1:
switch (idx)
{
case G1_COMRUTER:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
case GROUP_2:
switch (idx)
{
case G2_ON:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
case G2_OFF:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
case GROUP_3:
switch (idx)
{
case G3_LIGHT:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
}
}
|
|
|
|
|
|
#139 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Теперь в сгенерированом скетче вставляем свой код, который должен исполняться, вставлять туда где выделил красным
Для начала вставьте digitalWrite(13, ххх); case G1_COMRUTER: // write your action code here // group = GROUP_X; <-- or jump to another group X for composite commands break; } break; case GROUP_2: switch (idx) { case G2_ON: // write your action code here // group = GROUP_X; <-- or jump to another group X for composite commands break; case G2_OFF: // write your action code here // group = GROUP_X; <-- or jump to another group X for composite commands break; } Вот Вам готовый пример который должен включать и выключать светодиод D13 По команде G2_ON включит и выключит по команде G2_OFF Код:
#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_1 = 1,
GROUP_2 = 2,
GROUP_3 = 3,
};
enum Group1
{
G1_COMRUTER = 0,
};
enum Group2
{
G2_ON = 0,
G2_OFF = 1,
};
enum Group3
{
G3_LIGHT = 0,
};
EasyVRBridge bridge;
int8_t group, idx;
void setup()
{
pinMode(13, OUTPUT);
// bridge mode?
if (bridge.check())
{
cli();
bridge.loop(0, 1, 12, 13);
}
// run normally
Serial.begin(9600);
port.begin(9600);
if (!easyvr.detect())
{
Serial.println("EasyVR not detected!");
for (;;);
}
easyvr.setPinOutput(EasyVR::IO1, LOW);
Serial.println("EasyVR detected!");
easyvr.setTimeout(5);
easyvr.setLanguage(0);
group = EasyVR::TRIGGER; //<-- start group (customize)
}
void action();
void loop()
{
easyvr.setPinOutput(EasyVR::IO1, HIGH); // 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::IO1, LOW); // LED off
idx = easyvr.getWord();
if (idx >= 0)
{
// built-in trigger (ROBOT)
// group = GROUP_X; <-- 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(group, idx, name, train))
{
Serial.print(" = ");
Serial.println(name);
}
else
Serial.println();
easyvr.playSound(0, EasyVR::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(err, HEX);
}
}
}
void action()
{
switch (group)
{
case GROUP_1:
switch (idx)
{
case G1_COMRUTER:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
case GROUP_2:
switch (idx)
{
case G2_ON:
digitalWrite(13, HIGH);
break;
case G2_OFF:
digitalWrite(13, LOW);
break;
}
break;
case GROUP_3:
switch (idx)
{
case G3_LIGHT:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
}
}
|
|
|
|
|
|
#140 |
|
Member
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0 ![]() |
Скажите а чтоб получать ответы на команды нужно в скетче прописывать или в командере можно както сгенерировать. Audio залиты с сылки.
|
|
|
|
![]() |
| Здесь присутствуют: 3 (пользователей: 0 , гостей: 3) | |
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|