170424 8주차 실습 기록
오늘은 간단한 실습 2개를 해본 뒤, 중간 프로젝트 플레이 테스트를 진행했다.
이미 회로가 다 조립되어서 풀기 힘든 사람은 코드만 봐도 좋다고 했는데,
다행히 나는 확장보드 하나만 딸깍 빼내면 돼서 직접 회로를 조립해볼 수 있었다!
첫번째는 랜덤한 순서와 딜레이로 LED 깜빡이기
int rand_num;
int rand_delay;
void setup() {
randomSeed(analogRead(0));
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
rand_num = (int)random(3,7);
// random 앞에 (int)를 굳이 써주지 않아도 자동으로 type-cast가 이루어짐
rand_delay = (int)random(50, 500);
digitalWrite(rand_num, HIGH);
delay(rand_delay);
digitalWrite(rand_num, LOW);
}
아두이노에서 랜덤을 사용하기 위해서는 randomSeed 함수가 포함되어야 한다.
뭔가 랜덤 넘버 만들기 제일 어려움 루비도 자바도 랜덤 넘버 만들긴 짱 쉬운데
문제는 그 뒤로 아무것도 못함
delay 같은 경우는 너무 정신없으면 통일할 수도 있다
몹시 랜덤하게 깜빡거리는 LED를 볼 수 있다.
아 저항 긴거 자르고 싶다.... 잘라서 예쁘게 꽂고 싶다.... (드릉드릉)
다음은 String들끼리 랜덤하게 자리 바꾸기 (셔플하기)
String arr[] = {"S", "V", "P", "T", "A"};
const int n = 5;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop() {
for (int i = 0; i < n; i++) {
int j = (int)random(0, n); // j = 0부터 4중 하나
String t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
for (int i = 0; i < n; i++) {
Serial.println(arr[i] + String(" "));
}
Serial.println();
delay(1000);
}
코드는 이러합니다
앞에서부터 잡고 - 4개 중에 아무거나 잡아서 자리를 바꿈.
랜덤하게 문자열들의 자리가 바뀌는 모습. 그런대로 잘 작동하는데
println 하지 말걸 그랬다 개행하니까 스크롤낭비가 너무 심함..
여기부터는 중간 프로젝트 플레이테스트 이후에 받은 피드백!
일단 다른 친구 플레이테스트 도중에 오신 교수님의 피드백으로는,
내가 피에조 센서가 너무 구려서 뮤직실드(배송비 포함 4만원 이상의 사악한 가격)를 사려고 한다고 말씀드렸더니
그렇게 하지 말고 그냥 프로세싱으로 연주를 하던가, 다소 조악하더라도(...) 피에조를 사용하면 된다고 해주셨다.
아니면 프로세싱으로 이미 있는 피아노 소리를 내는 것도 좋은 방법인데... 프로세싱 다 까먹어버림
우리가 가진 피에조는 진짜진짜진짜 너무 구리지만
뮤직실드가 해외배송이라 10일쯤 걸린다길래(그럼 한 연휴 끝나고 5월 10일쯤 올 듯)
타협을 한 게 새로운 피에조 센서를 사는 것. 우리가 가진 것보다 조금만 더... 아주 조금만 더 성능이 있는 걸로..!
또 이게 하나의 완성된 프로젝트이고 '작품'인 만큼, 피아노의 형태를 띠고 있었으면 좋겠다고도 말씀해 주셨다.
완벽한 모양이 아니더라도 박스를 사용해서 전선은 좀 숨기고, 회로가 완전히 드러나 보이지는 않도록.
그리고 수업을 함께 듣는 학우 분들 (저는 국문과인데도 학우란 말이 너무 어색해요) 께도 피드백을 받아 보았다.
이성진 - 곡명은 접근성이 떨어지니 계이름을 표시해 주면 좋겠다. ('작은별' 보다는 '도도솔솔라라솔' 등으로)
송모연 - 작은별보다 학교종이나 비행기 같은 좀더 쉬운 곡으로 바꾸면 더 나아질 것 같다.
권윤영 - 시작버튼이 잘 보이지 않는다.
박용훈, 변수민 - 꼭 전선을 다 숨기지 않더라도 푸쉬버튼만이라도 건반처럼 흰 종이를 붙여 피아노 형태로 만들면 좋을 것 같다.
공현철 - 시작버튼을 찾기가 힘들다.
진일룡 - 아예 LCD에 곡명을 출력하기보다는 악보를 프로세싱으로 띄우면 더 좋을 것 같다.
LCD에 한글을 출력하려면 디지털 입출력 포트가 더 많이 필요해서,
계이름으로 하기는 쉽지 않을 것 같아 만족스럽진 않지만 '건반 번호'로 하면 어떨까 싶다.
아니면 LCD 사용 안 하고도 그냥 프로세싱으로 띄워도 되지 않을까?
물론 이러면 제가 사용한 I2C LCD와 확장보드가 너무 아까워지지만요....
확장보드 순전히 LCD 때문에 산 것이고 그거 안 쓰면 왠지 대단히 아까운 생각이 든다
그리고 모든 것을 포기하였습니다
아니 사실 모든 것까지는 아니고... 프로세싱 사용을 포기함.
1. '피아노'와 인터랙션하게 만들고 싶다 (컴퓨터 모니터와 연결할 예정 X)
2. 그냥 공예에 더 집중하고 싶다
가 있습니다.
일단 프로세싱 사용을 위해서는...
악보띄우는 코드 자체는 단순하지만 소리내는 건 또 코드를 따로 공부해야 될 테고,
회로 수정이 없을 거란 보장도 없는데 이미 시간적으로 공예에 집중을 해도 피아노 형태가 될까 말까다.
아직 소리 안나는 피아노 형태에 머물고 있는 내 작품에 프로세싱까지 결합하려면 힘들 것 같다는 게 내 생각.
솔직히 지금까지 나의 신경은 인터랙션이 아니고 피아노의 작동 그 자체에 가 있었음.
왜냐하면 저는 코딩바보였고 기계라곤 만져본 적도 없고 납땜인두는 앞으로도 영원히 안 만지고 싶기 때문에..
그런데 선생님의 피드백을 듣고 약간 정신이 번쩍 든 기분(ㅋㅋㅋㅋㅋ)이었다.
내가 해왔던 인터랙션에 대한 고민들, 포스팅과 리딩들은 다 어디로 가는가... (솔직히 리딩 얼마 하진 않았지만요^^)
그래서 피아노 모양으로 보이게 하는 것! 에 집중하고자 한다.
그리고 제발 소리 났으면 해요
피에조 열일해 주세요 제발요
오늘의 포스팅 끝!
'인터랙티브 미디어 (2017)' 카테고리의 다른 글
170508 9주차 실습 기록 (0) | 2017.05.10 |
---|---|
Midterm Presentation (0) | 2017.04.27 |
170417 7주차 실습 기록 (0) | 2017.04.17 |
170410 6주차 실습 기록 (0) | 2017.04.10 |
중간 개인프로젝트 Ideation : 대화가 필요한 피아노 (0) | 2017.04.06 |