绘制矩形
Drawing rectangles
对于我要参加的新课程,我必须在 Processing 和 Arduino 之间建立连接。我希望如果某个开关打开,则在处理中绘制一个矩形。
为此我有 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);
}
}
}
这段代码没有意义:
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);
对于我要参加的新课程,我必须在 Processing 和 Arduino 之间建立连接。我希望如果某个开关打开,则在处理中绘制一个矩形。
为此我有 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);
}
}
}
这段代码没有意义:
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);