xxxxxxxxxx
137
let serial;
let portName = "/dev/tty.usbmodem2101"; // Update this to match your Arduino's port
let rectangleColor;
let rectangleSize = 100;
const targetUID = "46CFF3B";
let openEyeImg, closedEyeImg;
let lastBlinkTime = 0;
const blinkInterval = 2000; // 2 seconds
const blinkDuration = 400; // 0.4 seconds
function preload() {
openEyeImg = loadImage("open.png");
closedEyeImg = loadImage("closed.png");
}
function setup() {
createCanvas(480, 600);
textAlign(CENTER, CENTER);
textSize(16);
rectangleColor = color(0, 0, 0, 0); // Start with transparent color
serial = new p5.SerialPort();
serial.on("list", gotList);
serial.on("connected", serverConnected);
serial.on("open", portOpen);
serial.on("data", serialEvent);
serial.on("error", serialError);
serial.on("close", portClose);
serial.list();
serial.open(portName);
}
function draw() {
clear();
blinkImage();
// Draw the rectangle
strokeWeight(5);
fill("white");
rect(30, 470, rectangleSize, rectangleSize);
// Add text instructions
fill(0);
text(
"RFID Tag: " + (rectangleColor.levels[0] > 0 ? "Detected" : "Not Detected"),
width / 2,
height - 40
);
text(
"FSR: " + (rectangleSize > 100 ? "Pressed" : "Released"),
width / 2,
height - 20
);
}
function blinkImage() {
// Draw the fitted eye image
let currentTime = millis();
let eyeImg;
if (
currentTime - lastBlinkTime > blinkInterval &&
currentTime - lastBlinkTime <= blinkInterval + blinkDuration
) {
eyeImg = closedEyeImg;
} else {
eyeImg = openEyeImg;
}
let scale = min(width / eyeImg.width, height / eyeImg.height);
image(
eyeImg,
(width - eyeImg.width * scale) / 2,
(height - eyeImg.height * scale) / 2,
eyeImg.width * scale,
eyeImg.height * scale
);
if (currentTime - lastBlinkTime > blinkInterval + blinkDuration) {
lastBlinkTime = currentTime;
}
}
function serialEvent() {
let inString = serial.readStringUntil("\r\n").trim();
console.log("Received:", inString);
if (inString.startsWith("RFID")) {
let parts = inString.split(":");
let reader = parts[0].substring(4); // Extract reader name
let uid = parts[1];
console.log("RFID tag detected on " + reader + " with UID: " + uid);
// Check if the detected UID matches the target UID
if (uid === targetUID) {
rectangleColor = color(255, 0, 0); // Red
} else {
rectangleColor = color(0, 0, 0, 0); // Transparent
}
} else if (inString.startsWith("FSR")) {
let state = inString.split(":")[1];
if (state === "PRESSED") {
console.log("FSR Pressed");
rectangleSize = 200; // Make the rectangle bigger
} else if (state === "RELEASED") {
console.log("FSR Released");
rectangleSize = 100; // Make the rectangle smaller
}
}
}
function gotList(thelist) {
console.log("Available serial ports:");
for (let i = 0; i < thelist.length; i++) {
console.log(i + ": " + thelist[i]);
}
}
function serverConnected() {
console.log("Connected to Server");
}
function portOpen() {
console.log("Serial Port Opened");
}
function serialError(err) {
console.log("Serial Port Error: " + err);
}
function portClose() {
console.log("Serial Port Closed");
}