I am looking to turn an LED on and off with a Java program. I did the project in C# in roughly 5 minutes, but it seems to be somewhat more challenging in Java. I had the Arduino wait for a 1 or 0 to be written to the COM port and would change the LED based on that. The code I am using for the Arduino is as follows.
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);
}
}
How would I do this with a Java application?
In order to communicate with a comm port in Java, you need some implementation of the Java Communications API. I can attest to RXTX, I have used it before to communicate with an Arduino.
Once you have your Java Communications implementation, it becomes fairly simple to communicate with an Arduino:
The RXTX website also has other examples [2] which you might find useful.
You can use the JArduino (Java-Arduino) library, which provides a Java API to control your Arduino using serial port (using a USB cable, or wireless devices behaving as serial ports from a software point of view), UDP (via an ethernet shield). All the code related to communication between Java and Arduino is managed internally by the library.
Here is a Java sample to blink an LED:
JArduino is available at: JArduino
You can easily build Arduino programs in Java, thanks to the excellent HaikuVM.
Here is an example: