按下物理按鍵後,Processing的顯示屏幕會由白色轉為黑色,再按多一次,會由黑色轉為白色。
x1byte push_button = 2;
2boolean button_state, last_button_state;
3unsigned long button_counter;
4
5void setup(){
6 Serial.begin(115200);
7 pinMode(push_button, INPUT);
8}
9
10void loop(){
11 button_state = digitalRead(push_button);
12
13 if(button_state != last_button_state && button_state == HIGH){
14 button_counter++;
15 }
16
17 if(button_counter % 2 == 0) Serial.println(0);
18 else Serial.println(1);
19
20 last_button_state = button_state;
21}
xxxxxxxxxx
291import processing.serial.*;
2Serial myPort;
3
4int x_position, y_position;
5
6void setup() {
7 size(512, 512);
8 println(Serial.list());
9 myPort = new Serial(this, Serial.list()[0], 115200);
10 myPort.bufferUntil('\n');
11}
12
13void draw() {
14 //此處為空
15}
16
17void serialEvent(Serial myPort){
18 String myString = myPort.readStringUntil('\n');
19 myString = trim(myString);
20
21 int data[] = int(split(myString, ','));
22
23 for (int i = 0; i < data.length; i++) {
24 print(data[i] + " ");
25 }
26 println();
27 if (data[0] == 0) background(0);
28 else if (data[0] == 1) background(255);
29}
整段程式碼幾乎和上一章的一樣。
Processing在Arduino中收到一個數據,非0
就是255
。再把這個數據用background(data[0]);
顯示出來。
background()
有幾種用法,Processing預設顏色模式是RGB mode:
background(red, green, blue);
三個數值都是介乎於0-255之間,例如(255,0,0)
就是紅色,(0,255,0)
就是綠色。 也可以只輸入一個0-255間的數值,代表灰度,0就是黑色,255就是白色。詳細可參考這裡。
將上面的例程改進,參考模式轉換,每按一下,背景顏色分別順序變成:黑、啡、紅、橙、黃、綠、藍、紫、灰、白。(p.s. Processing本身有顏色選擇器,在"Tools --> Color Selector")