Control de leds desde ratón

Ya que me es imposible llegar a conectar directamente con el ratón, sin el uso del ordenador, por lo menos me quedo viendo qué bien funciona el control a través del pc.
Se trata de algo sencillito. Leemos interrupciones del ratón, y la mandamos vía usb hacia Arduino.

Por un lado, código del programa en el pc:

 /*          Nombre: Driver de rat¢n hacia Arduino control.c             */
 /*                Escrito por: Eduardo Mar¡n Izquierdo                  */
 /*      Basado  el env¡o puerto serie en source de: Craig Peacock       */
 /*                        Fecha:   14 - 8 - 2006                        */

#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <ratoli.h>
#define PORT1 0x3E8

  /* Defines Serial Ports Base Address */
  /* COM1 0x3F8                        */
  /* COM2 0x2F8                         */
  /* COM3 0x3E8                         */
  /* COM4 0x2E8                         */

void main(void)
{
 int c;
 int ch;
 int new_pos_x,new_pos_y,pos_x,pos_y;
 outportb(PORT1 + 1 , 0);   /* Turn off interrupts - Port1 */

 /*         PORT 1 - Communication Settings         */

 outportb(PORT1 + 3 , 0x80);  /* SET DLAB ON */
 outportb(PORT1 + 0 , 0x0C);  /* Set Baud rate - Divisor Latch Low Byte */
                        /* Default 0x03 =  38,400 BPS */
                        /*         0x01 = 115,200 BPS */
                        /*         0x02 =  57,600 BPS */
                        /*         0x06 =  19,200 BPS */
                        /*         0x0C =   9,600 BPS */
                        /*         0x18 =   4,800 BPS */
                        /*         0x30 =   2,400 BPS */
 outportb(PORT1 + 1 , 0x00);  /* Set Baud rate - Divisor Latch High Byte */
 outportb(PORT1 + 3 , 0x03);  /* 8 Bits, No Parity, 1 Stop Bit */
 outportb(PORT1 + 2 , 0xC7);  /* FIFO Control Register */
 outportb(PORT1 + 4 , 0x0B);  /* Turn on DTR, RTS, and OUT2 */

 printf("Driver de rat¢n para Arduino\n");
 printf("Por Eduardo Mar¡n\n");
 printf("Pulse ESC para salir\n");

 do {
 new_pos_x=eixx();
 if(new_pos_x>pos_x){
      outportb(PORT1,'r');
 }
 else{
      if(new_pos_x<pos_x){
            outportb(PORT1,'l');
      }
 }
 pos_x=new_pos_x;
 new_pos_y=eixy();
 if(new_pos_y>pos_y){
      outportb(PORT1,'d');
 }
 else{
      if(new_pos_y<pos_y){
            outportb(PORT1,'u');
      }
 }
 pos_y=new_pos_y;
 if (kbhit()){ch = getch();}
 } while (ch !=27); /* Quit when ESC (ASC 27) is pressed */
}

y por otro lado, el código sobre Arduino:

/* Control de Leds desde teclado
 * -------------
 *
 * Gracias a este programa podemos controlar un número de leds a partir
 * del ratón del ordenador.
 * 
 * Autor: Eduardo Marín Izquierdo
 * Fecha: 08-08-2006
 */

int pines [] = {12,11,10,9};
int Ledcontrol = 13;
byte caracter;
int retraso = 1;

void setup() {
int i;
pinMode (Ledcontrol,OUTPUT);
for (i=0; i<6; i++){
  pinMode(pines[i],OUTPUT);
  }
beginSerial(9600);  
}

void loop() {
caracter = serialRead();

if (caracter == 'l'){
  digitalWrite(pines[0],HIGH);
  delay(retraso);
  digitalWrite(pines[0],LOW);
  }
if (caracter == 'd'){
  digitalWrite(pines[1],HIGH);
  delay(retraso);
  digitalWrite(pines[1],LOW);
  }
if (caracter == 'u'){
  digitalWrite(pines[2],HIGH);
  delay(retraso);
  digitalWrite(pines[2],LOW);
  }
if (caracter == 'r'){
  digitalWrite(pines[3],HIGH);
  delay(retraso);
  digitalWrite(pines[3],LOW);
  }
}

Pego unas fotillos, y un vídeo:

Bueno, gente, a cuidarse!!

Bye

Hola,

podrias pasar de nuevo el link a las fotos? no se ve nada.

Un saludo,

/David

Nada,

ya lo arregle yo :wink:

/David

Joer, a ver si atino mandarino con la photo...

Hola,

Soy Angela...y estoy en el "playground", como colaboradora...Y me gustaría saber o que comentaras como sería el proceso que hay que seguir para poder hacerlo nosotros, es decir...Primer paso, segundo..etc...Si se puede emplear con más "devices"....con un Joystick, etc...

Y si quieres .. lo puedes luego poner o subir en la página en Español, wwww.arduino.es..Como un proyecto, pidiéndole un acceso o usuario a David :slight_smile:

Ya nos cuentas...

Un saludo...

Buenas Ángela.

Mira, esta quincena estoy con la soga al cuello con los exámenes de sept, y poco tiempo tengo ahora mismo, pero tengo medianamente explicado el proceso en blog.

Si te sirve eso de momento, perfecto. De todas formas, ya pegaré los pasos más desarrollados como pedías.

En cuanto a si puede ser utilizado sobre otros periféricos, creo que sí, tan sólo habría que capturar correctamente las señales de éste.

Eso sí, señalo que se utiliza el ordenador de intermediario. La comunicación directa me fue impósibol. :smiley:

Ahí dejo el enlace: http://ahorcandoeltiempo.blogspot.com/2006/08/control-de-leds-desde-ratn-arduino.html

hola me encanta esta manera de manejar a arduino.... el pequeñoa problema es que no puedo compilar la cabesera ratoli.h seria alguien tan amable de enviarmela por correo o subirla a un server ftp..... ;D

ensima este tem tiene 2 años asin comentarios......¿quedara alguien vivo.....?