Arduino Joystick
From UIC
Potentiometer with Arduino and Java
Contents |
| Arduino Joystick | |
|---|---|
| Author: | Pn |
| Email: | |
| Website: | Site |
| Date: | 09/08/2010 (dd/mm/yyyy) |
| Level: |
|
| Language: | English |
| Comments: | |
Introduction
From Hack A Day:
Interfacing your own hardware with a Java app couldn’t be easier than this example. [Pn] created this proof-of-concept using an Arduino, an analog joystick from a gaming controller, and a few lines of Java code. The Arduino reads an ADC value from the joystick’s x-axis and transmits it over the serial connection ten times a second. The Java program triggers on every serial event, parsing the data based on the @ symbol that the Arduino sends as a start and end condition.
We like this kind of example because there’s nothing extra involved. It lets you take the concept and run with it in any project imaginable. Be it a more complicated Joystick, or simple sensors that you’d like to interface with.
Basic Knowledge
Arduino HomePage
Learn Electronics using Arduino
Arduino and Java
Essay
How to realize a joystick controlled by Arduino interfaced with PC by java (to make thing easy I will use only X axis):
Circuit
Arduino's code
How to use a joystick with arduino
Maked 27/02/2010
*/
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print('@'); // start signal
Serial.print(analogRead(2)); //the output is in ascii format
Serial.println('@'); // end signal
delay(100);
}
Most interesting java code (NetBeans Project download)
* Handle an event on the serial port. Read the data and print it.
*/
public synchronized void serialEvent(SerialPortEvent oEvent) {
//SerialPortEvent.
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
int available = input.available();
if(available > 0) {
byte chunk[] = new byte[available];
input.read(chunk, 0, available);
// Displayed results are codepage dependent
// System.out.println(String(chunk));
if(chunk[0] == '@' ) {
boolean at = false;
int num = 0, i = 1;
while(i < chunk.length && !at) {
if (chunk[i] == '@')
at = true;
else {
//atoi
num = ((num << 3) + (num << 1)) + (chunk[i] - 48);
i++;
}
}
//see the source code;
g.move(num);
}
}
} catch (Exception e) {
System.err.println(e.toString());
System.err.println(e.getStackTrace());
}
}
// Ignore all the other eventTypes, but you should consider the other ones.
}
And that's all folks ;)
Pn
Greetings
Thx to Arduino, Antonio G. to make me know arduino, Epokh, Que, Ntoskrnl, EvilCry, Antelox, Ermes, and all UIC members.
Disclaimer
I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.
Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevole e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.