From 70f7b0d03e1bf80bbf7d2d4c6d63181349e80a70 Mon Sep 17 00:00:00 2001 From: Dennis Schoepf Date: Fri, 25 Sep 2020 15:09:36 +0200 Subject: [PATCH] Enable communication --- magic-veneer-arduino/src/main.cpp | 23 ++--- .../magic_veneer_processing.pde | 80 ++++++++++-------- .../out/magic_veneer_processing.class | Bin 7061 -> 7683 bytes .../out/source/magic_veneer_processing.java | 80 ++++++++++-------- 4 files changed, 98 insertions(+), 85 deletions(-) diff --git a/magic-veneer-arduino/src/main.cpp b/magic-veneer-arduino/src/main.cpp index a6381ce..8dac37c 100644 --- a/magic-veneer-arduino/src/main.cpp +++ b/magic-veneer-arduino/src/main.cpp @@ -2,32 +2,25 @@ #include SharpIR sensorProx(SharpIR::GP2Y0A02YK0F, A0); -SharpIR sensorDown(SharpIR::GP2Y0A02YK0F, A1); +SharpIR sensorDown(SharpIR::GP2Y0A02YK0F, A7); void setup() { Serial.begin(9600); pinMode(A0, INPUT); - pinMode(A1, INPUT); + pinMode(A7, INPUT); } void loop() { int distanceProx = sensorProx.getDistance(); - int distanceDown = sensorDown.getDistance(); - Serial.print("Proximity"); - Serial.println(distanceProx); - Serial.print("Down"); - Serial.println(distanceDown); - delay(100); + // int distanceDown = sensorDown.getDistance(); + delay(250); - if (distanceProx < 40) + if (distanceProx < 30) { - Serial.println("Through first barrier"); + Serial.println("indicatePlacement"); + delay(2000); + Serial.println("startAnimation"); } - if (distanceDown < 35) - { - Serial.println("Through second barrier"); - } - delay(100); } \ No newline at end of file diff --git a/magic_veneer_processing/magic_veneer_processing.pde b/magic_veneer_processing/magic_veneer_processing.pde index 4bd4b73..8e2ee07 100644 --- a/magic_veneer_processing/magic_veneer_processing.pde +++ b/magic_veneer_processing/magic_veneer_processing.pde @@ -3,6 +3,7 @@ import processing.serial.*; Serial arduinoPort; String receivedMessage; boolean cameIntoThreshhold = false; +boolean objectPlacedDown = false; PShape branch; PShape leftWing; @@ -27,7 +28,6 @@ void setup() { fullScreen(); background(0); - /* Load external files */ branch = loadShape("branch.svg"); leftWing = loadShape("leftwing.svg"); @@ -44,32 +44,41 @@ void setup() { flyOverObjects.add(object); } - - /* Set up communication with arduino + /* Set up communication with arduino */ String portName = Serial.list()[Serial.list().length - 1]; //change index to match your port - arduinoPort = new Serial(this, portName, 9600); */ + arduinoPort = new Serial(this, portName, 9600); } void draw() { - /* if ( arduinoPort.available() > 0) { + if ( arduinoPort.available() > 0) { String rec = arduinoPort.readStringUntil('\n'); if (rec != null) { receivedMessage = rec; } // Check for specific events and act upon them - if (receivedMessage != null && receivedMessage.contains("isWithinThreshhold")) { - cameIntoThreshhold = true; + if (receivedMessage != null) { + if (receivedMessage.contains("indicatePlacement")) { + cameIntoThreshhold = true; + } else { + cameIntoThreshhold = false; + } + + if (receivedMessage.contains("startAnimation")) { + objectPlacedDown = true; + } else { + objectPlacedDown = false; + } } - }*/ + } // Set up fill and let background move background(0); translate(0, backgroundOffset - 100); - // TODO: Only start to move background as soon as second sensor is triggered - backgroundOffset = backgroundOffset + velocity; - println(backgroundOffset); + if (objectPlacedDown == true) { + backgroundOffset = backgroundOffset + velocity; + } // Draw fly-over objects for (int i = 0; i < flyOverObjects.size(); i++) { @@ -77,28 +86,29 @@ void draw() { shape(object); } - /* START - Create and animate placementIndicator */ - // TODO: Trigger when first sensor is actuated - placementIndicator(width / 2+ 150, (height / 2) - backgroundOffset ,130, 8, placementIndicatorOffsetX); + if (cameIntoThreshhold == true) { + /* START - Create and animate placementIndicator */ + placementIndicator(width / 2, (height / 2) + 220 - backgroundOffset ,110, 8, placementIndicatorOffsetX); - if (placementIndicatorAnimationCounter < 5) { - if (placementIndicatorAnimationDirection == "right" && placementIndicatorOffsetX < 30) { - placementIndicatorOffsetX += 2; - } else if (placementIndicatorAnimationDirection == "right" && placementIndicatorOffsetX <= 30) { - placementIndicatorAnimationDirection = "left"; - placementIndicatorOffsetX -= 2; - placementIndicatorAnimationCounter++; - } else if (placementIndicatorAnimationDirection == "left" && placementIndicatorOffsetX >= -30) { - placementIndicatorOffsetX -= 2; - } else if (placementIndicatorAnimationDirection == "left" && placementIndicatorOffsetX <= -30) { - placementIndicatorAnimationDirection = "right"; - placementIndicatorOffsetX += 2; - placementIndicatorAnimationCounter++; + if (placementIndicatorAnimationCounter < 5) { + if (placementIndicatorAnimationDirection == "right" && placementIndicatorOffsetX < 30) { + placementIndicatorOffsetX += 2; + } else if (placementIndicatorAnimationDirection == "right" && placementIndicatorOffsetX <= 30) { + placementIndicatorAnimationDirection = "left"; + placementIndicatorOffsetX -= 2; + placementIndicatorAnimationCounter++; + } else if (placementIndicatorAnimationDirection == "left" && placementIndicatorOffsetX >= -30) { + placementIndicatorOffsetX -= 2; + } else if (placementIndicatorAnimationDirection == "left" && placementIndicatorOffsetX <= -30) { + placementIndicatorAnimationDirection = "right"; + placementIndicatorOffsetX += 2; + placementIndicatorAnimationCounter++; + } + } else { + placementIndicatorOffsetX = 0; } - } else { - placementIndicatorOffsetX = 0; + /* END - Create and animate placementIndicator */ } - /* END - Create and animate placementIndicator */ /* START - Scene 1 Bugs going by */ bug(100, -100, 1); @@ -110,7 +120,7 @@ void draw() { if (backgroundOffset < 2450) { /* START - Scene 2 Crawling on branch */ - shape(branch, 0, -3200, width, width); + shape(branch, 0, -2980, width, width); /* END - Scene 2 Crawling on branch */ } else if (backgroundOffset > 2450 && backgroundOffset < 4400) { if (cocoonAnimationFinished == false) { @@ -128,10 +138,10 @@ void draw() { fill(255); noStroke(); - arc(width / 2 + 150, -1800 - (backgroundOffset - 2450), 500, 1100, radians(260 - cocoonOpenDegrees), radians(280 + cocoonOpenDegrees), PIE); + arc(width / 2, -1580 - (backgroundOffset - 2450), 500, 1100, radians(260 - cocoonOpenDegrees), radians(280 + cocoonOpenDegrees), PIE); print("Tree position: "); - shape(branch, 0, -3200 - (backgroundOffset - 2450), width, width); + shape(branch, 0, -2980 - (backgroundOffset - 2450), width, width); } // 3. Let tree move again @@ -158,8 +168,8 @@ void draw() { wingWidth += 4; } - shape(leftWing, width / 2 - wingWidth + 85, (height / 2 - wingWidth * 0.8) - backgroundOffset, wingWidth, wingWidth * 1.5); - shape(rightWing, width / 2 + 215, (height / 2 - wingWidth * 0.8) - backgroundOffset, wingWidth, wingWidth * 1.5); + shape(leftWing, width / 2 - wingWidth - 65, (height / 2 - wingWidth * 0.8 + 220) - backgroundOffset, wingWidth, wingWidth * 1.5); + shape(rightWing, width / 2 + 65, (height / 2 - wingWidth * 0.8 + 220) - backgroundOffset, wingWidth, wingWidth * 1.5); /* END - Scene 4 Butterfly */ diff --git a/magic_veneer_processing/out/magic_veneer_processing.class b/magic_veneer_processing/out/magic_veneer_processing.class index cd292e3058a2de3a4eaadb878386a0dfe125490f..3954771877cc08fff3fa0ac11b24a9a90a27aa4e 100644 GIT binary patch literal 7683 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 Jpk%~Y2mm!z;fVkM literal 7061 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 QGx{+zFf#gsk`QA60Kyn-RsaA1 diff --git a/magic_veneer_processing/out/source/magic_veneer_processing.java b/magic_veneer_processing/out/source/magic_veneer_processing.java index b47a3ec..60282f3 100644 --- a/magic_veneer_processing/out/source/magic_veneer_processing.java +++ b/magic_veneer_processing/out/source/magic_veneer_processing.java @@ -21,6 +21,7 @@ public class magic_veneer_processing extends PApplet { Serial arduinoPort; String receivedMessage; boolean cameIntoThreshhold = false; +boolean objectPlacedDown = false; PShape branch; PShape leftWing; @@ -45,7 +46,6 @@ public void setup() { background(0); - /* Load external files */ branch = loadShape("branch.svg"); leftWing = loadShape("leftwing.svg"); @@ -62,32 +62,41 @@ public void setup() { flyOverObjects.add(object); } - - /* Set up communication with arduino + /* Set up communication with arduino */ String portName = Serial.list()[Serial.list().length - 1]; //change index to match your port - arduinoPort = new Serial(this, portName, 9600); */ + arduinoPort = new Serial(this, portName, 9600); } public void draw() { - /* if ( arduinoPort.available() > 0) { + if ( arduinoPort.available() > 0) { String rec = arduinoPort.readStringUntil('\n'); if (rec != null) { receivedMessage = rec; } // Check for specific events and act upon them - if (receivedMessage != null && receivedMessage.contains("isWithinThreshhold")) { - cameIntoThreshhold = true; + if (receivedMessage != null) { + if (receivedMessage.contains("indicatePlacement")) { + cameIntoThreshhold = true; + } else { + cameIntoThreshhold = false; + } + + if (receivedMessage.contains("startAnimation")) { + objectPlacedDown = true; + } else { + objectPlacedDown = false; + } } - }*/ + } // Set up fill and let background move background(0); translate(0, backgroundOffset - 100); - // TODO: Only start to move background as soon as second sensor is triggered - backgroundOffset = backgroundOffset + velocity; - println(backgroundOffset); + if (objectPlacedDown == true) { + backgroundOffset = backgroundOffset + velocity; + } // Draw fly-over objects for (int i = 0; i < flyOverObjects.size(); i++) { @@ -95,28 +104,29 @@ public void draw() { shape(object); } - /* START - Create and animate placementIndicator */ - // TODO: Trigger when first sensor is actuated - placementIndicator(width / 2 + 100, (height / 2) - backgroundOffset ,130, 8, placementIndicatorOffsetX); + if (cameIntoThreshhold == true) { + /* START - Create and animate placementIndicator */ + placementIndicator(width / 2, (height / 2) + 220 - backgroundOffset ,110, 8, placementIndicatorOffsetX); - if (placementIndicatorAnimationCounter < 5) { - if (placementIndicatorAnimationDirection == "right" && placementIndicatorOffsetX < 30) { - placementIndicatorOffsetX += 2; - } else if (placementIndicatorAnimationDirection == "right" && placementIndicatorOffsetX <= 30) { - placementIndicatorAnimationDirection = "left"; - placementIndicatorOffsetX -= 2; - placementIndicatorAnimationCounter++; - } else if (placementIndicatorAnimationDirection == "left" && placementIndicatorOffsetX >= -30) { - placementIndicatorOffsetX -= 2; - } else if (placementIndicatorAnimationDirection == "left" && placementIndicatorOffsetX <= -30) { - placementIndicatorAnimationDirection = "right"; - placementIndicatorOffsetX += 2; - placementIndicatorAnimationCounter++; + if (placementIndicatorAnimationCounter < 5) { + if (placementIndicatorAnimationDirection == "right" && placementIndicatorOffsetX < 30) { + placementIndicatorOffsetX += 2; + } else if (placementIndicatorAnimationDirection == "right" && placementIndicatorOffsetX <= 30) { + placementIndicatorAnimationDirection = "left"; + placementIndicatorOffsetX -= 2; + placementIndicatorAnimationCounter++; + } else if (placementIndicatorAnimationDirection == "left" && placementIndicatorOffsetX >= -30) { + placementIndicatorOffsetX -= 2; + } else if (placementIndicatorAnimationDirection == "left" && placementIndicatorOffsetX <= -30) { + placementIndicatorAnimationDirection = "right"; + placementIndicatorOffsetX += 2; + placementIndicatorAnimationCounter++; + } + } else { + placementIndicatorOffsetX = 0; } - } else { - placementIndicatorOffsetX = 0; + /* END - Create and animate placementIndicator */ } - /* END - Create and animate placementIndicator */ /* START - Scene 1 Bugs going by */ bug(100, -100, 1); @@ -128,7 +138,7 @@ public void draw() { if (backgroundOffset < 2450) { /* START - Scene 2 Crawling on branch */ - shape(branch, 0, -3200, width, width); + shape(branch, 0, -2980, width, width); /* END - Scene 2 Crawling on branch */ } else if (backgroundOffset > 2450 && backgroundOffset < 4400) { if (cocoonAnimationFinished == false) { @@ -146,10 +156,10 @@ public void draw() { fill(255); noStroke(); - arc(width / 2 + 100, -1800 - (backgroundOffset - 2450), 500, 1100, radians(260 - cocoonOpenDegrees), radians(280 + cocoonOpenDegrees), PIE); + arc(width / 2, -1580 - (backgroundOffset - 2450), 500, 1100, radians(260 - cocoonOpenDegrees), radians(280 + cocoonOpenDegrees), PIE); print("Tree position: "); - shape(branch, 0, -3200 - (backgroundOffset - 2450), width, width); + shape(branch, 0, -2980 - (backgroundOffset - 2450), width, width); } // 3. Let tree move again @@ -176,8 +186,8 @@ public void draw() { wingWidth += 4; } - shape(leftWing, width / 2 - wingWidth + 35, (height / 2 - wingWidth * 0.8f) - backgroundOffset, wingWidth, wingWidth * 1.5f); - shape(rightWing, width / 2 + 165, (height / 2 - wingWidth * 0.8f) - backgroundOffset, wingWidth, wingWidth * 1.5f); + shape(leftWing, width / 2 - wingWidth - 65, (height / 2 - wingWidth * 0.8f + 220) - backgroundOffset, wingWidth, wingWidth * 1.5f); + shape(rightWing, width / 2 + 65, (height / 2 - wingWidth * 0.8f + 220) - backgroundOffset, wingWidth, wingWidth * 1.5f); /* END - Scene 4 Butterfly */