Presentación + pregunta sobre "enmascaramiento" USB

Buenas a todos.

Soy Miguel un salmantino que gracias a una "barcamp" que hizo hace ya casi 2 años Coleoptero me engancho en el tema de Arduino. Y bueno he hecho alguna cosilla con un duecimilia (que el mamón se me borraba la eprom a las horas...pero...), de vez en cuando cuando podemos quedamos para charlar de Arduino y otras yerbas Coleoptero y yo por Fuenlabrada.

Y bueno siempre me ha estado picando para que me metiera al foro, pero me costaba un poco porque no sabia sobre que escribir o que contestar a la gente. Pero al final me he echado para a'lante.

Y ahí va mi primera pregunta:

  • Arduino One que todavía no lo he tenido ni en mis manos, me ha comentado Coleoptero que ya cada vez que se enchufa tiene su propio "id USB" y "familia USB" (no se los términos técnicos) que es Arduino y que casualmente no esta en una ROM sino que en una EPROM. Pues yo me pregunto si esto se puede cambiar fácilmente, me explico, que si en la función setup() puedes setear que "enmascare/emule" el arduino al enchufarse al USB como un GamePad USB o un scanner USB o lo que quieras que sea USB. Algo tal que:
int buttonPin = 3;

void setup()
{
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
  USB.model(USB_GAMEPAD_2BUTTONS);
}

void loop()
{
 ....
 USB.digitalWrite(USB_GAMEPAD_UP, HIGH);
 USB.digitalWrite(USB_GAMEPAD_LEFT, HIGH);
 ....
 USB.digitalWrite(USB_GAMEPAD_BUTTON_1, HIGH);
}

No se si con el ejemplo, veis la potencia de esto, porque yo es que le veo una potencia bestial, ya que por un lado tienes tus circuitos y por el otro conectado al ordenador, y entre medias el Arduino One traduciendo entre ambos para "emular" un teclado USB o un Raton USB o ...

En mi caso lo veo por ejemplo interesante para hacer adaptaciones hardware para discapacitados que no pueden usar por ejemplo un ratón.

Saludos.

Bienvenido al foro MigueldeDios,

El problema es que el micro que controla el USB no está soportado por Arduino, por lo que no puedes usar las librerías y deberás programarlo como se ha programado toda la vida los micros.

Cuando sacaron las características del Uno, pensaba que sería una característica bastante usada, pero por ahora a nadie le ha hecho mucha falta y al que le ha hecho parece que no ha sabido cómo hacerlo.

Un saludo

Buenas chiva.

Si hace falta me meto al ajo de programarlo (aunque lo mas bajo que he trabajado es embebidos...siempre esta Coleoptero para que lo torture a preguntas :wink: ).

Dos preguntas técnicas con meteduras de pata que harán revolverse en la tumba a Nicola Tesla:

  • ¿Se puede reflashsear el micro que trabaja el USB desde el PC?
  • En caso negativo, ¿El micro principal de Arduino One puede reflashear el micro a la ejecución del código?

Yo es por aportar mi granito de arena y quitarme de encima el mono de programar :sweat_smile: .

Saludos.

Si se puede reflashear, pero con un programador.

Mira lo que me acabo de encontrar:

Buenísima aportación chiva.

Me habéis picado MD y tú. Ya me estoy mirando la documentación. Seguro que en los foros de inglés hay más info.

El arduino UNO viene con dos ICSPs para reprogramar sendos atmegas (el Atmega8 core y el atmega8u2). Se necesita un programador externo para darle caña al atmega8u2 y meterle el HIDUINO o nuestros engendros :wink: Como sugiere MD ¿Se podrá hacer algún hack para bien usar el atmega8 core como programador? O ¿Usar otro arduino para esto mismo? ...

Vamos a ir calentando motores.

Saludos.

coLe.

Leído, leído.

Muchas gracias, no se por donde comenzar a estudiar el "tema".

Bueno si, porque me aviso vía mensajería instantánea Coleoptero, y hemos aprovechado para hablar largo y tendido sobre el tema que también le parece interesante o lo finge muy bien :wink: .

Me ha dicho que va ha pasar por el colador todas las cosas interesantes que hemos hablado y las va pegar por aquí para ver si vemos algo de luz al final del tunel, así solo queda esperar a ver que nos escribe.

Saludos y gracias.

Uy se me adelanto mientras andaba escribiendo :cold_sweat: .

Otra idea que hemos hablado y que Coleoptero no me ha corregido por lo que no se si le estoy pegando muchas patadas al los libros de electrónica y haciendo que Tesla se revuelva en la tumba, es:

  • Si el atmega8u2 comparte memoria (y tiene memoria suficiente) con el Atmega8 core para que este le deje "ciertos datos" como "quiero que seas un USB-ratón y te voy a dejar los datos masticados en esta posición de memoría" y así a parte del soft que tiene para el USB coja los datos para personalizar el funcionamiento.

Saludos.

Para los inquietos. Hay una chuleta en la documentación en inglés de arduino: http://arduino.cc/en/Hacking/DFUProgramming8U2

Por cierto, poned atmega8u2 en la búsqueda de este foro y sale oro. :wink:

coLe.

Uff, uff a ver si saco tiempo para ponerme en serio.

Gracias Coleoptero y Chiva.