Buenas Tardes Miembros del foro.
Me presento, mi nombre es Mariano y soy de Buenos Aires, Argentina. Actualmente me encuentro realizando un proyecto universitario con microcontroladores Arduino y estoy familiarizándome con el IDE de Arduino. Si bien poseo experiencia con otros lenguajes de programación y entornos de desarrollo, me esta costando entender bien este entorno que es muy nuevo para mi y veo que en internet hay mucho tutorial de lo que es hardware pero de software hay muy poco.
Estaba buscando información o manuales sobre la programación. actualmente estoy con el desafío de usar un reconocedor de voz el cual ya conecté y entrené unos comandos los cuales quiero aplicarlos para que prendan, apaguen y hagan un blink en el led de mi Arduino UNO.
Cualquier material es bien recibido, o si algún miembro ya escribió un programa similar al que estoy intentando realizar.
Un saludo y Gracias
Mirá, sobre la IDE no hay tantos tutoriales porque tampoco hay mucho que decir, es un editor de texto, la diferencia es que se integra con el compilador (y sobre éste si hay poco y nada, al menos en español). Y sobre los gestores de librerías y placas tampoco se puede decir demasiado.
Una buena fuente de tutoriales en español es la página de Luis Llamas.
En inglés te recomiendo consultar la página de Nick Gammon.
Saludos
Máximo, ¿Cómo estas? Muchas Gracias por responder y la data. Recién estaba viendo un tutorial en inglés que hacía algo parecido a lo que quiero hacer pero mas limitado es decir solo prende y apaga el led. Estaba viendo que la programación en si esta en la función loop y unas constantes que se definen al principio del programa. Quise agregar dos funciones, dos constantes y dos condiciones del switch que está en el loop pero el compilador me esta arrojando algunos errores que no estoy pudiendo entender ya que copie la sintaxis ya definida en el programa de prueba.
Subo las fotos para explicarlo mejor.
Parecería que al compilador no le gusta nada de lo que agregué. ¿Qué es lo que estaría haciendo mal?.
Un saludo y Gracias
Mariano, como minimo te van a pedir todo el código para ver los errores. por ejemplo un error apunta a la linea 16 y no se vé esa linea creo q faltó...fijate q todos ponemos el código como texto incluso para poder ejecutarlo y debuguearlo
saludos
Buenas Osval. Disculpe las molestias ahi le paso el texto
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"
VR myVR(2,3); // 2:RX 3:TX, you can choose your favourite pins.
uint8_t records[7]; // save record
uint8_t buf[64];
int led = 13;
#define onRecord (0)
#define offRecord (1)
#define rapido (2)
#define lento (3)
void printSignature(uint8_t *buf, int len)
{
int i;
for(i=0; i<len; i++){
if(buf[i]>0x19 && buf[i]<0x7F){
Serial.write(buf[i]);
}
else{
Serial.print("[");
Serial.print(buf[i], HEX);
Serial.print("]");
}
}
}
void printVR(uint8_t *buf)
{
Serial.println("VR Index\tGroup\tRecordNum\tSignature");
Serial.print(buf[2], DEC);
Serial.print("\t\t");
if(buf[0] == 0xFF){
Serial.print("NONE");
}
else if(buf[0]&0x80){
Serial.print("UG ");
Serial.print(buf[0]&(~0x80), DEC);
}
else{
Serial.print("SG ");
Serial.print(buf[0], DEC);
}
Serial.print("\t");
Serial.print(buf[1], DEC);
Serial.print("\t\t");
if(buf[3]>0){
printSignature(buf+4, buf[3]);
}
else{
Serial.print("NONE");
}
Serial.println("\r\n");
}
void setup()
{
/** initialize */
myVR.begin(9600);
Serial.begin(115200);
Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");
pinMode(led, OUTPUT);
if(myVR.clear() == 0){
Serial.println("Recognizer cleared.");
}else{
Serial.println("Not find VoiceRecognitionModule.");
Serial.println("Please check connection and restart Arduino.");
while(1);
}
if(myVR.load((uint8_t)onRecord) >= 0){
Serial.println("onRecord loaded");
}
if(myVR.load((uint8_t)offRecord) >= 0){
Serial.println("offRecord loaded");
}
}
void loop()
{
int ret;
ret = myVR.recognize(buf, 50);
if(ret>0){
switch(buf[1]){
case onRecord:
/** turn on LED */
digitalWrite(led, HIGH);
break;
case offRecord:
/** turn off LED*/
digitalWrite(led, LOW);
break;
case rapido:
/** Parpadeo Rápido **/
rapido();
break;
case lento:
/** Parpadeo Lento **/
lento();
break;
default:
Serial.println("Record function undefined");
break;
}
/** voice recognized */
printVR(buf);
}
}
void rapido()
{
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
void lento()
{
digitalWrite(LED_BUILTIN, HIGH);
delay(2000);
digitalWrite(LED_BUILTIN, LOW);
delay(2000);
}
#define rapido (2)
void rapido() {
Ese es el error.
Declaraste una función con el mismo nombre que una macro (en realidad dos).
En este caso el precompilador cambiaría rapido por 2 y quedaría algo así
void 2() {
lo cual, claramente, es un error.
Buenas, Anduvo excelente, era ese el problema. Realicé unas modificaciones y el programa funcionó como esperaba. Si quieren les puedo pasar el código corregido por si alguno lo necesita. Mi programa, prende y apaga los leds, además de ejecutar dos funciones de parpadeos en distintos ritmos. Muchas Gracias Máximo y Osval.
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"
VR myVR(2,3); // 2:RX 3:TX, you can choose your favourite pins.
uint8_t records[7]; // save record
uint8_t buf[64];
int led = 13;
#define onRecord (0)
#define offRecord (1)
#define fast (2)
#define slow (3)
void printSignature(uint8_t *buf, int len)
{
int i;
for(i=0; i<len; i++){
if(buf[i]>0x19 && buf[i]<0x7F){
Serial.write(buf[i]);
}
else{
Serial.print("[");
Serial.print(buf[i], HEX);
Serial.print("]");
}
}
}
void printVR(uint8_t *buf)
{
Serial.println("VR Index\tGroup\tRecordNum\tSignature");
Serial.print(buf[2], DEC);
Serial.print("\t\t");
if(buf[0] == 0xFF){
Serial.print("NONE");
}
else if(buf[0]&0x80){
Serial.print("UG ");
Serial.print(buf[0]&(~0x80), DEC);
}
else{
Serial.print("SG ");
Serial.print(buf[0], DEC);
}
Serial.print("\t");
Serial.print(buf[1], DEC);
Serial.print("\t\t");
if(buf[3]>0){
printSignature(buf+4, buf[3]);
}
else{
Serial.print("NONE");
}
Serial.println("\r\n");
}
void setup()
{
/** initialize */
myVR.begin(9600);
Serial.begin(115200);
Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");
pinMode(led, OUTPUT);
if(myVR.clear() == 0){
Serial.println("Recognizer cleared.");
}else{
Serial.println("Not find VoiceRecognitionModule.");
Serial.println("Please check connection and restart Arduino.");
while(1);
}
if(myVR.load((uint8_t)onRecord) >= 0){
Serial.println("onRecord loaded");
}
if(myVR.load((uint8_t)offRecord) >= 0){
Serial.println("offRecord loaded");
}
if(myVR.load((uint8_t)fast) >= 0){
Serial.println("fast loaded");
}
if(myVR.load((uint8_t)slow) >= 0){
Serial.println("slow loaded");
}
}
void loop()
{
int ret;
ret = myVR.recognize(buf, 50);
if(ret>0){
switch(buf[1]){
case onRecord:
/** turn on LED */
digitalWrite(led, HIGH);
break;
case offRecord:
/** turn off LED*/
digitalWrite(led, LOW);
break;
case fast:
/** Parpadeo Rápido **/
rapido();
break;
case slow:
/** Parpadeo Lento **/
lento();
break;
default:
Serial.println("Record function undefined");
break;
}
/** voice recognized */
printVR(buf);
}
}
void rapido()
{
int cont=0;
while(cont < 5)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(200);
cont++;
}
}
void lento()
{
int cont=0;
while(cont < 5)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
cont++;
}
}
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.