Röst aktiverat interaktiva pussel (13 / 14 steg)
Steg 13: Uppladdning Arduino koden
För att få lamporna på pusslet för att slå på en av svar på orden måste "en, två, tre" du ladda upp lämplig kod nedan. Gå till arduino programvaran och klicka på Arkiv, ny och sedan kopiera och klistra in koden nedan och ladda upp den.
#if defined(ARDUINO) & & ARDUINO > = 100
#include "Arduino.h"
#include "SoftwareSerial.h"
SoftwareSerial port(12,13);
#else / / Arduino 0022 - använda modifierad NewSoftSerial
#include "WProgram.h"
#include "NewSoftSerial.h"
NewSoftSerial port(12,13);
#endif
#include "EasyVR.h"
EasyVR easyvr(port);
Grupper och kommandon
enum grupper
{
GROUP_0 = 0,
GROUP_1 = 1,
};
enum Grupp0
{
LETS_COUNT = 0,
};
enum Grupp1
{
G1_ONE = 0,
G1_TWO = 1,
G1_THREE = 2,
};
EasyVRBridge bridge.
int8_t grupp, idx;
void setup()
{
bryggkoppling?
om (bridge.check())
{
CLI();
Bridge.loop (0, 1, 12, 13);
}
kör normalt
Serial.BEGIN(9600);
port.BEGIN(9600);
om (! easyvr.detect())
{
Serial.println ("EasyVR inte upptäckt!");
för (;);
}
easyvr.setPinOutput (EasyVR::IO1, låg);
Serial.println ("EasyVR upptäckt!");
easyvr.setTimeout(5);
easyvr.setLanguage(0);
grupp = EasyVR::TRIGGER; <--starta grupp (anpassa)
pinMode (2, utgång);
digitalWrite (2, låg).
pinMode (3, OUTPUT);
digitalWrite (3, låg).
pinMode (4, OUTPUT);
digitalWrite (4, låg).
}
void action();
void loop()
{
easyvr.setPinOutput (EasyVR::IO1, hög); LEDDE på (lyssna)
Serial.Print ("Säg ett kommando i gruppen").
Serial.println(Group);
easyvr.recognizeCommand(group);
göra
{
kan göra viss bearbetning medan du väntar ett uttalat kommando
}
medan (! easyvr.hasFinished());
easyvr.setPinOutput (EasyVR::IO1, låg); LEDDE bort
IDX = easyvr.getWord();
om (idx > = 0)
{
inbyggda trigger (ROBOT)
grupp = GROUP_X; <--hoppa till en annan grupp X
hemkomst.
}
IDX = easyvr.getCommand();
om (idx > = 0)
{
Skriv ut debug meddelande
uint8_t tåg = 0;
char namn [32];
Serial.Print ("kommando:");
Serial.Print(IDX);
om (easyvr.dumpCommand (grupp idx, namn, tåg))
{
Serial.Print ("=");
Serial.println(Name);
}
annat
Serial.println();
easyvr.playSound (0, EasyVR::VOL_FULL);
utföra några åtgärder
Action();
}
annat / / fel eller timeout
{
om (easyvr.isTimeout())
Serial.println ("timeout, försök igen...");
int16_t err = easyvr.getError();
om (err > = 0)
{
Serial.Print ("fel");
Serial.println (err, HEX);
}
grupp = GROUP_1;
}
}
void action()
{
Switch (grupp)
{
fall GROUP_0:
Switch (idx)
{
fall LETs_COUNT:
grupp = GROUP_1;
Skriv in action koden här
grupp = GROUP_X; <-- eller hoppa till en annan grupp X för sammansatta kommandon
bryta;
}
bryta;
fall GROUP_1:
Switch (idx)
{
fall G1_ONE:
Serial.println ("i ljus");
digitalWrite (2, hög).
bryta;
fall G1_TWO:
Serial.println ("i ljus");
digitalWrite (3, hög).
bryta;
fall G1_THREE:
Serial.println ("i ljus");
digitalWrite (4, hög).
bryta;
}
Skriv in action koden här
grupp = GROUP_X; <-- eller hoppa till en annan grupp X för sammansatta kommandon
bryta;
}
}