[작업개요]

1.팀 구성원 : B699163/이건

2.작업 제목 : 작별도 아름답다.

3.개요:누군가와 작별할 때 포옹한 후 상대의 떠나가는 뒷모습에서 빛을 통해 위로를 줄 수 있는 자켓이다. 포옹할 때 신체와 접촉이 일어나는 부위에 소프트 버튼을 장착하여 포옹의 여부를 확인하고 이를 통해 등에 부착된 네오픽셀을 제어한다.

우리는 가까운 사람과 인사의 의미로 포옹을 하곤 한다. 모든 인사법이 그러하듯 작별의 순간에 떠나가는 사람의 뒷모습을 보는 것은 쓸쓸한 감정을 불러 일으킨다. 유명한 <낙화>라는 시에서는 ‘떠나는 자의 뒷모습의 아름다움’에 대해 말하고 있다. 이 자켓도 비슷한 맥락에서 ‘작별도 아름답다’ 작업물을 통하여 쓸쓸한 감정보다는 떠나는 자의 뒷모습을 보고 아름다움과 위로를 느끼도록 하고싶다.

[작업 진행]

11. 12주차는 전체적인 점검과 이를 토대로 필요한 재료들을 가공하는 것을 중점적으로 진행했다.

1.회로 그리기

버튼과 네오픽셀에 필요한 연결을 그려보았다. 네오픽셀을 개별적으로 제어할 필요는 없어서 독립적으로 핀을 부여하지 않아도 될 것 같다.

2.코드 작성

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN        11
#define NUMPIXELS 6
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

const int led = 10;
const int bt = 7;//button
const int bt2 = 4;
int lightR = 0;
int lightG = 0;
int lightB = 0;

void setup() {
    Serial.begin(9600);
  pixels.clear();
  pinMode(led, OUTPUT);
  pinMode(bt, INPUT);
  digitalWrite(bt, HIGH);
  pinMode(bt2, INPUT);
    digitalWrite(bt2, HIGH);
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif

  pixels.begin();

}

void loop() {
  pixels.clear();
  int btState = digitalRead(bt);
  int btState2 = digitalRead(bt2);

 /*
    //디지털 제어 
  if(btState==LOW){  //소프트버튼
Serial.println("BUTTON1");
digitalWrite(led, HIGH);
}else{
  digitalWrite(led, LOW);
}
if(btState2==LOW){ //소프트 버튼
Serial.println("BUTTON2");
digitalWrite(led, HIGH);
}else{
  digitalWrite(led, LOW);
}

*/

//버튼 갯수에 따라 else if문으로 버튼을 추가해야한다

  if (btState == LOW) { //button1
  Serial.println("BUTTON1");
       lightR++;
    if (lightR >= 255) {
      lightR = 255;
    }
    analogWrite(led, lightR);
    pixels.setPixelColor(0, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(1, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(2, pixels.Color(lightR, 0, 0));
    pixels.show();
    delay(30);
  }else if (btState2 == LOW) { //button2
    Serial.println("BUTTON2");
    lightR++;
    if (lightR >= 255) {
      lightR = 255;
    }
    analogWrite(led, lightR);
    pixels.setPixelColor(0, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(1, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(2, pixels.Color(lightR, 0, 0));
    pixels.show();
    delay(10);
  } else { //아무 버튼도 안 눌렸을 
        lightR--;
     if (lightR <= 0) {
      lightR = 0;
    }
    analogWrite(led, lightR);
    pixels.setPixelColor(0, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(1, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(2, pixels.Color(lightR, 0, 0));
    pixels.show();
    delay(10);
  }
  

//bt2
/*
 if (btState2 == LOW) {
 Serial.println("BUTTON2");
    digitalWrite(led, HIGH);
  } else {
    digitalWrite(led, LOW);
  }
  */
  
  /*
  if (btState2 == LOW) {
    Serial.println("BUTTON2");
    lightR++;
    if (lightR >= 255) {
      lightR = 255;
    }
    analogWrite(led, lightR);
    pixels.setPixelColor(0, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(1, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(2, pixels.Color(lightR, 0, 0));
    pixels.show();
    delay(10);
  }  else {
      lightR--;
    if (lightR <= 0) {
      lightR = 0;
    }
    analogWrite(led, lightR);
    pixels.setPixelColor(0, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(1, pixels.Color(lightR, 0, 0));
    pixels.setPixelColor(2, pixels.Color(lightR, 0, 0));
    pixels.show();
    delay(30);
  }*/
  
  /*
  if(btState==LOW){  //일반 버튼 
Serial.println("BUTTON1");
digitalWrite(led, LOW);
}else{
  digitalWrite(led, HIGH);
}
if(btState2==LOW){ //소프트 버튼
Serial.println("BUTTON2");
digitalWrite(led, HIGH);
}else{
  digitalWrite(led, LOW);
}
*/

}

기존에는 일반 LED와 일반 버튼으로 제어를 했었다. 소프트 버튼 여러개로 네오픽셀을 제어해보진 않아서 테스트를 해보았다. 기존 코드로 소프트 버튼을 달아서 실행해보니 예측한 일이었지만 정상적으로 구동되지 않았다. 그래서 버튼 2개로 네오픽셀을 제어하는 것과 소프트버튼으로 LED를 제어하는 것을 섞어서 코드를 짰다.

처음에는 어떤 시도를 해봐도 계속 비정상적으로 작동을 해서 애를 먹었다. (계속 깜빡거리는 증상, 아예 불이 안 들어오는 증상) 계속 일반 버튼으로 시도해보고 디지털 제어도 해보다가 안 돼서 else는 통합하고 else if 구문으로 조건을 추가했더니 정상작동 했다. 결국 버튼으로 LED를 제어하는 간단한 기술인데도 잘 안 되서 잠깐 넋이 나갔다. 코딩은 잘 안 될 때마다 식은땀이 흐른다…

3.납땜

원래 처음 중간 발표 때의 계획보다 LED의 갯수에 변경이 생겼다. 더 촘촘한 LED를 사용하기로 했고 때문에 총 72cm의 길이에 101개의 네오픽셀이 들어간다. 전력은 휴대전화 보조배터리를 사용하기로 했다. 부피 대비 아주 안정적인 전원 공급이 가능하기 때문이다.

납땜은 처음에는 어려웠으나 점점 익숙해져서 깔끔하게 작업이 가능하게 되었다. 그래도 납땜은 시간이 엄청 오래 걸린다.

4.재료 가공

이제 본격적으로 바느질을 하기에 앞서 재료들을 가공했다. 구멍이 일곱개라서 재료 하나를 가공하는 것도 금방금방 할 수가 없다. 바느질이 정말 걱정이다!