After presentation, we identified some problems. To be honest, we had only focused on the technologies, so the artwork did not allow people to interact naturally. After receiving feedback from others, we decided to modify our artworks in various ways. It should be simpler and convey a clear message. As a result, we presented our ideas again and developed a straightforward story.
This idea is rather simple. We plan to create a small robot designed to surprise others. We have two versions in mind. The first one involves a DC motor, while the other incorporates LEDs on the body
These are final versions
The DC motor is positioned inside the robot, likely in this manner
It is crucial to create a natural interaction between people and my artwork, and for this purpose, we have integrated an ultrasonic sensor that functions as the eyes of the piece.
It had a cute hair but we removed it :( It is bald now
After making a face of my installation, we know the site that can help to create a box! Oh my gosh… we already made it!
Poor boxes.. Sorry for messy making… But I tried to my best
After complete my installation we take a picture! For celebrate our works!
Now time to test our technic! We have to use DC motors and sensor also sound sensor as well.
But it is hard to handle the DC motor. Due to we did not have motor controller so I found the alternative option to control this. The answer is Relay!
I believe it works perfectly. In result I started to make a lighting part
Combining the lighting component, ultrasonic sensor, and motor element was challenging, but we managed to accomplish it!
Arduino code is here~
#include <Adafruit_NeoPixel.h>
#define TRIGGER_PIN 7 // 울트라 센서의 트리거 핀
#define ECHO_PIN 8 // 울트라 센서의 에코 핀
#define LED_PIN 6 // LED 스트립이 연결된 핀
#define NUM_LEDS 9 // LED 스트립의 LED 수 확인해야함!!
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
strip.begin();
strip.show(); // 모든 LED를 끕니다.
Serial.begin(9600);
pinMode(3, OUTPUT);
}
void loop() {
long duration, distance;
// 초음파 센서를 통해 거리를 측정합니다.
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
// 거리를 cm로 변환합니다.
distance = (duration / 2) / 29.1;
// 거리에 따라 LED 스트립을 제어합니다.
if (distance < 50) { //거리 측정//
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, strip.Color(255, 0, 0)); // LED 색바꾸기
digitalWrite(3, HIGH);
int i = 1;
Serial.print(i, DEC);
Serial.print('\\n');
}
strip.show();
} else {
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 30)); // LED 끄기
digitalWrite(3, LOW);
int i = 0;
Serial.print(i, DEC);
Serial.print('\\n');
}
strip.show();
}
Serial.print("거리 (cm): ");
Serial.println(distance);
delay(100);
}
TouchDesigner operators are here~
This is the TouchDesigner code~
# me - this DAT
#
# channel - the Channel object which has changed
# sampleIndex - the index of the changed sample
# val - the numeric value of the changed sample
# prev - the previous sample value
#
# Make sure the corresponding toggle is enabled in the CHOP Execute DAT.
def onOffToOn(channel, sampleIndex, val, prev):
return
def whileOn(channel, sampleIndex, val, prev):
return
def onOnToOff(channel, sampleIndex, val, prev):
return
def whileOff(channel, sampleIndex, val, prev):
return
def valueChange(channel, sampleIndex, val, prev):
#sends the value of the slider to the serial dats send method
#op('serial1').send(val, terminator='\\r\\n')
if(val == 1) :
#op('serial1')..send(val, terminator='\\n')
#op('serial1').send(val, terminator="\\n")
op('audiofilein1').play = 1
if(val == ) :
#op('serial1')..send(val, terminator='\\n')
#op('serial1').send(val, terminator="\\n")
op('audiofilein1').play = 0
return