Exercise 1:
let circleX; function setup() { createCanvas(500, 500); noFill(); } function draw() { background('white'); if (!serialActive) { console.log('ARDUINO IS NOT CONNECTED'); //output to check if Arduino connected or not } if (serialActive) { fill('violet') ellipse(map(circleX, 0, 1023, 0, width), height / 2, 100, 100); // using map to make the circle move console.log(circleX) //output position to check } } function keyPressed() { if (key == " ") setUpSerial(); } function readSerial(data) { if (data != null) // circleX = int(data); } // ARDUINO CODE /* void setup() { Serial.begin(9600); pinMode(A0, INPUT); } void loop() { Serial.println(analogRead(A0)); delay(5); } */
Exercise 2:
let brightnessLVL = 0; function setup() { createCanvas(500, 500); } function draw() { if (!serialActive) { console.log('ARDUINO IS NOT CONNECTED') } if (keyIsDown(UP_ARROW)) { brightnessLVL += 1; } else if (keyIsDown(DOWN_ARROW) && brightnessLVL > 0) { brightnessLVL -= 1; } console.log(brightnessLVL) } function keyPressed() { if (key == " ") setUpSerial(); // Start the serial connection } function readSerial(data) { writeSerial(brightnessLVL); } // ARDUINO CODE /* void setup() { Serial.begin(9600); pinMode(10, OUTPUT); } void loop() { analogWrite(10, Serial.parseInt()); Serial.println(); delay(1); } */
Exercise 3:
let velocity; let gravity; let position; let acceleration; let wind; let drag = 0.99; let mass = 50; let checkBounce; let outputBounce; 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); wind = createVector(0,0); } function draw() { background(255); applyForce(wind); applyForce(gravity); velocity.add(acceleration); velocity.mult(drag); position.add(velocity); acceleration.mult(0); ellipse(position.x,position.y,mass,mass); if (!serialActive) { console.log('ARDUINO IS NOT CONNECTED') fill('red') } if (serialActive) { textAlign(CENTER, TOP); textSize(24); fill('green'); text('ARDUINO IS CONNECTED', width / 2, 10); } if (position.y > height-mass/2) { checkBounce = 1; velocity.y *= -0.9; // A little dampening when hitting the bottom position.y = height-mass/2; } else { checkBounce = 0; } } 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 keyPressed(){ if (key==' '){ mass=random(15,80); position.y=-mass; velocity.mult(0); } if (key == "h") { setUpSerial(); } } function readSerial(data) { if (data != null) { wind.x = map(int(data), 0, 1023, -2, 2); let sendToArduino = checkBounce + '\n'; writeSerial(sendToArduino); } } // ARDUINO CODE /* const int LED_PIN = 10; const int POT_PIN = A0; void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); pinMode(POT_PIN, INPUT); while (Serial.available() <= 0) { Serial.println("0"); delay(300); } } void loop() { while (Serial.available()) { int LEDtrigger = Serial.parseInt(); if (Serial.read() == '\n') { digitalWrite(LED_PIN, LEDtrigger); Serial.println(analogRead(POT_PIN)); } } } */