任务:把Arduino产生的随机数通过串口发送给processing,用来改变背景灰度和正方形颜色
所需软硬件:
- Processing 3软件
- Arduino IDE
- Arduino Uno
最终效果如下,正方形的颜色和背景灰度会随机变化:
Arduino代码如下:
int randNumX=0;
int randNumY=0;
void setup() {
Serial.begin(9600);
}
void loop() {
randNumX = random(256);
Serial.print("<x>");
Serial.print(String(randNumX,DEC));
Serial.println("</x>");
randNumY=random(361);
Serial.print("<y>");
Serial.print(String(randNumY,DEC));
Serial.println("</y>");
delay(500);
}
Processing 代码如下,为了展示如何使用match()函数,这里使用的是match()函数,实际上这里用split()函数会更简单一些:
import processing.serial.*;
Serial port;
String str= "";
int val1, val2=0;
void setup() {
size(300, 200);
frameRate(10);
port = new Serial(this,"COM7", 9600);
background(255);
}
void draw() {
if (0 < port.available()) {
str = port.readString();
String[] m = match(str, "<x>(.*?)</x>");
val1=int(m[1]);
String[] n = match(str, "<y>(.*?)</y>");
val2=int(n[1]);
}
println(val1);
println(val2);
colorMode(RGB, 255);
background(val1);
colorMode(HSB, 360, 100, 100);
fill(val2,100,100);
rect(50, 50, 100, 100);
}