0

私は現在、大学でarduinoプロジェクトに取り組んでいます。基本的に私がやろうとしているのは、VVVV から arduino にデータの文字列を送信することですが、データを配列に解析する必要があり、これを行う方法がまったくわかりません!

VVVV から送信される文字列は次のようなものです。U、c、R、|、W、H、P および I は、これらの値のそれぞれを特定のサーボに毎回書き込む必要があるため、値 1 はサーボ 1 に移動する必要があります。

これが現時点での私のコードです。コード化がかなり悪いことに気づきました。データを解析する方法を見つけたら、より効率的にするつもりです。

#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

char array1[4] = { '0', '0', '0', '0'}; //array for midi variables

void setup()
{
 // begin the serial communication
 Serial.begin(9600);

 servo1.attach(2);
 servo2.attach(3);
 servo3.attach(4);
 servo4.attach(5);

}

void loop(){
  while (Serial.available() == 0)  {
    array1[0] = 0;
    array1[1] = 0;
    array1[2] = 0;
    array1[3] = 0;
  }

{


 // check if data has been sent from the computer
 if (Serial.available() >= 4) {
    for ( int i = 0; i < 4; i++)
    array1[i] = Serial.read();


  }


   Serial.print(array1[0]);
   Serial.print(array1[1]);
   Serial.print(array1[2]);
   Serial.print(array1[3]);



   servo1.write(array1[0]);
   servo2.write(array1[1]);
   servo3.write(array1[2]);
   servo4.write(array1[3]);


}
}

編集 - 最終的には 7 つのサーボを使用することを検討していることに言及する必要がありますが、現時点では回路で 4 つしか使用していません。また、このパッチをアップロードして VVVV を有効にすると、arduino が切断されます。

4

3 に答える 3

1

@ opc0de この一連の問題により、多くの混乱が生じています。自分も含めて。おそらく同様の問題がここにあります

私は最近これに手を出しました。Arduino IDE 以外のほとんどのものからシリアル通信を受信すると、Arduino は自動的にリセットされます。これが、node.js ではなく IDE から送信できる理由です。

私は Uno を持っていて、Reset と Ground の間にコンデンサーを入れています。幸運を。 http://arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

于 2012-06-19T17:49:56.107 に答える
0
if (Serial.available() > 3)
{
    for (int i=0; i < 4 ; i++)
    {
        array[i] = Serial.read();
    }
    Serial.flush();
}

それが役に立てば幸い !

于 2012-05-07T11:28:19.727 に答える