我有点卡在某事上。我正在尝试使用带有2个按钮的arduino处理2个LED。目标是将1个按钮链接到一个led。
现在问题。我已经尝试了几件事,但我不能让第二件工作。第一个负责人正在处理这两个按钮。
有人可以帮我弄清楚我做错了吗?
ARDUINO CODE
int LED1 = 10;
int LED2 = 11;
int val1 = 0;
int val2 = 0;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
Serial.begin(9600);
}
void loop() {
analogWrite(LED1, LOW);
analogWrite(LED2, LOW);
if (Serial.available() >1){
val1 = Serial.read();
val2 = Serial.read();
}
if (val1 >10 && val2 ==0){
digitalWrite(LED1, HIGH);
}else{
digitalWrite(LED1, LOW);
}
if (val2 >10 && val1 ==0){
digitalWrite(LED2, HIGH);
}else{
digitalWrite(LED2, LOW);
}
}
处理代码
import processing.serial.*;
Serial myPort;
void setup() {
size(640, 360);
background(100);
noStroke();
String portName = Serial.list() [1];
myPort = new Serial(this, portName, 9600);
}
int value1 = 0;
int value2 = 0;
void draw() {
if (myPort.available()>0){
}
fill(value1);
rect(150, 50, 50, 50);
fill(value2);
rect(50, 210, 50, 50);
println("VALUE1_"+value1);
println("VALUE2_"+value2);
}
void mousePressed() {
if (mouseX > 149 && mouseX < 200 && mouseY > 49 && mouseY < 101) {
if (value1 == 0){
value1 = 255;
myPort.write(value1);
}else{
value1 = 0;
myPort.write(value1);
}
}
if (mouseX > 49 && mouseX < 100 && mouseY > 209 && mouseY < 250) {
if (value2 == 0){
value2 = 255;
myPort.write(value2);
}else {
value2 = 0;
myPort.write(value2);
}
}
}
答案 0 :(得分:0)
首先要做的事情。设计你的系统!什么是聪明的沟通方式?发送这么多字节?还是只有一个字节?如果我这样做,我会想到4种不同的可能状态:1-两个LED应该打开 - &gt;我会将A发送到Arduino以指示此状态2-左LED指示灯亮,而右LED指示灯熄灭 - &gt;将B发送到Arduino 3-右侧LED亮,而左侧LED熄灭 - &gt;将C发送到Arduino 4-两个LED都关闭 - &gt;发送D到Arduino
现在您的处理代码可能是这样的:
import processing.serial.*;
Serial myPort;
boolean leftLed;
boolean rightLed;
void setup() {
size(640, 360);
background(100);
noStroke();
String portName = Serial.list() [1];
myPort = new Serial(this, portName, 9600);
leftLed=false;
rightLed=false;
}
void draw() {
fill(value1);
rect(150, 50, 50, 50);
fill(value2);
rect(50, 210, 50, 50);
}
void updateArduino(){
if(rightLed && leftLed) myPort.write("A");
else if(leftLed) myPort.write("B");
else if(rightLed) myPort.write("C");
else myPort.write("D");
}
void mousePressed() {
if (mouseX > 149 && mouseX < 200 && mouseY > 49 && mouseY < 101)
leftLed = !leftLed;
else if (mouseX > 49 && mouseX < 100 && mouseY > 209 && mouseY < 250)
rightLed=!rightLed;
updateArduino();
}
在Arduino中,请按照以下方式阅读:
if (Serial.available()){
char temp=Serial.read();
if(temp=='A') {
//turn on both lights
}
else if(temp=='B'){
//turn on left light
}
else if(temp=='C'){
//turn on right light
}
else if(temp=='D'){
//turn off both lights
}
}