Utilizando un Arduino Uno R3 como un controlador de juegos (4 / 7 paso)

Paso 4: Programación en Java para interpretar serie entrantes y pruebas

Ahora, desnudo conmigo porque sé que a nadie le gusta trabajar con código de otras personas. Es simplemente una mierda. Quizás tenga que modificar la configuración de canal COM, paridad, bits de parada y velocidad en baudios (datos) en el código (que puede ser determinado por el administrador de dispositivos pero debe ser el mismo que el código). El código siguiente funciona con Linux, Mac OS X y Windows. Mi Arduino es por defecto COM1 a 9600b/s. Accidentalmente dejé algún código experimental allí haciendo una GUI pero no afectan a nada así que intento hacerle entender algunas de las importaciones de la biblioteca. La carpeta de SerialTest también se une para referencia.

// *********************************************

Import java.awt.AWTException;
Import java.awt.Robot;
importación java.awt.event.KeyEvent;
importación java.io.BufferedReader;
importación java.io.InputStreamReader;
flujo de importación;
Import gnu.io.CommPortIdentifier;
Import gnu.io.SerialPort;
Import gnu.io.SerialPortEvent;
Import gnu.io.SerialPortEventListener;
importación de java.util.Enumeration;
Import javax.swing.*;
Import javax.swing.event.*;
Import java.awt.*;
Import java.awt.event.*;
Import javax.swing.JFrame;
Import java.awt.Color;

clase pública SerialTest implementa SerialPortEventListener {}
SerialPort serialPort;
/ ** El puerto normalmente vamos a usar. */
Cadena final estático privado PORT_NAMES [] = {"/dev/tty.usbserial-A9007UX1", / / Mac OS X
"/ dev/ttyUSB0", / / Linux
"COM1", / / Windows
};
/**
* Un BufferedReader que será alimentada por un InputStreamReader convierte la
* bytes a caracteres que la página de códigos de resultados mostrado independiente
*/
privado BufferedReader entrada;
/ ** La secuencia de salida al puerto * /
privado OutputStream salida;
/ ** Milisegundos para bloquear esperando puerto abierto * /
int final estático privado para TIME_OUT = 2000;
/ ** Por defecto bits por segundo para puerto COM. */
int final estática privada DATA_RATE = 9600;

público vacío initialize() {}
CommPortIdentifier portId = null;
Enumeración portEnum = CommPortIdentifier.getPortIdentifiers();

En primer lugar, encontrar una instancia de puerto serie como se establece en PORT_NAMES.
mientras (portEnum.hasMoreElements()) {}
CommPortIdentifier currPortId = portEnum (CommPortIdentifier)
.nextElement();
para (String portName: PORT_NAMES) {}
Si (currPortId.getName().equals(portName)) {}
portId = currPortId;
rotura;
}
}
}
System.out.println ("ID de puerto:");
System.out.println(portId);
System.out.println("");
Si (portId == null) {}
System.out.println ("no pudo encontrar COM puerto.");
retorno;
}

trate de {}
abrir puerto serie y utilizar el nombre de la clase para el nombre de aplicación.
serialPort = portId.open(this.getClass().getName() (SerialPort),
PARA TIME_OUT);

parámetros del puerto sistema
serialPort.setSerialPortParams (DATA_RATE, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

abrir los flujos de
entrada = new BufferedReader (new InputStreamReader (
serialPort.getInputStream()));
salida = serialPort.getOutputStream();

Añadir detectores de eventos
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
} catch (excepción e) {}
System.err.println(e.ToString());
}
}

/**
* Esto debería llamarse cuando deje de usar el puerto. Esto evitará que
* Puerto de bloqueo en plataformas como Linux.
*/
público sincronizado {} void close()
Si (serialPort! = null) {}
serialPort.removeEventListener();
serialPort.close();
}
}

/**
* Manejar un evento en el puerto serie. Leer los datos e imprimirlo.
*/
público sincronizado void serialEvent(SerialPortEvent oEvent) {}
Si (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {}
trate de {}
String inputLine = input.readLine();
ARRANQUE DEL MOTOR
Si (inputLine.equals ("Start Engine")) {}
System.out.println ("motor arranque enganchado");
trate de {}
Robot robot = Robot() nuevo;
robot.keyPress(KeyEvent.VK_S);
robot.Delay(500);
robot.keyRelease(KeyEvent.VK_S);
} catch (AWTException e) {}
e.printStackTrace();
}
}
LIMPIADORES DE PARABRISAS
Si (inputLine.equals ("limpiaparabrisas")) {}
System.out.println ("limpiaparabrisas comprometidos");
trate de {}
Robot robot = Robot() nuevo;
robot.keyPress(KeyEvent.VK_W);
robot.Delay(500);
robot.keyRelease(KeyEvent.VK_W);
} catch (AWTException e) {}
e.printStackTrace();
}
}
LIMITADOR DE VELOCIDAD DE HOYO
Si (inputLine.equals "(limitador de la velocidad del pozo del)) {}
System.out.println ("hoyo limitador comprometido");
trate de {}
Robot robot = Robot() nuevo;
robot.keyPress(KeyEvent.VK_P);
robot.Delay(500);
robot.keyRelease(KeyEvent.VK_P);
} catch (AWTException e) {}
e.printStackTrace();
}
}
FAROS
Si (inputLine.equals("Headlights")) {}
System.out.println ("linternas de comprometidos");
trate de {}
Robot robot = Robot() nuevo;
robot.keyPress(KeyEvent.VK_H);
robot.Delay(500);
robot.keyRelease(KeyEvent.VK_H);
} catch (AWTException e) {}
e.printStackTrace();
}
}
} catch (excepción e) {}
System.err.println(e.ToString());
}
}
Si (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {}

}
Ignorar todos los eventTypes, pero debe tener en cuenta otro
unos.
}

público principal vacío estático (String [] args) tiros excepción {}
SerialTest principal = new SerialTest();
Main.Initialize();
Hilo t = new Thread() {}
público void run() {}
la siguiente línea será mantener esta aplicación durante 1000 segundos,
a la espera de acontecimientos que se produzcan y responder a ellos (impresión
mensajes entrantes a la consola).
trate de {}
Thread.Sleep(1000000);
} catch (InterruptedException ie) {}
}
}
};
t.Start();
System.out.println ("- comenzado-");
System.out.println("");
}
}

// *********************************************

Como se puede ver, hay 3 otros botones enganchadas. Cuando Java ve la entrada serie del "motor del comienzo" , él enviará una pulsación de S. La consola de salida producirá IO. Excepciones en usted pero no el miedo, es corregir comentando por ambas líneas de System.err.println(e.toString()); . Estos errores no interfieren con nada por lo que son nada que preocuparse para comenzar con. Para cambiar lo que cada interruptor, simplemente cambiar las variables que se conseguir escriben en serie en Arduino y cambie las respectivas declaraciones condicionales en Java para cuando recibe esas cadenas serie. Para ver la lista de disponibles comandos para robot en Eclipse, tipo robot. y un poco voluntad de caja pop-up que muestra varias funciones. Robot es sorprendente, que incluso puede asignar para mover el ratón basado en entrada de Arduino.

Artículos Relacionados

Cómo usar un PSP como un controlador de juegos para PC y PS3

Cómo usar un PSP como un controlador de juegos para PC y PS3

¿Alguna vez se sentó abajo para jugar en tu PS3 con un amigo y se dio cuenta de que sólo un controlador o estabas jugando un juego en su PC y desea que usted tenía un controlador separado? Pues ahora en vez de comprar un controlador nuevo puede utili
Arduino uno trabajar como leonardo

Arduino uno trabajar como leonardo

En primer lugar quiero dejar esto claro no es como cualquier otro convertir el uno en un único dispositivo HID con un tiempo uploard de sketch, puedes subir bocetos con hidESO ES! lees lo que lees que no hay inconvenientes para nada subir bocetos com
Cómo hacer una cerradura electrónica utilizando un Arduino UNO

Cómo hacer una cerradura electrónica utilizando un Arduino UNO

Este es un proyecto bastante fácil. No necesitas soldar. Aparte de la Arduino UNO, todos los materiales son fáciles de encontrar y no son costosos. Este proyecto es una divertida manera para bloquear la puerta de su dormitorio y es totalmente persona
Utilizando la Esplora como un controlador de juegos

Utilizando la Esplora como un controlador de juegos

En este instructable, enseñará usted cómo hacer su Arduino Esplora como regulador de la palanca de mando/pulsador para todos los juegos. Yo he programado esto ejecutar Kerbal Space Program, pero usted puede hacerlo correr como quiera que. Es un proye
Arduino Leonardo Micro como controlador de juego/Joystick

Arduino Leonardo Micro como controlador de juego/Joystick

Nota importante: Este artículo es para IDE de Arduino versión 1.6.6 (o superior). Para agregar un controlador de juego USB a un Arduino Leonardo o Micro mediante Arduino IDE versión 1.6.5 (o inferior) véase el Instructable siguiente: Añadir controlad
Peces alimentos alimentador automático utilizando Arduino Uno

Peces alimentos alimentador automático utilizando Arduino Uno

En este Instructables voy a mostrarle cómo construir un Alimentador automático de alimentación de peces. Para que no tenga que recordar alimentar a tus peces diariamente porque su Arduino lo hará por usted. También puede configurar contadores en la c
Construcción de una controlador de Midi básico parte 1 - 3 fácil olla (potenciómetro) Arduino Uno efectos controlador Midi (serie-USB)... Rápido, fácil y barato!

Construcción de una controlador de Midi básico parte 1 - 3 fácil olla (potenciómetro) Arduino Uno efectos controlador Midi (serie-USB)... Rápido, fácil y barato!

Hola a todos,Soy relativamente nuevo en Arduino y así han estado luchando contra mi manera de hacer mis propios controladores midi. Hay una gran cantidad de información alrededor pero no pude encontrar un tutorial simple para un dispositivo tan simpl
Proyector IR Control usando Arduino Uno

Proyector IR Control usando Arduino Uno

Durante Halloween y Navidad, proyecto video en una ventana en mi casa. El sistema utiliza un proyector de LED que muestra personajes virtuales en una ventana. El efecto hace parecer como si las letras son realmente dentro de su hogar.Mientras que el
Con un compás GPS de Ublox Ace Hobby módulo Arduino Uno

Con un compás GPS de Ublox Ace Hobby módulo Arduino Uno

Recientemente me encontraba ayudando a mi hijo a armar un globo de altitud alta (HAB) para un proyecto escolar y lo que adquirió para el proyecto era un módulo de GPS de Ublox Ace Hobby con brújula incorporada.Esto fue diseñado originalmente para uti
Arreglar la puerta de mi garaje con un Arduino UNO

Arreglar la puerta de mi garaje con un Arduino UNO

Ver mi github:https://github.com/glscantlen/instructions/Tree/MA...Esta carpeta contiene instrucciones desarrolladas a partir de notas tomadas durante la reparación de los abrelatas de la puerta de mi garaje. Tengo un Geni tornillo de 1/2HP disco gar
Arduino UNO - programación Atiny85

Arduino UNO - programación Atiny85

Podemos decir que el Arduino es bastante grande en tamaño y no tanto portátil. Cuando escala hasta diseñar tecnología usable un Arduino UNO es bastante grande, de hecho incluso el atmega328 es bastante grande en algunos casos una solución sencilla pa
Arduino Uno Intro más proyectos

Arduino Uno Intro más proyectos

Hey todo el mundoBienvenido a mi Arduino uno introducción fueron aprenderemos sobre el Arduino Uno, cómo el pin obras, cómo código y al final veremos proyectos de otras personas utilizando el Arduino uno.Paso 1: Sobre la Arduino UnoArduino Uno es un
Guía simple para el ajuste de hora en un reloj DS3231/DS3107/DS1337 en tiempo Real con Arduino UNO

Guía simple para el ajuste de hora en un reloj DS3231/DS3107/DS1337 en tiempo Real con Arduino UNO

El DS3231 es un altamente exacto, ampliamente utilizado Real Time Clock (RTC), como sus contrapartes ligeramente menos precisas, DS3107 y DS1337. Antes de que puede ser útil, sin embargo, debe ajustarse la hora correcta. Este Instructable es estricta
PiBot: Calcular Pi con un Arduino Uno

PiBot: Calcular Pi con un Arduino Uno

La introducción de PiBot, una alternativa bastante pobre a buscar el valor de Pi en internet. Abandona la competencia en su estela como él calcula Pi más lento que su viejo amigo fama Colossus de Bletchley Park, que basura cualquier calculadora moder