-Kira 发表于 2016-3-14 04:15:47

关于arduino和processing的串口通信···········

我写了一个arduino和processing串口通信例子,鼠标在processing窗口移动会导致arduino的面包板上不同数量led发光,然后无论怎么修改都实现不了,求各位大神给点建议,谢谢
processing

import processing.serial.*;
Serial Port;      // The serial port

void setup()
{
size(640,480);

Port = new Serial(this,"COM3",9600);


}

void draw()
{
char temp;

background(255,255,255);
if(mouseX<width/2 && mouseY<height/2){
    rect(0,0,320,240);
    fill(0,0,255);
    temp=1;
    Port.write(temp);
   
      
}

if(mouseX>width/2 && mouseY<height/2){
    rect(320,0,320,240);
    fill(255,0,0);
    temp=2;
    Port.write(temp);
}

   if(mouseX<width/2 && mouseY>height/2){
    rect(0,240,320,240);
    fill(0,255,0);
    temp=3;
    Port.write(temp);
}
   
   if(mouseX>width/2 && mouseY>height/2){
    rect(320,240,320,240);
    fill(255,0,255);
    temp=4;
    Port.write(temp);
}

}



Arduino

int ledPin1 = 11;
int ledPin2 = 10;
int ledPin3 = 9;
int ledPin4 = 8;

void setup() {
Serial.begin(9600);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
}


void loop() {
   if(Serial.available()>0){
      char temp= Serial.read();
    if(temp=='1'){
       digitalWrite(ledPin1, HIGH);
       digitalWrite(ledPin2, LOW);
       digitalWrite(ledPin3, LOW);
       digitalWrite(ledPin4, LOW);
    }
   
      if(temp== '2'){
       digitalWrite(ledPin1, HIGH);
       digitalWrite(ledPin2, HIGH);
       digitalWrite(ledPin3, LOW);
       digitalWrite(ledPin4, LOW);
    }
   
      if(temp=='3'){
       digitalWrite(ledPin1, HIGH);
       digitalWrite(ledPin2, HIGH);
       digitalWrite(ledPin3, HIGH);
       digitalWrite(ledPin4, LOW);
    }
   
      if(temp=='4'){
       digitalWrite(ledPin1, HIGH);
       digitalWrite(ledPin2, HIGH);
       digitalWrite(ledPin3, HIGH);
       digitalWrite(ledPin4, HIGH);
    }
delay(1000);
}
}

zoologist 发表于 2016-3-14 08:34:29

你先测试直接用串口工具发送 1 2 3 4到arduino上能否控制

328522073 发表于 2016-3-14 09:26:12

if(temp=='1'){
       digitalWrite(ledPin1, HIGH);
       digitalWrite(ledPin2, LOW);
       digitalWrite(ledPin3, LOW);
       digitalWrite(ledPin4, LOW);
    }
‘1’改成1,其他的也一样。你processing端发送的是数值1,‘1’的ascii码不是1。
页: [1]
查看完整版本: 关于arduino和processing的串口通信···········