EasyVR управление светодиодом.
- Войдите на сайт для отправки комментариев
Ср, 26/03/2014 - 21:16
Добрый день! Назрел такой вопрос. Использую EasyVR для управления светодиодом. Все работает, только одна мелоч покоя не дает. Мне нужно чтобы светодиод горел 2 секунды. Я в case'е написал delay(2000). Но светодиод почему-то горит постоянно. Куда надо вставить задержку или что еще сделать чтобы все работало так как нужно. Надеюсь все нормально обьяснил. Заранее спасибо за помощ!
#if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h" #include "SoftwareSerial.h" SoftwareSerial port(7,8); #else // Arduino 0022 - use modified NewSoftSerial #include "WProgram.h" #endif #include "EasyVR.h" EasyVR easyvr(port); //Groups and Commands enum Groups { GROUP_0 = 0, GROUP_1 = 1, }; enum Group0 { G0_AKTIV = 0, }; enum Group1 { G1_PRIVET = 0, G1_KAK_DELA = 1, G1_KAK_NASTR = 2, G1_MOLODEC = 3, G1_PLOXO = 4, G1_AN = 5, }; EasyVRBridge bridge; int8_t group, idx; void setup() { pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); pinMode(A3, OUTPUT); pinMode(A4, OUTPUT); pinMode(A5, 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_0: switch (idx) { case G0_AKTIV: group = GROUP_1; break; } break; case GROUP_1: switch (idx) { case G1_PRIVET: digitalWrite(A0, HIGH); delay(2000); break; case G1_KAK_DELA: digitalWrite(A1, HIGH); delay(2000); break; case G1_KAK_NASTR: digitalWrite(A2, HIGH); delay(2000); break; case G1_MOLODEC: digitalWrite(A3, HIGH); delay(2000); break; case G1_PLOXO: digitalWrite(A4, HIGH); delay(2000); break; case G1_AN: digitalWrite(A5, HIGH); delay(2000); break; } break; } }
Высокий уровень на выходе вы устанавливаете, а через 2 секунды надо установить низкий
Спасибо большое! Я чего-то затупил