This was my hardest project yet. i spent a lot of time with my code and having a bunch of errors that I didn’t understand. after i tried to get some help from the internet i got a bit of a better understanding. what really helped is when I remembered what the professor said about old students records being on the WordPress site. this is my best attempt that kind of worked.
Task 1
For the first task we were instructed to use a sensor on Arduino to make an ellipse in p5 move horizontally. And to have nothing on Arduino being controlled by p5.
After looking thru projects i decided to use a potentiometer to control the axis of the ellipse.
This was my p5 code.
function setup() { createCanvas(640, 480); textSize(18); } function draw() { background(54); map(100,0,1023,0,width); ellipse(100,height/2,100,37); if (!serialActive) { text("Press Space Bar to select Serial Port", 20, 30); } else { text("Connected", 20, 30); } } function keyPressed() { if (key == " ") { // important to have in order to start the serial connection!! setUpSerial(); } } function readSerial(data) { //////////////////////////////////// //READ FROM ARDUINO HERE //////////////////////////////////// if (data != null) { ellipseXPos=data; } }
My Arduino code:
I used it to just connect the sensor to the p5 sketch
void setup() { Serial.begin(9600); } void loop() { // wait for data from p5 before doing something int sensor = analogRead(A0); delay(1); Serial.println(sensor); }
Task 2
For the second task we were initially asked to control the LED brightness. When i first took a stab at it i had no idea how to start. I initially tried to do it with mouse press but after looking at others projects For inspiration I saw people used diffrent keys to control the brightness so i decided to do the same.
I was initially trying to use the B key for brightness and D for dull. for some reason i got an error. but after i tried the arrow keys like one of my colleges it seemed to work. This is part of my code
let brightness = 0; let value=50; function setup() { createCanvas(600, 600); } function draw() { background(255); if(value>255){ value=255; } if(value<0){ value=0; } brightness = value;
Arduino code:
int LED = 11; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); while (Serial.available() <= 0) { Serial.println("Wait"); // send a starting message delay(300); // wait 1/3 second } } void loop() { // wait for data from p5 before doing something while (Serial.available()) { int brightness = Serial.parseInt(); if (Serial.read() == '\n') { analogWrite(LED, brightness); // turn on LED and adjusts brightness Serial.println("LIT"); } } }
Task 3
This task started off as the easiest one but ended up being the most confusing. I started of by looking at others projects like i did previously and i saw people using the gravity wind example so i took a look at that. I created. a p5 Code and didn’t get an error but when i hooked it up to Arduino it didn’t work.
if (!serial Active) { text("Press Space Bar to select Serial Port", 20, 30); } else { text("Connected", 20, 30); } ellipse(position.x,position.y,mass); if (position.y > height-mass/2) { velocity.y *= -0.9; // A little dampening when hitting the bottom position.y = height-mass/2; LEDbrightness=1; } else{ LEDbrightness=0; } if(windSpeed<500){ wind.x =-1; } else if(windSpeed>600){ wind.x=1; } else{ wind.x=0; } print(windSpeed); }
Arduino
void setup() { Serial.begin(9600); pinMode(2, OUTPUT); // start the handshake while (Serial.available() <= 0) { Serial.println("0,0"); // send a starting message delay(300); // wait 1/3 second } } void loop() { // wait for data from p5 before doing something while (Serial.available()) { int LEDstate = Serial.parseInt(); digitalWrite(2, LEDstate); int sensor=analogRead(A0); Serial.println(sensor); } }
Conclusion
Although i spent a bunch of time with this project and it wasn’t perfect in the end I think I learned a lot out of it. This really helped me get coding on another level. Especially when it comes to Interactive Media. It humbled the level that i thought i was at( in a good way)