2016-11-25 5 views
1

処理IDEデータをarduinoに送信したいと思います。しかし、リードは機能していません。それは一度うまくいきました。しかし、今は働いていない:(それは処理によって発見されたとして、シリアルポート名は、arduinoの中にまったく同じですIDEデータがarduinoに適切に送信されていません

処理コード:

import processing.serial.*; 

Serial myPort; // Create object from Serial class 

void setup() 
{ 
    size(200,200); //make our canvas 200 x 200 pixels big 
    String portName = Serial.list()[0]; //change the 0 to a 1 or 2 etc. to match your port 
    myPort = new Serial(this, portName, 9600); 
} 
     //send a 1 

void draw() { 
    if (mousePressed == true) 
    {       //if we clicked in the window 
    myPort.write('1');   //send a 1 
    println("1"); 
    } else 
    {       //otherwise 
    myPort.write('0');   //send a 0 
    } 
} 

Arduinoのコード:

char val='0'; // Data received from the serial port 
int ledPin = 13; // Set the pin to digital I/O 13 

void setup() { 
    pinMode(ledPin, OUTPUT); // Set pin as OUTPUT 
    Serial.begin(9600); // Start serial communication at 9600 bps 
} 

    void loop() { 
    //digitalWrite(ledPin, HIGH); // turn the LED on 
if (Serial.available()) 
    { // If data is available to read, 
    val = Serial.read(); // read it and store it in val 
    } 
    if (val == '1') 
    { // If 1 was received 
    digitalWrite(ledPin, HIGH); // turn the LED on 
    } else { 
    digitalWrite(ledPin, LOW); // otherwise turn it off 
    } 
    delay(10); // Wait 10 milliseconds for next reading 
} 
+0

デバッグを済ませましたか? printステートメントを使用して、処理スケッチで実行中のコードセクションを特定しましたか?あなたのコードがArduino側で実行されているかどうかを判断しましたか?あなたがArudinoで 'delay(10) 'を呼んでいるので、Processingからのシグナルが1フレームごとに送られてくるので、シグナルは蓄積されませんか? –

+0

@NurImtiazulHaque ArduinoコードとProcessingコードはどちらも意味があります。唯一の注意点は、draw()でデータを送信することです。つまり、マウスが押されている間、LEDが点灯するはずです。 LEDに問題がある場合は、一時的に* Examples> Basics> Blink *スケッチをアップロードして、まだ動作していることを確認してください。テストするためのオンボードLEDがあります。ピン13に手動でLEDを接続した場合、接点が正常で、ピン(陰極/陽極)が正しい方法で接続されています。 –

+0

オンボードLED(ピン13)を使用しています。これは、マウスを押して離すと0と1を同時に表示しています。シリアルポート番号同じです。私はチェックするために印刷しました。しかし、データはシリアルポートに送信されていません。私は何が起こっているのか分かりません:(@KevinWorkman –

答えて

0

処理

あなたは単にif(mousePressed)...と言うことができ、== trueと言う必要はありません(それは暗示されています)

Arduinoの

あなたがそこから読み取るどんな文字でvalを上書きしようとする前にif(Serial.available())をチェックして、正しいです。ただし、このチェックに関係なく、loop()のコードの残りの部分が実行されています。既に存在する場合、LOWまたはHIGHにピンを繰り返し書き込む理由はありません。実際には、文字を読んで見つけたところでループを遅らせるだけで、より反応がよくなります。

Arduinoコードにいくつかの印刷ステートメントを追加して、読んでいるものを見ることをお勧めします。

また、ハードウェアが不適切に接続されているか、LEDが消耗している可能性がありますか?

関連する問題