4

我正在尝试控制 4 个 LED 并从 4 个触点获取模拟输入。该程序是用Java编写的,因此要访问arduino的功能,例如AnalogRead()并将LED设置为高或低,导入处理库是否会让程序使用这些功能?

我还想知道,如果程序会自行传输到 arduino,还是 java 程序只会从引脚中提取数据?

4

2 回答 2

3

更新:我的建议是首先尝试自己与 Processing 交流 Arduino。这就是我在下面描述的。如果您想直接使用 Processing 直接控制 Arduino,Binary Nerd 提供的链接是您入门的最佳选择。

更新 2:也试试这个链接:Netbeans and Processing


Arduino 代码在 Arduino 上运行,而 Processing 代码在您的计算机上运行。如果你想通过 Processing 控制你的 Arduino,你很可能会使用串口,​​并创建两个程序。一,在 Arduino 上,可能会接收命令并执行操作(打开或关闭 LED),或发回答案。另一个,在处理中,可能会向 Arduino 发送必要的命令并以某种方式处理它的答案。

这是我为一个 LED 和一个模拟输入制作的一个简单示例。这是未经测试的代码。按照步骤。一旦成功,您可以尝试在 Netbeans 中直接使用 Arduino 处理。

步骤 1. Arduino

  1. 购买 Arduino 板。
  2. 下载 Arduino IDE ( http://www.arduino.cc )
  3. 将 Arduino 连接到您的计算机。
  4. 将 Arduino 代码(如下)复制到 Aruino IDE 中。
  5. 上传到 Arduino。

步骤 2.处理

  1. 下载处理 IDE。
  2. 将处理代码(如下)复制到处理 IDE 中。
  3. 确保代码中的 COM 端口是 Arduino 所连接的端口。
  4. 运行处理代码。

Arduino代码:

int ledPin = 13;
int analogPin = 0;
char c = 0;

void setup()
{
    pinMode( ledPin, OUTPUT );
    Serial.begin( 9600 );
}

void loop()
{
    // Wait for a character to arrive at the serial port.
    if( Serial.available() > 0 )
    {
        // Read one byte (character).
        c = Serial.read();
        switch( c )
        {
            case '1':
                // Turn LED on.
                digitalWrite( ledPin, HIGH );
                break;
            case '0':
                // Turn LED off.
                digitalWrite( ledPin, LOW );
                break;
            case 'q':
            case 'Q':
                // Send the reading from the analog pin throught the serial port.
                Serial.println( analogRead( analogPin ) );
                break;
        }
    }
}

处理代码(在您的计算机上运行)。

import processing.serial.*;

Serial serial;
String str;

void setup()
{
    size(400, 400);
    serial = new Serial(this, "COM1", 9600);    // Use the serial port connected
                                                // to your Arduino.
    while( true )
    {
        serial.write( '1' );        // Turn LED on.
        delay( 1000 );              // Wait one second
        serial.write( '0' );        // Turn LED off.
        delay( 1000 );
        serial.write( 'Q' );        // Get analog reading
        serial.bufferUntil( 10 );   // Wait for the data from the Arduino.
                                    // This captures characters until a newline
                                    // is received, the runs serialEvent()...
    }
}

void draw()
{
    background(0);
}

void serialEvent(Serial s)
{
    println( s.readString() );
}
于 2010-04-26T08:44:21.770 回答
0

使用处理库的想法是,您将标准固件程序上传到 arduino,然后使用串行通信使用 java 和处理访问 arduino 功能。

这篇文章应该可以帮助您:Arduino 和处理

因此,在您的 Java 程序中,您可以从输入中读取模拟值,并根据该读数更改输出引脚上的值。

于 2010-04-26T00:40:49.337 回答