Как вы зажигаете мега-диод 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, так что посмотрите вокруг.

Удачи - сначала кажется, что это очень много, но на самом деле это не так уж плохо.

Другие вопросы по тегам