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)