我的 RFID arduino 考勤系统将无法在处理中正确显示绘制的圆圈(签入/签出)



我是一名学生,和其他15个人一起住在学生宿舍里。我正在尝试制作一个考勤系统,该系统将在屏幕上显示谁在家,谁不在家。我认为给每个人一个RFID标签是一个很好的计划,所以当他们回家或离开时,他们可以办理入住和退房手续。这将在显示绿色或红色圆圈的屏幕上表示(使用处理)。

我已经使用了 https://www.youtube.com/channel/UC6LO26f_9qwysjvSHdVmfrQ 和 https://github.com/InfinityWorldHI/RFID_Excel 中的部分代码作为 arduino 代码。

我只为前两个室友编程处理。但是,当签入或签出时,两个圆圈都会改变颜色。我想要 2 行 8 个圆圈,可以从红色变为绿色,反之亦然,看看是否有人在家。

我的 arduino 程序输出房间编号 ","1 或 0(签入或签出)输出,例如 = 11,1。

处理程序将根据签入或签出绘制绿色或红色圆圈。

这是我的处理代码:

Arduino代码(输出到串行端口):


if(NumbCard[j] == 1 && statu[s] == 0 && Number == 11) {
statu[s]=1;
NumbCard[j]=0;
Serial.print(Number);
Serial.print(",");
Serial.println(1);
//Serial.println("is uitgecheckt");
//write led uit
}
else if(NumbCard[j] == 1 && statu[s] == 0 && Number == 22) {
statu[s]=1;
NumbCard[j]=0;
Serial.print(Number);
Serial.print(",");
Serial.println(1);
//Serial.println("is uitgecheckt");
//write led uit
}

处理代码以制作圆圈:

import processing.serial.*;
// ControlP5 Example 1 : Basic UI elements
import controlP5.*; // import controlP5 library
ControlP5 controlP5; // controlP5 object
Serial myPort;  // Create object from Serial class
int val;     // Data received from the serial port
int end = 10;    // Linefeed in ASCII
String myString = null;
int i =0;
PShape led_on, led_off;
String persoon_status;
color [] colors = new color[2]; 

void setup() {
colors[0] = color(0,255,0);
colors[1] = color(255,0,0);
//change the 0 to a 1 or 2 etc. to match your port
myPort = new Serial (this, Serial.list()[0], 9600);
//led_on = createShape(RECT,10,70,40,40,40);

size(800,800);
}
void draw() { 
background(255);
do{
myString = myPort.readStringUntil(end);
if (myString != null) {
println(myString);
}
}
while (myPort.available() > 0); {
if(myString != null && myString.trim().equals("11,1") == true) {
fill(colors[1]);
} else {
if (myString != null && myString.trim().equals("11,0") == true)
fill(colors[0]);
else{
rect(10,70,40,40,40);
}
}
if(myString != null && myString.trim().equals("22,1") == true){
fill(colors[1]);
} else {
if(myString != null && myString.trim().equals("22,0") == true)
fill(colors[0]);
else {
rect(10,130,40,40,40);
}
}
}
}

我想我快要走到尽头了,但是我无法弄清楚这个问题。

有人可以指出我正确的方向吗?

请随时向我询问更多信息。

您的帮助将不胜感激!

设置fill()颜色时,从该点绘制的所有形状将具有相同的颜色,直到使用新颜色设置fill()。 在您的代码中,您只在读取 RFID 时更改颜色,否则您只需绘制形状,这意味着它们都具有最后设置的颜色。
相反,您应该使用数组来存储每个室友的状态。然后,您可以遍历此数组,并在绘制矩形之前将填充设置为适当的颜色。

此代码片段显示了如何实现这一点。

boolean[] isPresent = { false, false};
void draw() {
// put the code that handles the RFID processing in
// a separate function that you call in draw
readRFID();
background(255);
//loop through the array
for (int i = 0; i < isPresent.length; i++) {     
//check status and set fill color
if (isPresent[i]) {
fill(colors[0]);
} else {
fill(colors[1]);
}
//draw rectangle with x-pos based on array index
rect(10+i*50, 10, 40, 40);
}
}

相关内容

  • 没有找到相关文章

最新更新