xxxxxxxxxx
66
let velocity;
let gravity;
let position;
let acceleration;
let wind = 0;
let drag = 0.99;
let mass = 50;
let bounceLED = false;
function setup() {
createCanvas(640, 360);
noFill();
position = createVector(width/2, 0);
velocity = createVector(0, 0);
acceleration = createVector(0, 0);
gravity = createVector(0, 0.5 * mass);
}
function draw() {
background(255);
applyForce(createVector(wind, 0)); // Apply wind force
applyForce(gravity);
velocity.add(acceleration);
velocity.mult(drag);
position.add(velocity);
acceleration.mult(0);
ellipse(position.x, position.y, mass, mass);
if (position.y > height - mass / 2) {
velocity.y *= -0.9; // A little dampening when hitting the bottom
position.y = height - mass / 2;
if (!bounceLED) {
sendBounceSignal(); // Send signal to Arduino when ball bounces
bounceLED = true;
}
} else {
bounceLED = false;
}
}
function applyForce(force) {
// Newton's 2nd law: F = M * A
// or A = F / M
let f = p5.Vector.div(force, mass);
acceleration.add(f);
}
function sendBounceSignal() {
// Send signal to Arduino to light up LED
// You can send any character or value to Arduino
// Here, I'm sending '1' to indicate LED on
serialWrite('1');
}
// Function to send data to Arduino via serial port
function serialWrite(data) {
// You can implement this function using the p5.serialport library
// which allows communication between p5.js and Arduino
// Check the documentation for usage: https://github.com/p5-serial/p5.serialport
}
// Function to receive data from Arduino via serial port
function serialEvent() {
// You can implement this function if you need to receive data from Arduino
}