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
Arduino code:
#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
Arduino code:
//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_week_11.mov
Arduino code:
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); } } }