JOYSTICK 2da. Parte (SOLUCIONADO)

Estimado amigos, Bueno continuo con este proyecto, a ver que estoy haciendo mal..

1-Con ARDUINO LEONARDO R3 (Recien Comprado)

2-Instale arduino-1.5.8-windows

3-Sigo al pie de la letra lo que explica esta pagina: http://www.imaginaryindustries.com/blog/?p=80

4-Copio los archivos
USBAPI.h
HID.cpp
a la carpeta que tengo instalado el ARDUINO:
C:\Archivos de programa\Arduino\hardware\arduino\avr\cores\arduino
reemplazo ambos archivos

5-Cargo el Skech:
leoJoy.ino

6-Lo compilo y aparece esto:

Arduino: 1.5.8 (Windows XP), Placa:"Arduino Leonardo"

In file included from C:\Archivos de programa\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:224:0,
from leoJoy.ino:7:
C:\Archivos de programa\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h:31:2: error: 'ring_buffer' does not name a type
ring_buffer *_cdc_rx_buffer;
^
Error de compilación

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Desde ya les agradezco cualquier tipo de ayuda.. Saludos

Primero una sugerencia, por favor, para poner links, usa el icono con los eslabones de la cadena.

Yo también lo he probado, y he obtenido los mismos resultados. Creo que deberías ponerte en contacto con el autor del código.

No puedo creer que al autor de un articulo en inglés le escribas en español? Ya se, dirás que no sabes inglés, pues tomate el trabajo de traducirlo porque te aseguro que no le van a dar salvo una excepción la menor de las importancias.

Ahora me tomé el trabajo de mirar la librería original USBAPI.h y ella tiene definida esto

struct ring_buffer;

solo esto, te pongo parte de la misma desde el comienzo hasta donde termina la definición de la clase que la contiene

//================================================================================
//================================================================================
//	Serial over CDC (Serial1 is the physical port)

struct ring_buffer;

#if (RAMEND < 1000)
#define SERIAL_BUFFER_SIZE 16
#else
#define SERIAL_BUFFER_SIZE 64
#endif

class Serial_ : public Stream
{
public:
	void begin(uint16_t baud_count);
	void end(void);

	virtual int available(void);
	virtual void accept(void);
	virtual int peek(void);
	virtual int read(void);
	virtual void flush(void);
	virtual size_t write(uint8_t);
	using Print::write; // pull in write(str) and write(buf, size) from Print
	operator bool();

	volatile uint8_t _rx_buffer_head;
	volatile uint8_t _rx_buffer_tail;
	unsigned char _rx_buffer[SERIAL_BUFFER_SIZE];
};
extern Serial_ Serial;

Cuando le pido al buscador que la encuentre, no devuelve nada de modo que, suena raro pero tal vez sea usado por alguna otro archivo.

la librería que te da error dice

class Serial_ : public Stream
{
private:
	ring_buffer *_cdc_rx_buffer;
public:
	void begin(uint16_t baud_count);
	void end(void);

	virtual int available(void);
	virtual void accept(void);
	virtual int peek(void);
	virtual int read(void);
	virtual void flush(void);
	virtual size_t write(uint8_t);
	operator bool();
};
extern Serial_ Serial;

Asi que intenta agregandola antes de la definición de la clase.

Agradezco desde ya sus colaboraciones, pero sinceramente no entiendo Nada.. saludos
P/D: es muy raro que no haya codigos bien explicados referente a esto....

Vaya respuesta!! Intenta escribir un código y un post mejor explicado.
Todos nos deleitaremos con algo mejor explicado!!

Lo que te digo es que agregues para probar justo antes de class Serial_ : public Stream en el archivo USBAPI.h
Esto que pongo acá abajo
Busca USBAPI.h
busca class Serial_ : public Stream
agrega struct ring_buffer;
antes de class Serial_ : public Stream

Aca como debe quedar ese tramo del código

struct ring_buffer;

class Serial_ : public Stream
{
private:
	ring_buffer *_cdc_rx_buffer;
public:
	void begin(uint16_t baud_count);
	void end(void);

	virtual int available(void);
	virtual void accept(void);
	virtual int peek(void);
	virtual int read(void);
	virtual void flush(void);
	virtual size_t write(uint8_t);
	operator bool();
};
extern Serial_ Serial;

Estimado, hice lo que me has explicado, pero no funciona.

Lo que veo, sin ofendr a andie, es que hay muchos genios pero pocas soluciones.. Jaaaaaaaaaaaaaaa... Saludos TOTALES.....

pajarrrito:
Agradezco desde ya sus colaboraciones, pero sinceramente no entiendo Nada.. saludos
P/D: es muy raro que no haya codigos bien explicados referente a esto....

tu problema como bien dices es que no entiendes nada.Que te vaya muy bien,con esa actitud.

Si alquien quierr algo sin trabajarlo debe pagar.
Si asi de simple son las cosas, no quieres usar tu maasa gris? Bueno tendras que usar billetes verdes. Nadie te va a hacer el trabajo.

pajarrrito,

pajarrrito:
Estimado, hice lo que me has explicado, pero no funciona.

Lo que veo, sin ofendr a andie, es que hay muchos genios pero pocas soluciones.. Jaaaaaaaaaaaaaaa... Saludos TOTALES.....

Pues para no querer ofender a nadie, creo que consigues lo contrario. Yo no me considero ningún genio, pero creo que aquí, cada uno da las soluciones que buenamente puede. Si nadie de los que hay aquí, hemos hecho nunca un proyecto como el tuyo, no es posible que demos soluciones con garantías de éxito inmediatas. Yo he hecho pruebas con un Arduino Micro, que lleva el mismo chip que el Leonardo, y he conseguido que funcione como teclado y como mouse en un pc, así que eso de "farsa" como comentas en otro post, nada, lo único que en este caso, es necesario experimentar un poco más.

Te puedo asegurar que ninguno de mis proyectos ha funcionado nunca a la primera. Siempre ha sido necesario el método prueba-error.

carmeloco:
Te puedo asegurar que ninguno de mis proyectos ha funcionado nunca a la primera. Siempre ha sido necesario el método prueba-error.

Este el el problema de todos los días, la gente quiere hacer algo que vio por ahi, comprandose una placa y dos sensores. COnectarlo como dice algo de youtube, y como no anda viene y pide que se lo hagan.
Como nadie le responde porque no lo ha hecho nunca se enoja y acusa a todos de farsantes y genios..
Ojalá fuera un genio. Si yo fuera un genio no estaría acá intentando aprender de cada uno de Uds.
Todos los que respondemos con asiduidad lo hacemos porque nos hemos dado cuenta que de la experiencia de otros nos nutrimos nosotros tambien. Tal vez con un ojo mas experimentando pero verán que no siempre respondemos todos los temas. Algunso somos mas generales, otros dominan comunicaciones web, o sensores, o balanzas o conexiones USB, o robots. Hay tantas cosas!!!

Entonces pajarrrito creo que es la segunda vez que haces comentarios ofensivos a los demás.
No te respondo mas un post tuyo hasta que bajes un cambio y te disculpes publicamente e invito a los que aquí participamos a que hagan lo mismo si no se ve un cambio de actitud.

Para mi ASUNTO TERMINADO.

El otro día detecté a una persona que vino luego de mucho tiempo con un problema nuevo, yo me acordaba que me había insultado por PM y MAX_saeta con muyo tino me dijo (entonces), no le respondas porque alimentas su ego y asi hice. Casualmente su problema no esta resuelto como ahora el tuyo.

Asi que suerte pajarrrito, veremos quien gana, si los genios como tu dices o tu arrogancia.

Lamentablemente siguen opinando gente que no deben opinar, que se las cree y saben tanto o menos que yo, que quede bien claro este post esta dedicada para personas que hayan echo este proyecto alguna vez y les a dado buenos resultado, solo para ellos, los demas no se gasten en escribir sobre moralidad y arrogancia, mejor no aclaren que oscurece, se entiende, yo aca no estoy escribiendo para una revista de chismes, sino para aprender un poco mas, por eso les recuerdo nuevamente, si no saben abstenganse a responder, saludos.

Si en vez de perder el tiempo en insultar a la gente que intenta ayudar, lo usases en buscar información, habrías encontrado esto:

Eso es una placa que usa el mismo bootloader que el leonardo, de forma que se puede usar el leonardo con el software adecuado, que es el que hay en esa página.

Indagando un poco más encuentro esto:

http://forum.freetronics.com/viewtopic.php?f=27&t=3053

Es el foro de leostick, en el que explican (en el último mensaje del post) cómo instalar las librerías y archivos para que aparezca una nueva placa en el IDE 1.5.8 de arduino, ya que para poder usar las extensiones de joystick, hay que compilar usando la opción tools/board/Freetronics leostick, pero insisto, se puede usar una leonardo, e incluso, seleccionando dicha placa, grabar el bootloader del leostick en el leonardo, aunque yo diría que es el mismo. Eso sí, para compilar y subir el sketch, hay que tener seleccionada la leostick en el ide de arduino.

La próxima vez que vayas a despreciar la ayuda desinteresada de los que, según tú, "no debemos opinar, que se las creen y saben tanto o menos que tú", piénsatelo dos veces, ya que no tienes ni idea de lo que saben los demás, y no con esto quiero decir que sepa más que tú, si no que nunca se deja de aprender.

Estimado, carmeloco, gracias por tu aporte, agradezco tu colaboracion, apenas tenga algun resultado se los comento, saludos

pajarrrito:
Estimado, carmeloco, gracias por tu aporte, agradezco tu colaboracion, apenas tenga algun resultado se los comento, saludos

De nada, se intenta ayudar en lo que se puede, aunque también, una disculpa por tu parte, tampoco estaría mal. Sé que por tu actitud, hay usuarios que han decidido no ayudarte más. Yo, aun y así, he decidido usar algo de mi tiempo en ayudarte.

Hay veces que hay que comerse el orgullo y pedir disculpas, ya que esa actitud, a la larga, pasa factura. Hoy son unos usuarios de un foro, que ya no te quieren prestar más su ayuda, mañana puede ser el banquero que no te da el crédito que necesitas para no tener que cerrar tu negocio, o el jefe que reduce personal y prefiere quedarse con quien simplemente es más amable.

Estimado carmeloco, estube estudiando este sito, el cual me saco las dudas y pude hacer funcionar el codigo con resultado positvo, por lo cual les dejo el link por si a alguien le ineresa, desde ya muchas gracias por tu ayuda. saludos

https://code.google.com/p/unojoy/source/browse/LeoJoy/#LeoJoy%253Fstate%253Dclosed

OK, me alegro de que funcione. Veo que está basado en el leostick.

Recuerda editar el primer mensaje del post y añadirle al título [SOLUCIONADO]

Hola a todos. esta es mi primera incursión en el mundo de Arduino. Mis conocimientos en cuanto a programación son nulos, eso por delante, por ello recurro a vosotros.

Vengo del mundo de la simulación aerea, y estaba buscando la manera de construirme mi propia botonera con ejes, y he encontrado que Arduino me puede ayudar.

Me he comprado un Arduino Leonardo, y siguiendo las instrucciones y los replys posteriores he hecho que me funcionaran perfectamente los ejes

http://www.imaginaryindustries.com/blog/?p=80

El problema que me encuentro es con los botones, que no se como configurarlos en el .imo y tampoco se si las conexiones a la placa están bien hechas, ahora mismo el pulsador lo tengo conectado a la placa según el ejemplo de "Digital Read Serial" de los ejemplos

Agradezco cualquier ayuda que me podais prestar.

Un saludo.

p.d. Pese a ser la primera vez que me muevo en este mundo, ES TREMENDAMENTE APASIONANTE!