Easy vr Sprachsteuerung - Programmierung

Hallo,

also erstmal vorweg, ich bin neu in der Welt des Arduinos. Ich bin durch die Schule damit in Kontakt gekommen. In einem meiner Seminare hat uns der Lehrer ein bisschen eingeführt und wir sollen jetzt etwas mit dem Arduino bauen/konstruieren. Ich hab mich entschieden einen sprachgesteuerten Roboter zu bauen. Den Roboter hab ich schon fertig, das easy vr shield hab ich ebenfalls, es fehlt jetzt nur noch die Programmierung.

Und da liegt auch mein Problem:

Die Anleitung zur Sprachsteurung beinhaltet zwar die Befehle, aber ich weißt nicht wie ich diese als Quellcode schreibe.
Es wäre nett, wenn mir das jemand erklären könnte.

Die Befehle, die er ausführen soll, sind eigentlich schon alle im Easy vr Commander enthalten, also neue Befehle müsste ich vorerst nicht erstellen. Der Roboter soll also, auf meinen Befehl hin, vorwärts, rükwärts, links und rechts fahren, anhalten und sich drehen usw.

Material:
Adafruit motor shieldv2
Easy vr commander
Buch zum Bau des Roboters: http://shop.oreilly.com/product/0636920028024.do

Das ist der Code für den Motor-Test:

/* 
This is a test sketch for the Adafruit assembled Motor Shield for Arduino v2
It won't work with v1.x motor shields! Only for the v2's with built in PWM
control

For use with the Adafruit Motor Shield v2 
---->	http://www.adafruit.com/products/1438
*/

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"

// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61); 

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
// You can also make another motor on port M2
//Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Adafruit Motorshield v2 - DC Motor test!");

  AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
  
  // Set the speed to start, from 0 (off) to 255 (max speed)
  myMotor->setSpeed(150);
  myMotor->run(FORWARD);
  // turn on motor
  myMotor->run(RELEASE);
}

void loop() {
  uint8_t i;
  
  Serial.print("tick");

  myMotor->run(FORWARD);
  for (i=0; i<255; i++) {
    myMotor->setSpeed(i);  
    delay(10);
  }
  for (i=255; i!=0; i--) {
    myMotor->setSpeed(i);  
    delay(10);
  }
  
  Serial.print("tock");

  myMotor->run(BACKWARD);
  for (i=0; i<255; i++) {
    myMotor->setSpeed(i);  
    delay(10);
  }
  for (i=255; i!=0; i--) {
    myMotor->setSpeed(i);  
    delay(10);
  }

  Serial.print("tech");
  myMotor->run(RELEASE);
  delay(1000);
}

Also wie gesagt, es wäre sehr nett, wenn mir jemand erklären könnte, welchen Teil des Quellcodes der Sprachsteuerung ich brauche und welchen ich eigentlich weglassen könnte. Wie ich den Roboter zum fahren bringe (ohne Sprachsteuerung) weiß ich bereits, aber wie ich beides verbinde weiß ich eben nicht.

Schon einmal vielen dank im voraus. Ich hoffe ihr könnt mir helfen!
Anleitung zur Sprachsteuerung im Anhang.

EasyVR_User_Manual_3.6.5.pdf (2.03 MB)

hi,

keine antwort auf deine frage, sondern neugier:

taugt dieses spracherkennungsdingens etwas? eher eine spielerei oder praxistauglich? hat hier sonst schon jemand damit was gemacht?

doch noch was zu Deiner frage:

geh's langsam an. bau Dir einen winzigen sketch für den roboter, der nur eine funktion kennt. dann das gleiche für die spracherkennung. wenn beides läuft, bau sie zusammen. das erweitern ist dann recht einfach.

gruß stefan

Eigentlich taugt sie schon. Sie erkennt auf jeden Fall das, was ich sage :smiley: und ich hab schon ein paar Projekte gesehen, in denen sie verwendet wurde. Z.B. hat sie jemand den Lichtschalter mit dem Arduino verbunden und hat dann das Licht per Sprachsteuerung an- und ausgeschalten.

Und zum meinem Problem:
Also ich hab mir schon einen kleinen Sketch gemacht, mit dem der Roboter ein kleines Rechteck fährt. Aber wie ich diesen Quellcode zusammen mit den Befehlen “vorwärts”, “rückwärts”, usw. als gemeinsamen Sketch schreibe, weiß ich nicht.
In der Anleitung steht z.B:
“Forward”: Befindet sich im Trigger Word Set 2 und der Index für den Befehl ist “4”. Deshalb weiß ich aber trotzdem nicht wie ich das programmiere.

Evlt so etwas in der Art(in Worten):

"Wenn Command 0 von Word set 1 true (erkannt), dann
Motor1-> run (FORWARD);
Motor2-> run(FORWARD);