绘制矩形

时间:2017-10-20 15:32:49

标签: arduino processing

对于我正在参加的新课程,我必须在Processing和Arduino之间建立连接。我希望如果某个开关打开,则在Processing中绘制一个矩形。

为此,我有3个开关和一个按钮。三个开关代表一种颜色:红色,绿色和蓝色。因此,用户应首先选择一种颜色,然后按te按钮,以某种颜色绘制矩形。

之后,用户应该可以关闭该颜色的开关,打开另一种颜色的开关,然后按下开关绘制第二个矩形。遗憾的是,这对我不起作用。

绘制一个矩形后,无法绘制另一个矩形。我对此很陌生,所以如果我的代码非常糟糕,我很抱歉!

我的Arduino代码:

int switchPinRed = 21;
int switchPinGreen = 22;
int switchPinBlue = 23;
int buttonPinRect = 20;

void setup() {
  pinMode(switchPinRed, INPUT);             // Set pin 0 as an input
  pinMode(switchPinGreen, INPUT);
  pinMode(switchPinBlue, INPUT);
  pinMode(buttonPinRect, INPUT);
  Serial.begin(9600);                    // Start serial communication at 9600 bps
}

void loop() {

  if (digitalRead(buttonPinRect) == HIGH) {
    Serial.print(1);
  }

  else if (digitalRead(switchPinRed) == HIGH) {
    Serial.print(2);
  }

  else if (digitalRead(switchPinGreen) == HIGH) {
    Serial.print(3);
  }

  else if (digitalRead(switchPinBlue) == HIGH) {
    Serial.print(4);
  }
}

我的处理代码:

import processing.serial.*;

Serial myPort;  
int val; 

int[] rects = new int [3];

void setup() 
{
  size(600, 200);
  String portName = Serial.list()[0];
  myPort = new Serial(this, "/dev/tty.usbmodem3330431", 9600);

  for (int i=0; i < 3; i++) {
    rects[i] = 0;
  }
}

void draw()
{
  if ( myPort.available() > 0) {  
    val = myPort.read();
  }


  background(255); 

  for (int i =0; i < 3; i++) {

  if (val == 1) {
      if (val == 2) {
        fill(255, 0, 0);


      } else if (val == 3) {
        fill(0, 255, 0);


      } else if (val == 4) {
        fill(0, 0, 255);


      }

      rect(random(50), random(50), 100, 100);

    }
  }
}

1 个答案:

答案 0 :(得分:0)

此代码没有意义:

if (val == 1) {
  if (val == 2) {
    fill(255, 0, 0);
  } else if (val == 3) {
    fill(0, 255, 0);
  } else if (val == 4) {
    fill(0, 0, 255);
  }
  rect(random(50), random(50), 100, 100);
}

首先检查val == 1是否为val == 2,如果是,请检查是否if (val == 1) { //fill? } else if (val == 2) { fill(255, 0, 0); } else if (val == 3) { fill(0, 255, 0); } else if (val == 4) { fill(0, 0, 255); } rect(random(50), random(50), 100, 100); 。情况永远不会如此。也许你的意思是这样的?

from