Week 11 – In Class Practice

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
}
}
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 } }
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
int potPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int potValue = analogRead(potPin);
Serial.println(potValue); // Send value to p5.js
delay(10);
}
int potPin = A0; void setup() { Serial.begin(9600); } void loop() { int potValue = analogRead(potPin); Serial.println(potValue); // Send value to p5.js delay(10); }
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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);
}
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); }
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
}
}
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 } }
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
}
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; } }
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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);
}
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); }
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);
}

 

 

Leave a Reply