Re: Hjälp med ett diagram
Postat: 21 september 2015, 18:23:23
Kartongen jag ritar på är 2,5 meter och har fyra sidor så jag kan modda några gånger.
Protte
Protte
Svenskt forum för elektroniksnack.
https://elektronikforumet.com/forum/
Kod: Markera allt
#include "Arduino.h"
#if !defined(SERIAL_PORT_MONITOR)
#error "Arduino version not supported. Please update your IDE to the latest version."
#endif
#if defined(SERIAL_PORT_USBVIRTUAL)
// Shield Jumper on HW (for Leonardo and Due)
#define port SERIAL_PORT_HARDWARE
#define pcSerial SERIAL_PORT_USBVIRTUAL
#else
// Shield Jumper on SW (using pins 12/13 or 8/9 as RX/TX)
#include "SoftwareSerial.h"
SoftwareSerial port(12, 13);
#define pcSerial SERIAL_PORT_MONITOR
#endif
#include "EasyVR.h"
#define SND_Access_denied 1
#define SND_Access_granted 2
#define SND_Hello 3
#define SND_Please_repeat 4
#define SND_Please_say_your_password 5
#define SND_Please_talk_louder 6
int hl1Pin = 2;
int hl2Pin = 3;
int led1Pin = 4;
int led2Pin = 5;
int logic1Pin = 6;
int voiceokPin = 7;
int hl1State = 0;
int hl2State = 0;
EasyVR easyvr(port);
uint32_t mask = 0;
int8_t group = 0;
uint8_t train = 0;
char name[32];
void setup() {
// put your setup code here, to run once:
pinMode(hl1Pin, INPUT);
pinMode(hl2Pin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(logic1Pin, OUTPUT);
pinMode(voiceokPin, OUTPUT);
// setup PC serial port
pcSerial.begin(9600);
// bridge mode?
int mode = easyvr.bridgeRequested(pcSerial);
switch (mode)
{
case EasyVR::BRIDGE_NONE:
// setup EasyVR serial port
port.begin(9600);
// run normally
pcSerial.println(F("---"));
pcSerial.println(F("Bridge not started!"));
break;
case EasyVR::BRIDGE_NORMAL:
// setup EasyVR serial port (low speed)
port.begin(9600);
// soft-connect the two serial ports (PC and EasyVR)
easyvr.bridgeLoop(pcSerial);
// resume normally if aborted
pcSerial.println(F("---"));
pcSerial.println(F("Bridge connection aborted!"));
break;
case EasyVR::BRIDGE_BOOT:
// setup EasyVR serial port (high speed)
port.begin(115200);
// soft-connect the two serial ports (PC and EasyVR)
easyvr.bridgeLoop(pcSerial);
// resume normally if aborted
pcSerial.println(F("---"));
pcSerial.println(F("Bridge connection aborted!"));
break;
}
if (!easyvr.detect())
{
Serial.println("EasyVR not detected!");
for (;;);
}
easyvr.setPinOutput(EasyVR::IO1, LOW);
Serial.println("EasyVR detected!");
easyvr.setTimeout(5);
easyvr.setLanguage(EasyVR::ENGLISH);
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_Hello, EasyVR::VOL_FULL);
}
void loop()
{
hl1State = digitalRead (hl1Pin);
hl2State = digitalRead (hl2Pin);
if (hl1State == LOW){
digitalWrite (led1Pin, HIGH);
}
else {
digitalWrite (led1Pin, LOW);
}
if (hl2State == LOW){
digitalWrite (led2Pin, HIGH);
}
else {
digitalWrite (led2Pin, LOW);
}
if (hl1State == LOW && hl2State == LOW){
digitalWrite (logic1Pin, HIGH);
}
else {
digitalWrite (logic1Pin, LOW);
}
int idx_cmd;
int idx_pwd;
easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)
Serial.println("Say a name in Group 1");
easyvr.recognizeCommand(1); // recognise command in group 1
while (!easyvr.hasFinished()); // wait for user name
easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off
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_Please_say_your_password , EasyVR::VOL_FULL); // ask for password
easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)
Serial.println("Say the password");
easyvr.recognizeCommand(EasyVR::PASSWORD); // set group 16
while (!easyvr.hasFinished()); // wait for password
easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off
idx_pwd = easyvr.getCommand(); // get recognised password
if (idx_pwd >= 0)
{
Serial.print("Password: ");
if (easyvr.dumpCommand(EasyVR::PASSWORD, idx_pwd, name, train))
{
Serial.print(" = ");
Serial.println(name);
}
else
Serial.println();
if ( idx_pwd == idx_cmd) // index of username and password are the same, access granted
{
Serial.println("Access granted");
easyvr.playSound(SND_Access_granted , EasyVR::VOL_FULL);
digitalWrite(voiceokPin, HIGH); // Turn the LED on
delay(5000); // wait a while
digitalWrite(voiceokPin, LOW); // Turn the LED on
}
else // index of username and password differ, access is denied
{
Serial.println("Access denied");
easyvr.playSound(SND_Access_denied , EasyVR::VOL_FULL);
}
}
int16_t err = easyvr.getError();
if (easyvr.isTimeout() || (err >= 0)) // password timeout, access is denied
{
Serial.println("Error, try again...");
easyvr.playSound(SND_Access_denied , 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);
}
}
}
Kod: Markera allt
#define SND_Access_denied 1
#define SND_Access_granted 2
#define SND_Hello 3
#define SND_Please_repeat 4
#define SND_Please_say_your_password 5
#define SND_Please_talk_louder 6
int hl1Pin = 2;
int hl2Pin = 3;
int led1Pin = 4;
int led2Pin = 5;
int logic1Pin = 6;
int voiceokPin = 7;
int hl1State = 0;
int hl2State = 0;
Kod: Markera allt
// put your setup code here, to run once:
pinMode(hl1Pin, INPUT);
pinMode(hl2Pin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(logic1Pin, OUTPUT);
pinMode(voiceokPin, OUTPUT);
Kod: Markera allt
void loop()
{
hl1State = digitalRead (hl1Pin);
hl2State = digitalRead (hl2Pin);
if (hl1State == LOW){
digitalWrite (led1Pin, HIGH);
}
else {
digitalWrite (led1Pin, LOW);
}
if (hl2State == LOW){
digitalWrite (led2Pin, HIGH);
}
else {
digitalWrite (led2Pin, LOW);
}
if (hl1State == LOW && hl2State == LOW){
digitalWrite (logic1Pin, HIGH);
}
else {
digitalWrite (logic1Pin, LOW);
}