使用Java控制Arduino

我希望用Java程序打开和关闭LED 。 我在大约5分钟内完成了C#中的项目,但在Java中似乎更具挑战性。 我让Arduino等待1或0写入COM端口,并根据它改变LED。 我用于Arduino的代码如下。

int LedPin = 13; char data; void setup() { Serial.begin(9600); pinMode( LedPin , OUTPUT ); } void loop() { data = Serial.read(); if (Serial.available() > 0) { if(data == '1' ) { digitalWrite(LedPin,HIGH); } else if(data == '0' ) { digitalWrite(LedPin,LOW); } } else if (Serial.available()<0) { digitalWrite(LedPin,HIGH); delay(500); digitalWrite(LedPin,LOW); delay(500); } } 

我如何使用Java应用程序执行此操作?

您可以使用JArduino(Java-Arduino)库,它提供Java API来使用串行端口控制您的Arduino(使用USB电缆,或从软件角度看作为串行端口的无线设备),UDP(通过以太网)屏蔽)。 与Java和Arduino之间的通信相关的所有代码都由库内部管理。

这是一个闪烁LED的Java示例 :

 public class Blink extends JArduino { public Blink(String port) { super(port); } @Override protected void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinMode(DigitalPin.PIN_12, PinMode.OUTPUT); } @Override protected void loop() { // set the LED on digitalWrite(DigitalPin.PIN_12, DigitalState.HIGH); delay(1000); // wait for a second // set the LED off digitalWrite(DigitalPin.PIN_12, DigitalState.LOW); delay(1000); // wait for a second } public static void main(String[] args) { String serialPort; if (args.length == 1) { serialPort = args[0]; } else { serialPort = Serial4JArduino.selectSerialPort(); } JArduino arduino = new Blink(serialPort); arduino.runArduinoProcess(); } } 

JArduino可在以下url获得: JArduino

为了与Java中的通信端口进行通信,您需要一些Java Communications API的实现 。 我可以certificateRXTX ,我以前用它来与Arduino通信。

实现Java Communications后,与Arduino进行通信变得相当简单:

 CommPort arduino = getArduinoPort(); arduino.getOutputStream().write(1); public CommPort getArduinoPort() { Enumeration ports = CommPortIdentifier.getPortIdentifiers(); while(ports.hasMoreElements()) { CommPortIdentifier identifier = (CommPortIdentifier) ports.nextElement(); if(isArduino(identifier)) { return identifier.open(getClass().getName(), 2000); // 2 second timeout } } return null; } public boolean isArduino(CommPortIdentifier identifier) { // if you know the name of the port ahead of time you can // compare it here with identifier.getName(), otherwise // you can interface with the user like the Arduino IDE's // serial monitor } 

RXTX网站还有其他一些你可能会觉得有用的例子 [ 2 ]。

借助优秀的HaikuVM ,您可以轻松地使用Java构建Arduino程序。

这是一个例子:

 import static processing.hardware.arduino.cores.arduino.Arduino.*; public class Blink { static byte ledPin = 13; // LED connected to digital pin 13 public static void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } public static void loop() // run over and over again { digitalWrite(ledPin, HIGH); // sets the LED on delay(500); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(500); // waits for a second } }