Exercise 1: make something that uses only one sensor on arduino and makes the ellipse in p5 move on the horizontal axis, in the middle of the screen, and nothing on arduino is controlled by p5
Using the ultrasound sensor, the circle moves horizontally on the canvas.
Video: exercise_1_week_11
P5.js link:
Arduino code:
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, HIGH);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Calculate distance in centimeters
distance = duration * 0.034 / 2;
Serial.println(distance); // Print distance in centimeters
delay(100); // Delay for stability
#define echoPin 2
#define trigPin 3
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Calculate distance in centimeters
distance = duration * 0.034 / 2;
Serial.println(distance); // Print distance in centimeters
delay(100); // Delay for stability
}
#define echoPin 2
#define trigPin 3
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Calculate distance in centimeters
distance = duration * 0.034 / 2;
Serial.println(distance); // Print distance in centimeters
delay(100); // Delay for stability
}
Exercise 2: make something that controls the LED brightness from p5.
The LED brightness is controlled by the vertical distance of MouseY and the top of the screen. The higher the distance the brighter the LED. So, when the user drags the ellipse from the top to the bottom of the canvas, the brightness of the LED increases proportionally and vice versa.
Video: exercise_2_week_11
P5.js link:
Arduino code:
//exercise 2, week 11, controlling the brightness of LED with p5.js
const int ledPin = 5; //the LED pin is at 5
// Start serial communication so we can send data
// over the USB connection to our p5js sketch
// use the builtin LED as a status output.
pinMode(LED_BUILTIN, OUTPUT);
while (Serial.available() <= 0) {
digitalWrite(LED_BUILTIN, HIGH); // on/blink while waiting for serial data
Serial.println("0"); // send a starting message
delay(300); // wait 1/3 second
digitalWrite(LED_BUILTIN, LOW);
// Wait for data from p5 before doing something
while (Serial.available()) {
digitalWrite(LED_BUILTIN, HIGH); // LED on while receiving data
// reading the integer value, confirming that the next character is a new line and sending confirmation 1
int brightness = Serial.parseInt();
if (Serial.read() == '\n') {
// LED brightness is set accordingly
analogWrite(ledPin, brightness);
digitalWrite(LED_BUILTIN, LOW);
//exercise 2, week 11, controlling the brightness of LED with p5.js
//Diana and Buka
// Output:
// - 5 - LED
const int ledPin = 5; //the LED pin is at 5
void setup() {
// Start serial communication so we can send data
// over the USB connection to our p5js sketch
Serial.begin(9600);
// use the builtin LED as a status output.
pinMode(LED_BUILTIN, OUTPUT);
pinMode(ledPin, OUTPUT);
// Start the handshake
while (Serial.available() <= 0) {
digitalWrite(LED_BUILTIN, HIGH); // on/blink while waiting for serial data
Serial.println("0"); // send a starting message
delay(300); // wait 1/3 second
digitalWrite(LED_BUILTIN, LOW);
delay(50);
}
}
void loop() {
// Wait for data from p5 before doing something
while (Serial.available()) {
digitalWrite(LED_BUILTIN, HIGH); // LED on while receiving data
// reading the integer value, confirming that the next character is a new line and sending confirmation 1
int brightness = Serial.parseInt();
if (Serial.read() == '\n') {
delay(5);
Serial.println("1");
}
// LED brightness is set accordingly
analogWrite(ledPin, brightness);
}
digitalWrite(LED_BUILTIN, LOW);
}
//exercise 2, week 11, controlling the brightness of LED with p5.js
//Diana and Buka
// Output:
// - 5 - LED
const int ledPin = 5; //the LED pin is at 5
void setup() {
// Start serial communication so we can send data
// over the USB connection to our p5js sketch
Serial.begin(9600);
// use the builtin LED as a status output.
pinMode(LED_BUILTIN, OUTPUT);
pinMode(ledPin, OUTPUT);
// Start the handshake
while (Serial.available() <= 0) {
digitalWrite(LED_BUILTIN, HIGH); // on/blink while waiting for serial data
Serial.println("0"); // send a starting message
delay(300); // wait 1/3 second
digitalWrite(LED_BUILTIN, LOW);
delay(50);
}
}
void loop() {
// Wait for data from p5 before doing something
while (Serial.available()) {
digitalWrite(LED_BUILTIN, HIGH); // LED on while receiving data
// reading the integer value, confirming that the next character is a new line and sending confirmation 1
int brightness = Serial.parseInt();
if (Serial.read() == '\n') {
delay(5);
Serial.println("1");
}
// LED brightness is set accordingly
analogWrite(ledPin, brightness);
}
digitalWrite(LED_BUILTIN, LOW);
}
Exercise 3: take the gravity wind example and make it so every time the ball bounces one led lights up and then turns off, and you can control the wind from one analog sensor
The LED is on when the ball is on the ground / hits the ground when bouncing. And the ball can be controlled by the potentiometer to move left and right.
Video: exercise_3_weel11.mov
P5.js link:
Arduino code:
const int SENSOR_PIN = A2;
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
digitalWrite(LED_PIN, LOW);
int p_value = analogRead(SENSOR_PIN); // read from the potentiometer
int move = map(p_value, 0, 1023, -1, 2); // map the value to -1, 0, and 1
if (Serial.available() > 0) {
int touch = Serial.parseInt();
digitalWrite(LED_PIN, HIGH);
digitalWrite(LED_PIN, LOW);
const int LED_PIN = 3;
const int SENSOR_PIN = A2;
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
// Test the LED
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
}
void loop() {
int p_value = analogRead(SENSOR_PIN); // read from the potentiometer
int move = map(p_value, 0, 1023, -1, 2); // map the value to -1, 0, and 1
Serial.println(move);
if (Serial.available() > 0) {
// read from p5.js
int touch = Serial.parseInt();
// set the LED command
if (touch == 1) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
}
const int LED_PIN = 3;
const int SENSOR_PIN = A2;
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
// Test the LED
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
}
void loop() {
int p_value = analogRead(SENSOR_PIN); // read from the potentiometer
int move = map(p_value, 0, 1023, -1, 2); // map the value to -1, 0, and 1
Serial.println(move);
if (Serial.available() > 0) {
// read from p5.js
int touch = Serial.parseInt();
// set the LED command
if (touch == 1) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
}