Как вы зажигаете мега-диод Arduino, используя Java?
Я хотел бы написать графический интерфейс на Java, в котором будет кнопка. При нажатии на кнопку загорится диод, подключенный к Arduino. Я использую библиотеку RXTXcomm.jar.
На данный момент я написал код, который отображает порт COM21, потому что именно так подключается мой Arduino и открывает его. Вот код:
private String name;
private String portName;
private CommPortIdentifier portIdentifier = null;
private boolean staPort;
private void getPorts () throws PortInUseException {
List <String> list = new ArrayList ();
CommPortIdentifier serialPortId;
Enumeration enumComm;
enumComm = CommPortIdentifier.getPortIdentifiers ();
while (enumComm.hasMoreElements ()) {
serialPortId = (CommPortIdentifier) enumComm.nextElement ();
name = serialPortId.getName ();
if ("COM21" .equals (name)) {
if (serialPortId.isCurrentlyOwned ()) {
System.out.println ("Port is open");
} Else {
serialPortId.open (name, WIDTH);
}
} else {
System.out.println ("error");
}
}
}
Я хотел бы спросить, как теперь зажечь диод, подключенный, например, к pin1? Какой метод использовать? Я использую Arduino Mega. Я нашел несколько сообщений на эту тему, к сожалению, нет конкретного ответа, соответствующего моей проблеме. Буду благодарен за любую помощь, материалы или ссылки.
1 ответ
Поймите, что вам понадобятся две программы для этого. Первый похож на вашу программу на Java. Но вторая - это программа, которая работает на самом Arduino.
Вот ссылка, которая должна дать вам представление. Код повторяется ниже в случае, если ссылка устарела:
int led = 13; // Pin 13
void setup()
{
pinMode(led, OUTPUT); // Set pin 13 as digital out
// Start up serial connection
Serial.begin(9600); // baud rate
Serial.flush();
}
void loop()
{
String input = "";
// Read any serial input
while (Serial.available() > 0)
{
input += (char) Serial.read(); // Read in one char at a time
delay(5); // Delay for 5 ms so the next char has time to be received
}
if (input == "on")
{
digitalWrite(led, HIGH); // on
}
else if (input == "off")
{
digitalWrite(led, LOW); // off
}
}
Это код C, который должен работать на Arduino. В этом случае, как вы можете видеть, он использует вывод 13. Вам нужно будет настроить среду разработки Arduino, чтобы эта часть работала. См. Страницу программного обеспечения Arduino для получения информации о том, как настроить Arduino IDE. Это будет отличаться от вашей среды IDE Netbeans, но концепции схожи.
После загрузки эскиза в Arduino вы подключитесь к нему со скоростью 9600 бод, как показано в коде Arduino. Ваш Java-код не устанавливает параметры связи, такие как скорость передачи, поэтому вам необходимо обновить его для этого. Я нашел несколько ссылок для настройки параметров последовательной связи в RXTX, так что посмотрите вокруг.
Удачи - сначала кажется, что это очень много, но на самом деле это не так уж плохо.