En utilisant un Arduino Uno R3 comme un contrôleur de jeu (4 / 7 étapes)

Étape 4: Programmation en Java pour interpréter entrant série & tests

Maintenant, nu avec moi parce que je sais que personne n’aime travailler avec le code d’autres personnes. Elle le suce juste. Vous devrez peut-être modifier les paramètres du canal COM, parité, bits d’arrêt et la vitesse de transmission (données) dans le code (qui peut être déterminée par le gestionnaire de périphériques, mais devrait être le même que le code). Le code ci-dessous fonctionne sous Linux, Mac OS X et Windows. Mon Arduino est sur la valeur par défaut de COM1 à 9600b/s. J’ai laissé accidentellement un code expérimental là-dedans tout en faisant un GUI, mais ils n’affectent pas quelque chose d’aussi essayer d’ignorer à comprendre certains des importations en bibliothèque. Le dossier SerialTest est également fixé pour référence.

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

java.awt.AWTException d’importation ;
java.awt.Robot d’importation ;
import java.awt.event.KeyEvent ;
import java.io.BufferedReader ;
import java.io.InputStreamReader ;
import java.io.OutputStream ;
Import gnu.io.CommPortIdentifier ;
Import gnu.io.SerialPort ;
Import gnu.io.SerialPortEvent ;
Import gnu.io.SerialPortEventListener ;
java.util.Enumeration d’importation ;
Import javax.swing.* ;
Import javax.swing.event.* ;
import java.awt.* ;
import java.awt.event.* ;
javax.swing.JFrame d’importation ;
import java.awt.Color ;

/ public class SerialTest implements SerialPortEventListener {}
SerialPort serialPort ;
/ ** Le port nous allons normalement utiliser. */
privé public static final String PORT_NAMES [] = {"/dev/tty.usbserial-A9007UX1", / / Mac OS X
« / dev/ttyUSB0 », / / Linux
« COM1 », / / Windows
};
/**
* Un BufferedReader qui sera alimenté par un InputStreamReader convertissant le
* octets en caractères, rendant la page de codes de résultats affichés indépendant
*/
BufferedReader privé d’entrée ;
/ ** Le flux de sortie au port * /
OutputStream privé de sortie ;
/ ** Millisecondes pour bloquer pendant que vous attendez de port ouvert * /
privé public static final int TIME_OUT = 2000 ;
/ ** Par défaut bits par seconde pour le port COM. */
privé public static final int DATA_RATE = 9600 ;

public void initialize() {}
CommPortIdentifier portId = null ;
Énumération portEnum = CommPortIdentifier.getPortIdentifiers() ;

Tout d’abord, trouver une instance de port série comme indiqué dans PORT_NAMES.
tandis que (portEnum.hasMoreElements()) {}
CommPortIdentifier currPortId = portEnum (CommPortIdentifier)
.nextElement() ;
pour (String portName : PORT_NAMES) {}
Si (currPortId.getName().equals(portName)) {}
portId = currPortId ;
rupture ;
}
}
}
System.out.println ("Port ID:") ;
System.out.println(portId) ;
System.out.println("") ;
Si (portId == null) {}
System.out.println ("Impossible de trouver port COM.") ;
retour ;
}

try {}
ouvrir le port série et utiliser le nom de la classe pour l’appName.
serialPort = portId.open(this.getClass().getName() (SerialPort),
TIME_OUT) ;

paramètres de port jeu
serialPort.setSerialPortParams (DATA_RATE, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE) ;

ouvrir le flux
entrée = nouveau BufferedReader (new InputStreamReader (
serialPort.getInputStream())) ;
sortie = serialPort.getOutputStream() ;

Ajouter des écouteurs d’événements
serialPort.addEventListener(this) ;
serialPort.notifyOnDataAvailable(true) ;
} catch (Exception e) {}
System.Err.println(e.ToString()) ;
}
}

/**
* Il doit être appelé lorsque vous arrêtez d’utiliser le port. Cela permettra d’éviter
* port de verrouillage sur les plateformes comme Linux.
*/
public synchronized void close() {}
Si (serialPort! = null) {}
serialPort.removeEventListener() ;
serialPort.close() ;
}
}

/**
* Gérer un événement sur le port série. Lire les données et l’imprimer.
*/
public synchronized void serialEvent(SerialPortEvent oEvent) {}
Si (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {}
try {}
String inputLine = input.readLine() ;
DÉMARRAGE DES MOTEURS
Si (inputLine.equals ("Start Engine")) {}
System.out.println ("Engine Start engagé") ;
try {}
Robot robot = new Robot() ;
robot.keyPress(KeyEvent.VK_S) ;
robot.Delay(500) ;
robot.keyRelease(KeyEvent.VK_S) ;
} catch (AWTException e) {}
e.printStackTrace() ;
}
}
ESSUIE-GLACES DE PARE-BRISE
Si (inputLine.equals ("essuie-glace")) {}
System.out.println ("essuie-glaces engagés") ;
try {}
Robot robot = new Robot() ;
robot.keyPress(KeyEvent.VK_W) ;
robot.Delay(500) ;
robot.keyRelease(KeyEvent.VK_W) ;
} catch (AWTException e) {}
e.printStackTrace() ;
}
}
LIMITEUR DE VITESSE DE FOSSE
Si (inputLine.equals ("fosse du limiteur de vitesse")) {}
System.out.println ("Pit limiteur engagé") ;
try {}
Robot robot = new Robot() ;
robot.keyPress(KeyEvent.VK_P) ;
robot.Delay(500) ;
robot.keyRelease(KeyEvent.VK_P) ;
} catch (AWTException e) {}
e.printStackTrace() ;
}
}
PHARES
Si (inputLine.equals("Headlights")) {}
System.out.println ("phares engagés") ;
try {}
Robot robot = new Robot() ;
robot.keyPress(KeyEvent.VK_H) ;
robot.Delay(500) ;
robot.keyRelease(KeyEvent.VK_H) ;
} catch (AWTException e) {}
e.printStackTrace() ;
}
}
} catch (Exception e) {}
System.Err.println(e.ToString()) ;
}
}
Si (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {}

}
Ignorer tous les autres eventTypes, mais vous devriez considérer l’autre
ones.
}

Public Shared Sub main (String [] args) lève Exception {}
Principal SerialTest = new SerialTest() ;
main.Initialize() ;
Thread t = new Thread() {}
public void run() {}
la ligne suivante gardera en vie ce soft pendant 1000 secondes,
en attendant que les événements se produisent et y répondre (impression
messages entrants à la console).
try {}
Thread.Sleep(1000000) ;
} catch (InterruptedException ie) {}
}
}
};
t.Start() ;
System.out.println ("- en route-") ;
System.out.println("") ;
}
}

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

Comme vous pouvez le voir, il y a 3 autres boutons accrochés. Quand Java voit l’entrée série de "Start Engine" , il enverra une frappe de S. La console de sortie lèvera IO. Exceptions près, à vous, mais ne craignez pas, c’est réparable, en commentant les deux lignes de System.err.println(e.toString()); . Ces erreurs n’interfèrent pas avec n’importe quoi, donc ils ont rien à craindre dans un premier temps. Pour changer ce que chaque commutateur, simplement changer les variables s’écrites dans de la série dans l’Arduino et les instructions conditionnelles respectives en Java pour lorsqu’il reçoit les chaînes de la série. Pour voir la liste à la disposition des commandes pour robot dans Eclipse, boîte un peu de volonté et de type robot. pop-up montrant diverses fonctions. Le robot est incroyable, que vous pouvez même attribuer à déplacer la souris basée sur l’entrée de l’Arduino.

Articles Liés

Comment utiliser une PSP comme un contrôleur de jeu pour PC et PS3

Comment utiliser une PSP comme un contrôleur de jeu pour PC et PS3

Avez-vous déjà assis pour jouer sur votre PS3 avec un ami et s'est rendu compte que vous seulement avez un contrôleur ou étiez en jouant à un jeu sur votre PC et souhaité qu'avoir un contrôleur séparé ? Eh bien maintenant, au lieu d'acheter un nouvea
En utilisant la Esplora comme un contrôleur de jeu

En utilisant la Esplora comme un contrôleur de jeu

Dans ce instructable, je va vous enseigner comment utiliser votre Arduino Esplora comme un contrôleur joystick/bouton poussoir pour tous les jeux. J'ai programmé pour exécuter Kerbal Space programme, mais vous pouvez lui faire exécuter tout ce que vo
Contrôleur de jeu Bluetooth avec accéléromètre et Arduino

Contrôleur de jeu Bluetooth avec accéléromètre et Arduino

Tout le monde aime jouer à des jeux sur PC:) Consoles de jeux les prennent au prochain niveau et quoi de plus amusant que de faire un vous-même ? Ici, nous avons construit une console de jeu avec l'accéléromètre, Arduino et Bluetooth. L'accéléromètre
Ajouter contrôleur de jeu USB pour Arduino Leonardo/Micro

Ajouter contrôleur de jeu USB pour Arduino Leonardo/Micro

Remarque importante : Cet article est pour Arduino IDE version 1.6.5 (ou au-dessous). Pour ajouter un contrôleur de jeu USB un Arduino Leonardo ou le Micro à l'aide de l'IDE Arduino version 1.6.6 (ou supérieur) Voir l'Instructable suivant : Arduino L
Quiz de contrôleur de jeu à l’aide des « Avertisseurs de lumières et de sons » et Arduino

Quiz de contrôleur de jeu à l’aide des « Avertisseurs de lumières et de sons » et Arduino

jeux de quiz style Jeopardy sont favoris pour créer l'excitation et l'enseignement en même temps.  Enseignants, conseillers de camp l'été et les éducateurs de l'industrie même trouvent ce type de jeu afin de générer l'intérêt et l'implication des par
Attiny85 comme un contrôleur de moteur pas à pas Step/Dir

Attiny85 comme un contrôleur de moteur pas à pas Step/Dir

Quelque part en Grèce, quelqu'un a fait quelque chose de jamais fait auparavant...Vu ces choses avant ?Chose: 1Chose: 2Chose: 3Oh, vous avez ! Vous avez acheté un d'eux que vous dites ? Oh... Ne vous inquiétez pas, j'ai fait trop.Ils ont fait le trav
Pirater un contrôleur de jeu vidéo avec un Arduino pour une plus grande accessibilité (ou de la tricherie)

Pirater un contrôleur de jeu vidéo avec un Arduino pour une plus grande accessibilité (ou de la tricherie)

Tout le monde aime les jeux vidéo. Mais il peut être difficile d'apprécier certains jeux si vous êtes blessé ou désactivé et n'avez pas la dextérité nécessaire à la réalisation des combos de touche rapide. Heureusement, nous pouvons utiliser un Ardui
Extrême système Ambilight en utilisant [ws2801 + arduino uno]

Extrême système Ambilight en utilisant [ws2801 + arduino uno]

les couleurs en réalité sont 99 % vrai, les blancs dans cette vidéo ont été plus violets depuis im enregistrement à l'aide de mon iphone:Ddonc, ici, c'est les gars, le clone d'ambilight ultime, vous pouvez faire.Quels sont, on tente d'accomplir scann
Arduino uno faire comme leonardo

Arduino uno faire comme leonardo

Tout d'abord je tiens à clarifier ce point, c'est pas comme n'importe quel autre transformer votre uno dispositif seul HID avec un temps uploard de croquis, vous pouvez télécharger des sketches côte à côte avec hidC'EST VRAI ! avez-vous lu ce que vou
Compteur (0 => 99) en utilisant l’Arduino UNO et deux 7display segmments

Compteur (0 => 99) en utilisant l’Arduino UNO et deux 7display segmments

Salut!Il s'agit de mon premier instructable, cette préoccupation d'instuctable faisant un compteur (0 = > 99).Étape 1: Étape 1: réaliser le montage pièces nécessaires :2 écrans 7segmment anode commune4 résistances: 2 (2,2 kW) sur la base des deux tra
DIY - Comment utiliser l’Arduino Uno pour envoyer un Email, de SMS et de faire une voix appeler

DIY - Comment utiliser l’Arduino Uno pour envoyer un Email, de SMS et de faire une voix appeler

Vous vous demandez comment faire pour envoyer des e-mails via votre Arduino Uno ? Ne vous inquiétez pas... Ce tutoriel vidéo vous éclairera sur le processus étape par étape pour envoyer des emails, messages SMS ainsi que faire des voix appeler à l'ai
Signal PPG ₹1000 fonction calculatrice de fréquence cardiaque et l’affichage de la température en utilisant l’arduino uno et android OS

Signal PPG ₹1000 fonction calculatrice de fréquence cardiaque et l’affichage de la température en utilisant l’arduino uno et android OS

le projet est essentiellement un portable fréquence cardiaque et la température corporelle, système de surveillance. Il a à bord, écran lcd et prennent également en charge pour afficher les paramètres sur un appareil android en temps réel. Arduino es
Manette PS3 utilisation comme contrôleur de jeu PC

Manette PS3 utilisation comme contrôleur de jeu PC

Pour mon anniversaire, j'ai reçu un ordinateur portable et a voulu mettre un émulateur là-dessus. J'ai voulu utiliser un contrôleur pour lui mais ne voulait pas dépenser de l'argent sur un contrôleur, adaptateur ou autre chose. J'ai donc décidé d'uti
Arduino et LM35 à base de contrôleur de température pour les débutants

Arduino et LM35 à base de contrôleur de température pour les débutants

IntroductionVérifiez la température de votre propre système de surveillance à l'aide du capteur de température analogique Arduino et LM35. Il s'agit d'un projet de bricolage très simple pour les débutants de l'Arduino. Toutes les étapes et les exigen