Met behulp van een Arduino Uno R3 als een spelbesturing (4 / 7 stap)

Stap 4: Programmeren in Java te interpreteren binnenkomende Serial & testen


Nu, kale met mij omdat ik weet dat niemand houdt van werken met andermans code. Het is gewoon klote. U wellicht de instellingen van het COM kanaal, pariteit, stopbits en baudrate (gegevens) in de code (die kan worden bepaald via Apparaatbeheer, maar moet hetzelfde zijn als de code) te wijzigen. De onderstaande code werkt met Linux, Mac OS X en Windows. Mijn Arduino is op de standaard COM1 op 9600b/s. Ik per ongeluk achtergelaten sommige experimentele code daar terwijl het maken van een GUI maar ze heeft geen invloed op om het even wat dus probeer te negeren begrijpen sommige van de invoer van de bibliotheek. De map SerialTest is ook bevestigd voor referentie.

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

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

openbare klasse SerialTest implementeert SerialPortEventListener {}
SerialPort serialPort;
/ ** De poort die we gaan normaal te gebruiken. */
privé statisch definitief koord PORT_NAMES [] = {"/dev/tty.usbserial-A9007UX1", / / Mac OS X
"/ dev/ttyUSB0", / / Linux
"COM1", / / Windows
};
/**
* Een BufferedReader die zal worden gevoed door een InputStreamReader omzetten van de
* bytes naar tekens onafhankelijk maken van de weergegeven resultaten codepage
*/
privé BufferedReader ingevoerd;
/ ** De uitvoerstroom op de poort * /
privé outputlijn output;
/ ** Milliseconden te blokkeren tijdens het wachten voor de poort open * /
privé statische definitieve int TIME_OUT = 2000;
/ ** Standaard bits per seconde voor COM-poort. */
privé statische definitieve int DATA_RATE = 9600;

openbare nietige initialize() {}
CommPortIdentifier portId = null;
Opsomming portEnum = CommPortIdentifier.getPortIdentifiers();

Eerst, een exemplaar van de seriële poort als bedoeld in PORT_NAMES te vinden.
terwijl (portEnum.hasMoreElements()) {}
CommPortIdentifier currPortId = portEnum (CommPortIdentifier)
.nextElement();
voor (String portName: PORT_NAMES) {}
Als (currPortId.getName().equals(portName)) {}
portId = currPortId;
breken;
}
}
}
System.out.println ("poort-ID:");
System.out.println(portId);
System.out.println("");
Als (portId == null) {}
System.out.println kon ("niet vinden COM-poort.");
terugkeer;
}

Probeer {}
seriële poort openen en gebruik de naam van de klasse voor de appName.
serialPort = (SerialPort) portId.open(this.getClass().getName(),
TIME_OUT);

instellen poort parameters
serialPort.setSerialPortParams (DATA_RATE, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

Open de streams
invoer = nieuwe BufferedReader (nieuwe InputStreamReader ()
serialPort.getInputStream()));
uitvoer = serialPort.getOutputStream();

gebeurtenislisteners toevoegen
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
} catch (Exception e) {}
System.err.println(e.toString());
}
}

/**
* Dit moet worden aangeroepen wanneer u stopt met het gebruik van de poort. Hiermee wordt voorkomen dat
* poort vergrendeling op platformen als Linux.
*/
publiek gesynchroniseerd nietig close() {}
Als (serialPort! = null) {}
serialPort.removeEventListener();
serialPort.close();
}
}

/**
* Het verwerken van een gebeurtenis op de seriële poort. De gegevens lezen en afdrukken.
*/
publiek gesynchroniseerd nietig serialEvent(SerialPortEvent oEvent) {}
Als (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {}
Probeer {}
InputLine koord = input.readLine();
MOTOR START
Als (inputLine.equals ("Start motor")) {}
System.out.println ("motor-Start bezig");
Probeer {}
Robot robot = nieuwe Robot();
robot.keyPress(KeyEvent.VK_S);
robot.delay(500);
robot.keyRelease(KeyEvent.VK_S);
} vangst (AWTException e) {}
e.printStackTrace();
}
}
RUITENWISSERS
Als (inputLine.equals ("ruitenwissers")) {}
System.out.println ("ruitenwissers bezig");
Probeer {}
Robot robot = nieuwe Robot();
robot.keyPress(KeyEvent.VK_W);
robot.delay(500);
robot.keyRelease(KeyEvent.VK_W);
} vangst (AWTException e) {}
e.printStackTrace();
}
}
PIT-SNELHEIDSBEGRENZER
Als (inputLine.equals ("Pit-snelheidsbegrenzer")) {}
System.out.println ("Pit-Limiter bezig");
Probeer {}
Robot robot = nieuwe Robot();
robot.keyPress(KeyEvent.VK_P);
robot.delay(500);
robot.keyRelease(KeyEvent.VK_P);
} vangst (AWTException e) {}
e.printStackTrace();
}
}
KOPLAMPEN
Als (inputLine.equals("Headlights")) {}
System.out.println ("koplampen bezig");
Probeer {}
Robot robot = nieuwe Robot();
robot.keyPress(KeyEvent.VK_H);
robot.delay(500);
robot.keyRelease(KeyEvent.VK_H);
} vangst (AWTException e) {}
e.printStackTrace();
}
}
} catch (Exception e) {}
System.err.println(e.toString());
}
}
Als (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {}

}
Negeren van alle andere eventTypes, maar kunt u overwegen de andere
degenen.
}

openbare statische nietige leiding (koord [] args) gooit uitzondering {}
SerialTest main = nieuwe SerialTest();
Main.initialize();
Draad t = nieuwe Thread() {}
openbare nietige run() {}
de volgende regel zal dit app levend houden voor 1000 seconden,
wachten op de gebeurtenis en het reageren op hen (afdrukken
inkomende berichten naar de console).
Probeer {}
Thread.Sleep(1000000);
} vangst (InterruptedException ie) {}
}
}
};
t.Start();
System.out.println ("- de slag-");
System.out.println("");
}
}

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

Zoals u zien kunt, zijn er 3 andere knoppen vastgehaakt. Wanneer Java ziet de seriële input van "Start motor" , zal het een toetsaanslag van Safgeven. De console output zal gooien IO. Uitzonderingen op je, maar wees niet bang, het is fixable door commentaar uit beide System.err.println(e.toString()); lijnen. Deze fouten interfereert niet met iets zodat ze niets anders zijn te bekommeren om te beginnen met. Om te veranderen wat doet elke switch, gewoon de variabelen die krijgen naar seriële in Arduino geschreven zijn wijzigen en wijzigen van de respectieve voorwaardelijke instructies in Java voor wanneer zij die seriële tekenreeksen ontvangt. Om te zien van de lijst met beschikbare opduiken opdrachten voor robot in Eclipse, type robot. en een kleine doos zal tonen van verschillende functies. Robot is verbazingwekkend, dat u kunt zelfs toewijzen om de muis op basis van input van de Arduino te bewegen.

Gerelateerde Artikelen

Program Arduino Pro Mini met behulp van de Arduino Uno

Program Arduino Pro Mini met behulp van de Arduino Uno

Hallo iedereen. Vandaag ga ik laten zien hoe te programmeren van de arduino pro mini met behulp van de arduino uno.Als u al een arduino uno en je nieuw arduino pro hoeft mini, dan kunt u niet te kopen van de USB naar seriële converter om te programme
Met behulp van de Arduino Uno naar programma ATTINY84-20PU

Met behulp van de Arduino Uno naar programma ATTINY84-20PU

Met behulp van de Arduino Uno naar programma ATTINY84-20PU (Newark item # 68T3783). Dit Instructable laat zien hoe met de Arduino platform om te werken met fysiek kleiner processors, zoals de ATtiny84 (84/44/24), ATtiny85 (85/45/25), en ATtiny2313. I
Extreme Ambilight systeem met behulp van [ws2801 + arduino uno]

Extreme Ambilight systeem met behulp van [ws2801 + arduino uno]

de kleuren in werkelijkheid zijn 99% waar werden de blanken in deze video meer paarse sinds im opname met behulp van mijn iphone :DDus, hier is het jongens, de ultieme ambilight-kloon die u kunt maken.wat we proberen te bereiken is het scannen van de
₹1000 PPG signaal op basis van hartslag rekenmachine en temperatuurdisplay met behulp van de arduino uno en Androïde OS

₹1000 PPG signaal op basis van hartslag rekenmachine en temperatuurdisplay met behulp van de arduino uno en Androïde OS

het project is in principe een draagbare hartslag en lichaamstemperatuur monitoringsysteem. Het heeft aan boord LCD-scherm weergeven en ook ondersteunen als u wilt weergeven van de parameters op een android apparaat in echt-tijd. Arduino is het brein
Automatische vis eten Feeder met behulp van de Arduino Uno

Automatische vis eten Feeder met behulp van de Arduino Uno

In deze Instructables ga ik u tonen hoe te bouwen van een Automatische vis eten Feeder. Zodat u niet hoeft te onthouden om het dagelijks het voeden van uw vissen omdat je Arduino zal het voor u doen. U kunt ook het instellen van timers waartegen de v
Traffic-light, 9 geleid met behulp van de Arduino Uno

Traffic-light, 9 geleid met behulp van de Arduino Uno

Benodigde materialen:1. 3 rode led, 3 geel geleid, 3 groene led2. breadboard3. Arduino UNO4. kabel5. de Arduino IDE op PC6. aansluiten van dradenSamenvatting van het project:Dit project is het maken van een eenvoudige verkeerslicht maar helpt in de b
Projector IR controle met behulp van de Arduino Uno

Projector IR controle met behulp van de Arduino Uno

Tijdens Halloween en Kerstmis, I-project video op een venster bij mijn huis. Het systeem maakt gebruik van een LED-projector die virtuele personages op een venster wordt weergegeven. Het effect maakt het verschijnen alsof het teken (s) echt in uw hui
Home Automation met behulp van de Arduino Uno

Home Automation met behulp van de Arduino Uno

Ooit wilde maken uw huis geautomatiseerde? Wilde de verlichting, ventilator en andere toestellen van uw smartphone? Of een tutorial over aangesloten apparaten en aan de slag met het gezocht? Android Home Automation zal u tonen hoe te maken van uw hui
DIY: Deur alarmsysteem met behulp van de Arduino Uno

DIY: Deur alarmsysteem met behulp van de Arduino Uno

dit is een deur alarm-systeem dat gemakkelijk kan worden gebouwd en geïnstalleerd. Het maakt gebruik van het fundamentele beginsel uiteengezet door de Arduino Uno ontwerpers die is het gebruik van de Sensor, Microcontroller en de bedieningssleutel. I
Home Automation DIY project met behulp van de Arduino UNO & Ethernet-Shield

Home Automation DIY project met behulp van de Arduino UNO & Ethernet-Shield

"Het belangrijkste doel van dit project is dat, hoe de controle van de huishoudelijke apparaten zoals TV, ventilator, buis licht, of om het even wat met behulp van uw computer of een draagbaar apparaat"Het hart van dit project is Ethernet-shield
Obstakel ontwijkt Robot met behulp van de Arduino Uno en de nabijheid van de IR Sensor

Obstakel ontwijkt Robot met behulp van de Arduino Uno en de nabijheid van de IR Sensor

Volg de stappen voor het maken van een obstakel vermijden Robot met behulp van Arduino Uno en IR Sensor van de nabijheidStap 1: Onderdelen die nodig zijn1) Arduino Uno R3 (kloon zal doen)2) IR naderingssensoren (2 aanbevolen)3) chassis met motoren4)
Persistentie van de visie met behulp van de Arduino UNO(New Prototype)

Persistentie van de visie met behulp van de Arduino UNO(New Prototype)

Hallo Guyz.Ik had gemaakt A Project op POV met behulp van Arduino UNO. Ik had vele modellen van vele verschillende gebruikers weergegeven op deze site. Dus kwam ik met een nieuw prototype van POV. Ik was niet zeker in het begin dat het zal werken of
Uploaden van de schets naar Pro Mini Arduino met behulp van de Arduino UNO

Uploaden van de schets naar Pro Mini Arduino met behulp van de Arduino UNO

Ik ben mijn manier begonnen met de arduino UNO, verhuizen naar pro mini ik niet kopen van de USB-adapter maar het UNO-bord gebruikt voor het uploaden van mijn schetsen.Stap 1: Verwijderen van de Atmel ICZeer cerfuly verwijderen de Atmel IC van de Ard
Hoe te programmeren met behulp van de arduino uno attiny

Hoe te programmeren met behulp van de arduino uno attiny

ik wilde even een kleine arduino voor mijn paar projecten omdat het kopen van een arduino voor elk project zal zijn te duur voor een 15 yrs oud guy!Stap 1: Dingen die je moetArduino IDEATtiny bestanden op je arduino IDEU kunt downloaden van de bestan
DIY Li-Fi met behulp van de Arduino Uno

DIY Li-Fi met behulp van de Arduino Uno

Zeer eenvoudig en nuttig project te begrijpen van de werking van Li-Fi, kun je ook je eigen Li-Fi-apparaat met een beetje meer wijzigingen in het ontwerp en de code die. Eigenlijk moet u de twee arduino, een te sturen en anderzijds te ontvangen zodat