Κάτι Cool 2.0

const int OUT_PIN = 7;
const int SAMPLE_TIME = 100;
unsigned long millisCurrent;
unsigned long millisLast = 0;
unsigned long millisElapsed = 0;

int sampleBufferValue = 0;

void setup() {
Serial.begin(9600);
}

void loop() {

millisCurrent = millis();
millisElapsed = millisCurrent - millisLast;

if (digitalRead(OUT_PIN) == LOW){
sampleBufferValue++;
}
if (millisElapsed > SAMPLE_TIME){
Serial.println(sampleBufferValue);
sampleBufferValue = 0;
millisLast = millisCurrent;
}

}

Arduino

  • Plexiglass (Covid Shield)

  • Water Tank (Jumbo)

  • Hose (From Ka’s Grandma/Ma)

  • Water Pump (SuperHome Center)

  • Support for Acrylic (metal beams from trash)

  • Wooden Box from plywood

Materials

STEP 1 :

 

Choosing our image 

STEP 5 :

 

int n = 1000; // number of dots

float[] m = new float[n]; // make a new list of floating points
float[] x = new float[n];
float[] y = new float[n];
float[] vx = new float[n];
float[] vy = new float[n];
float[] redchannel = new float[n];
float[] bluechannel = new float[n];
float[] greenchannel = new float[n];
float[] shape = new float[n];

import processing.serial.*;
Serial port; // Create an object from Serial class
String val; // Data received from the serial port
int sensorVal = 0;

void setup() {
size(500, 700);
fill(0,10);
reset();
port = new Serial(this, "COM3", 9600);
}

void draw() {
if ( port.available() > 0)
{ // If data is available,
val = port.readStringUntil('\n');
try {
sensorVal = Integer.valueOf(val.trim());
}// read it and store it in val
catch(Exception e){
;
}
println(sensorVal); //print out in the console
}
noStroke();
fill(0,30);
rect(0, 0, width, height); // black background


for (int i = 0; i < n; i++) { // runs the loop 10,000 times
float dx = sensorVal - x[i]; // distance from the mouse
float dy = 800 - y[i];

float d = sqrt(dx*dx + dy*dy); // calculating the distance between the points and the mouse
if (d < 1) d = 1;

float f = cos(d * 0.06) * m[i] / d*2; //decides if it gets closer or further from the mouse

vx[i] = vx[i] * 0.4 - f * dx; //changing the velocity so it moves towards the ring
vy[i] = vy[i] * 0.2 - f * dy;

}


for (int i = 0; i < n; i++) {
x[i] += vx[i];
y[i] += vy[i];

if (x[i] < 0) x[i] = width;
else if (x[i] > width) x[i] = 0;

if (y[i] < 0) y[i] = height;
else if (y[i] > height) y[i] = 0;

if (m[i] < 0) fill(0, greenchannel[i] , 0);
else fill(0, greenchannel[i],0);

if (shape[i] > 2) fill(0, greenchannel[i] , 0);
else fill(0, greenchannel[i],0);

 

if (shape[i] > 2) ellipse(x[i], y[i],10,10);
else if (shape[i] > 1 && shape[i] <=2) ellipse(x[i],y[i],2,2);
else ellipse(x[i], y[i],10,10);

 

}
}
void reset() { // counter that counts up to n
for (int i = 0; i < n; i++) { // i = 0, i < 10,0000, i++ what to do after each loop.
m[i] = randomGaussian() * 6; // gaussian distribution is a bell curve. Distribution of the mass
x[i] = random(width);
y[i] = random(height);
bluechannel[i] = random(255);
redchannel[i] = random(255);
greenchannel[i] = random(255);
shape [i] = random(0,3);
}
}

//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

void mousePressed() {
reset();
}

Processing

STEP 7 :

Brainstorming

STEP 2 :

 

Coding

  • Projector
  • 3D Scanner
  • Time Machine
  • Fountain

Some project

construction

process images

STEP 6 :

Finalizing the idea

STEP 3 :

 

The aqua projection washes away the ideologies of society that are being projected on running water

STEP 4 :

 

Sketches of the product

Project construction process video

THE TEAM

KATERINA KOUNTOURIOTI

NTENI CHRISTOVA

ANDREAS SOTEIRIOU

JOANNA CHRISTODOULOU

ORESTIS CHRISTODOULOU

Project construction process

FINAL PRODUCT

We began by receiving a task and selecting an image from a set of options. After choosing the image, we collectively brainstormed to explore the various interpretations of the chosen object. Eventually, we settled on the concept of a fountain. Through thorough discussion and a closer examination of the image, we dissected each component of the structure, assigning specific functionalities.


Our envisioned design included two wooden bases with a plexiglass panel in the center. The plan involved incorporating a projection element, achieved by projecting images through the plexiglass. To infuse creativity and fun, we decided to introduce a water element. Each team member individually sketched ideas, and upon choosing the most promising draft, we created a final sketch and proceeded with a 3D modeling. Concurrently, we researched the functional aspects and materials required for the construction.


In the final design, the structure's height prompted a revision to the initial plan of using two plexiglass panels due to budget constraints. Instead, we opted for a single, thicker plexiglass panel. We then delved into the dynamics of water flow onto the plexiglass, considering its source, trajectory, and destination. A box within the lower base was designated to collect and reuse water, with a hose facilitating the transfer from the box to the top of the plexiglass.


Materials exploration commenced with a search for sustainable plexiglass, leading us to repurpose a piece acquired during the COVID period. Other materials, such as iron and a large bottle, were salvaged from a skip to align with our commitment to a recyclable structure. The remaining items were sourced from various places, including a teammate's home.


Following a trip to Nicosia to assemble the wooden bases, we decided to place the base only below the plexiglass to avoid excessive weight. To conceal the hose, we ingeniously incorporated it within the iron structure. Upon returning, we initiated the coding process, facing challenges and conducting extensive online research to achieve the desired outcome.


During construction, we encountered the need to resize the irons, yet lacking a means to cut them, we adapted by securing them together with corners and bolts to match the intended shape. The hose was slided through the inside of the irons, and the plexiglass required multiple adjustments to align with the height and size of the irons. We strategically punctured the hose to ensure even water distribution across the plexiglass, sealing the excess opening with a zip tie. 

Assembling all components, we tested the system to verify that it met our expectations, successfully achieving the desired results after multiple attempts.