Simulación de teclado

Hola, me acabo de comprar una Arduino y ya he hecho el montaje de alguno de los ejemplos. Así que ahora me he decidido a hacer mi primer proyecto sencillo. El problema es que no se como hacer una parte del código.

Mi proyecto consiste en que cuando un pin reciba un impulso eléctrico Arduino lo detecte y se haga pasar por mi teclado.

Ej: Cuando pulso el pulsador del pin 10 mi arduino hace que el ordenador reciba la felcha hacia arriba.

Se como hacer que arduino lea el pin pero no sabria como hacer para que se haga pasar por el teclado.

¿podría alguien indicarme donde puedo sacar la información que preciso o indicarme como se hace?

Gracias de antemano a todos. :)

Yo busco lo mismo, pero exactamente al revés, es decir, que cuando presione la tecla X en mi computadora, ponga en HIGH cualquiera de las salidas digitales

Como puedo hacerlo?? :-/

http://ebdmau.blogspot.com

De momento aun no he encontrado nada, si encuentro algo te digo :slight_smile:

Vaul, ya logré hacerlo. :D

Usé Processing para crear un applet y que el applet mande por el puerto serial un valor, por ejemplo:

si presiono la tecla UP manda el valor 10 por el puerto si presiono la tecla DOWN manda el valor 20 por el puerto

depués, en el Arduino, hago que lea el dato mandado por el puerto serial. Si el valor es igual a 10, prenderá un led en una salida digital; si el valor es igual a 20, prenderá otro led en otra salida digital.

El led permanecerá encendido tanto tiempo sea presionada la tecla.

ya lo tengo pero no al 100%, tengo un problema con el codigo del arduino, en la parte de los 'if', solo me está corriendo el primer 'if' y los otros dos no :-/. te dejo el codigo...

Processing

import processing.serial.*;

Serial port;

void setup() { size(256, 150);

println("Available serial ports:"); println(Serial.list());

port = new Serial(this, "COM8", 9600); }

void draw() { } void keyPressed(){ if (key == CODED){ if (keyCode == UP){ port.write(10); } else { if (keyCode == DOWN){ port.write(20); } } } }

void keyReleased(){ port.write(0); }

Arduino

int ledPinr = 5; int ledPinv = 3;

void setup() { //Hago la conexion con el puerto serial y pongo en salidas los pines 5 y 4 Serial.begin(9600); pinMode(ledPinr, OUTPUT); pinMode(ledPinv, OUTPUT); }

void loop(){ //checo si se a enviado un dato por el puerto if (Serial.available()){ //si el dato es igual a 10, prendo el led y si no lo mantengo apagado if (Serial.read() == 10){ digitalWrite(ledPinv, HIGH); }else { digitalWrite(ledPinv, LOW); } //si el dato es igual a 20 lo prendo, y si no lo mantengo apagado if (Serial.read() == 20){ digitalWrite(ledPinr, HIGH); } else { digitalWrite(ledPinr, LOW); }

//Psicosis if (Serial.read() == 0){ digitalWrite(ledPinv, LOW); digitalWrite(ledPinr, LOW); } } }

Hola Vaul. Tu pregunta me es bastante intersante para mi proyecto (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1207672683). Quiero implementar dos ruletas que cuando giren, manden información al juego para así implementar un mando que modifique el reparto de frenada y otro para la mezcla de oxígeno y gasolina. La diferencia es que en vez de ser pulsadores conectados a pines digitales, son ruletas conectados a pines analógicos.

Puesto que estoy trabajando con un plugin (ejecutado por el juego) que se comunica con el arduino, se me ocurre que una forma de implementarlo es que cuando yo gire la ruleta, el arduino le mande el evento al plugin, y que éste notifique a la ventana del juego que se ha pulsado la tecla del teclado en la que, por ejemplo, está configurada la acción de incrementar la mezcla de oxígeno y gasolina. Es decir, engañando al juego, haciéndole creer que estoy pulsando una tecla del teclado. Esto creo que se puede programar con la librería windows.h, pero ya seria progamarlo dentro del plugin.

La verdad es que no tengo mucha idea, de momento no estoy en esta etapa del desarrollo, pero, mientras llego al problema, esta es mi idea, jeje.

Si consigues algo, intenta dejarlo escrito aquí aver si me ayuda.

Gracias.

Hola, muchas gracias a Magopo por el código, va a ser una base sobre la que trabajar.

A Eighth, si mi idea es casi identica a la tuya salvo que el script funcione no solo para una aplicación especifica sino para la que se este ejecutando en ese momento aunque se podría empezar por lo que tu dices.

Sigo con ello, si descubro algo os lo hare saber. :)

Gracias.