The following are the p5 codes and the Arduino code for the exercises that we had done in class. I have used a potentiometer as my sensor.
Exercise 1 :
P5 Code
let serial;
let xPos = 0;
function setup() {
  createCanvas(800, 400);
  // Initialize serial
  serial = new p5.WebSerial();
  serial.open(); // Opens serial connection
  // Listen for incoming data
  serial.on("data", serialEvent);
}
function draw() {
  background(220);
  ellipse(xPos, height / 2, 50, 50);
}
function serialEvent() {
  let data = serial.readLine(); // Read data from Arduino
  if (data.length > 0) {
    xPos = map(Number(data), 0, 1023, 0, width); // Map sensor value to canvas width
  }
}
Arduino Code
int potPin = A0;
void setup() {
  Serial.begin(9600);
}
void loop() {
  int potValue = analogRead(potPin);
  Serial.println(potValue); // Send value to p5.js
  delay(10);
}
Exercise 2:
P5 Code
let serial;
let brightness = 0;
function setup() {
  createCanvas(400, 200);
  // Initialize serial
  serial = new p5.WebSerial();
  serial.open(); // Opens serial connection
}
function draw() {
  background(220);
  brightness = map(mouseX, 0, width, 0, 255); // Map mouse position to brightness
  serial.write(brightness + "\n"); // Send brightness to Arduino
  fill(0);
  text("Brightness: " + brightness, 10, 20);
}
Arduino Code
int ledPin = 9;
void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
void loop() {
  if (Serial.available() > 0) {
    int brightness = Serial.parseInt();
    analogWrite(ledPin, brightness); // Set LED brightness
  }
}
Exercise 3:
P5 Code
let serial;
let balls = [];
let wind = 0;
function setup() {
  createCanvas(400, 400);
  serial = new p5.WebSerial();
  serial.open();
  // Initialize balls
  for (let i = 0; i < 10; i++) {
    balls.push(new Ball(random(width), random(height / 2)));
  }
  serial.on("data", serialEvent);
}
function draw() {
  background(220);
  for (let ball of balls) {
    ball.applyForce(createVector(wind, 0.1)); // Apply wind
    ball.update();
    ball.display();
    if (ball.isBouncing()) {
      serial.write("bounce\n"); // Send bounce signal to Arduino
    }
  }
}
function serialEvent() {
  let data = serial.readLine();
  if (data.length > 0) {
    wind = map(Number(data), 0, 1023, -0.2, 0.2); // Map sensor value to wind
  }
}
class Ball {
  constructor(x, y) {
    this.pos = createVector(x, y);
    this.vel = createVector(0, 0);
    this.acc = createVector(0, 0);
    this.r = 10;
  }
  applyForce(force) {
    this.acc.add(force);
  }
  update() {
    this.vel.add(this.acc);
    this.pos.add(this.vel);
    this.acc.set(0, 0);
    // Check for bounce
    if (this.pos.y > height - this.r) {
      this.pos.y = height - this.r;
      this.vel.y *= -0.8; // Reverse and reduce velocity
    }
  }
  display() {
    ellipse(this.pos.x, this.pos.y, this.r * 2);
  }
  isBouncing() {
    return this.pos.y >= height - this.r;
  }
}
Arduino Code
int sensorPin = A0;
int ledPin = 13;
void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
void loop() {
  int sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue); // Send sensor value to p5.js
  // Toggle LED for bounce feedback
  digitalWrite(ledPin, HIGH);
  delay(100);
  digitalWrite(ledPin, LOW);
}