开发环境安装
Arduino IDE 1.8.12
常见的UNO板
纺织板
SainSmart的MEGA
arduino NANO
比较小,用于可穿戴电子产品和小型机器人等
官方是绿色的,放置是蓝色或者红的板子。
Firmata
这是个只需向控制板上传一次的程序。
选择自己需要的开发板
选择端口
点击上传
上传成功后就能退出Arduino俩人 然后就可以使用Processing控制Arduino控制板了。
利用光敏电阻来改变processing控制台颜色
processing代码
import processing.serial.*;
import cc.arduino.*;
import org.firmata.*;
Arduino arduino;
void setup()
{
size(400,400);
println(Arduino.list());
arduino =new Arduino(this,Arduino.list()[1],57600);
}
void draw()
{
int lightAmt =arduino.analogRead(0);
lightAmt =255-constrain(lightAmt,0,255);
background(lightAmt,0,0);
println(lightAmt);
if(lightAmt>230)
{
rect(100,100,100,100);
}
}
接线
光敏电阻模块
SIG就是AO口。
Processing控制LED灯颜色
processing程序
import processing.serial.*;
Serial port = new Serial(this, "COM3", 9600);
int redDisplay, greenDisplay, blueDisplay;
int red, green, blue;
String strRed, strGreen, strBlue;
String message;
void setup() {
size(700, 500);
}
void draw() {
background(204);
frame();
RGBDisplay();
sendMessage();
}
void frame() {
rectMode(CORNER);
noFill();
stroke(255, 0, 0);
strokeWeight(2);
rect(50, 100, 500, 50);
stroke(0, 255, 0);
rect(50, 200, 500, 50);
stroke(0, 0, 255);
rect(50, 300, 500, 50);
}
void RGBDisplay() {
rectMode(CORNER);
noStroke();
fill(red, 0, 0);
rect(50, 100, redDisplay, 50);
fill(0, green, 0);
rect(50, 200, greenDisplay, 50);
fill(0, 0, blue);
rect(50, 300, blueDisplay, 50);
fill(red, green, blue);
rect(300, 400, 50, 50);
fill(0);
rect(400, 400, 50, 50);
}
void mouseClicked() {
if (mouseX <= 550 && mouseX >= 50) {
if (mouseY <= 150 && mouseY >= 100) {
red = (int) map(mouseX, 50, 550, 0, 255);
redDisplay = mouseX - 50;
}
else if (mouseY <= 250 && mouseY >= 200) {
green = (int)map(mouseX, 50, 550, 0, 255);
greenDisplay = mouseX - 50;
}
else if (mouseY <= 350 && mouseY >= 300) {
blue = (int) map(mouseX, 50, 550, 0, 255);
blueDisplay = mouseX - 50;
}
else if (mouseX <= 450 && mouseX >= 400)
shut();
}
}
void sendMessage() {
strRed = red + "";
if (red < 100)
strRed = "0" + red;
if (red < 10)
strRed = "00" + red;
strGreen = green + "";
if (green < 100)
strGreen = "0" + green;
if (green < 10)
strGreen = "00" + green;
strBlue = blue + "";
if (blue < 100)
strBlue = "0" + blue;
if (blue < 10)
strBlue = "00" + blue;
message = "a" + strRed + strGreen + strBlue + "s";
port.write(message);
}
void shut() {
redDisplay = 0;
greenDisplay = 0;
blueDisplay = 0;
red = 0;
green = 0;
blue = 0;
}
Arduino程序
int redpin = 11;
int bluepin = 10;
int greenpin = 9;
void setup() {
pinMode(redpin, OUTPUT);
pinMode(bluepin, OUTPUT);
pinMode(greenpin, OUTPUT);
Serial.begin(9600);
}
char charbuf[20];
int color[3];
void loop() {
while (Serial.available() > 0) {
Serial.readBytesUntil('s', charbuf, 20);
if (charbuf[0] == 'a') {
color[0] = 100 * (charbuf[1] - '0') + 10 *( charbuf[2] -'0') + charbuf[3] -'0';
color[1] = 100 * (charbuf[4] - '0') + 10 *( charbuf[5] -'0') + charbuf[6] -'0';
color[2] = 100 * (charbuf[7] - '0') + 10 *( charbuf[8] -'0') + charbuf[9] -'0';
}
analogWrite(redpin, color[0]);
analogWrite(greenpin, color[1]);
analogWrite(bluepin, color[2]);
}
}