Posts Tagged ‘arduino’

강래우 프로젝트 링크 주소

June 17, 2008

Lighting Flower

June 4, 2008

Lighting Flower 1.2 

Lighting Flower는 빛에 반응하고, 빛을 반사하는 꽃을 말합니다.

이것은 완성된 작품이 아닌, 하나의 독립된 모듈로 다른 작품들에 응용할 수 있도록 제작되었습니다. Lighting Flower가 응용된 작품은 Lighting Chair, Flowall, 각종 퍼포먼스에 응용되었습니다.

 

Lighting Flower의 초기 모델은 철사와 반사판을 이용해 단순히 빛을 반사시키며 돌아가는 형태였습니다.

꽃잎이 펴졌다 닫혔다를 했으면 좋겠다는 김영희 교수님 의견을 듣고 Lighting Flower는 1.2 버전으로 진화하기위해 다시 옷을 벗고 초기 디자인부터 다시하게 됩니다.

 메카닉 디자인 ideation 입니다. 진주현 학생의 도움을 받아 제작하게 되었습니다.

버젼 1.1의 진정한 Stupid Pet trick Version 입니다.이것에 디자인을 하여 탄생한 녀석이 아래의 Lighting Flower 1.2 버젼입니다.
꽃잎이 열고 닫히니 확실히 화려하고 Robotic한 분위기가 나게됩니다.

단지 꽃잎을 열기 위해 만든 하단의 회전축이 너무 커서 디자인이 굉장히 까다롭습니다.
1.3으로 진화하기 위해선 처음부터 다시 디자인을 해야할 필요성을 느낍니다.


http://www.flickr.com/photos/absurdee/2494433496/

+
아듀이노 워크샵때 배포한 코드 입니다. 보통 Servo 모터는 for문으로 구현하는 경우가 대부분인데
for문의 경우 한번 코드에 들어가면 나올수가 없기때문에 순간적인 빛 감지에 반응하기가 어렵습니다.
If 문으로 짠 코드입니다, 초기에 빛값과 후의 빛값을 비교하여 빛의 차이를 감지하여 모터를 돌리는 소스입니다.
필요하신 분들은 참과 바랍니다.
—————————————————————————
#include <Servo.h>

Servo servo1;
Servo servo2;

int cds;
int cdsint[3];
int intval;
int nowLight;
int sens=100;
int t1=0,t2;

void setup()
{
  servo1.attach(14);
  servo1.setMaximumPulse(2200);
  servo2.attach(15); 
  Serial.begin(9600);
  cdsStart(5);
}

void loop()
{     
  cdsRead(5);
  if(nowLight>=sens) {
    if(t1<=180) {
      servo1.write(t1);
      servo2.write(t1);
      t1=t1+1;
      Servo::refresh();
      if(t1>=180) {
        t2=180;
      }
    } else {
      servo1.write(t2);
      servo2.write(t1);
      t2=t2-1;
      Servo::refresh();
      if(t2<=0) {
        t1=0;
      }     
    }
  }
}

void cdsStart(int Pin) {
  cdsint[0] = analogRead(Pin);
  Serial.println(cdsint[0]);
  delay(500);
  cdsint[1] = analogRead(Pin);
  Serial.println(cdsint[1]);
  delay(500);
  cdsint[2] = analogRead(Pin);
  Serial.println(cdsint[2]);
  delay(500);
  intval = (cdsint[0]+cdsint[1]+cdsint[2])/3; 
  Serial.print(“Intitial Light val in 5 Pin =”);
  Serial.print(intval);
  delay(2000);
}

void cdsRead(int Pin) {
  cds = analogRead(Pin);
  nowLight = cds – intval;
  Serial.println(nowLight);
}
—————————————————————————

Flowall

May 27, 2008

FLOWALL / Team Electrical Effect
“FLOWER WALL , FLOW ALL.”

Project Member
강래우 / 김원중 / 심민지 / 김영수 / 김경수 / 최윤호 / 이규호 / 이지영 / 현소연 / 박가람 / 박현정 / 최명진 / 한아름 / 이준황 / 이완술 / 김수윤 / 송세영 / 진주현 / 김예진 / 김아름 / 김승현

(참여 맴버중 인터렉션 디자인 스튜디오 과목을 수강하는 학생이 6명이어서 업로드 해봅니다.) 

Abstract / 강래우 (Project conductor)
“1mA 의 전류가 흐를때 마다, 세상의 모든 예술 작품들은 특별(Unique)해진다’ – 전기효과
…………………………………….
………………..

바로가기
(공간적으로 부족하여 개인 서버링크에 업로드 하였습니다)
http://laewoo.com/zbxe/?mid=flowall

 

 

flash + zinc 를 아듀니오와 연동하는 source @ phyCom cafe

May 22, 2008

http://cafe.naver.com/physicalcomputing.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=77#

지난번에 수업중에 와서 발표를 했던 진환군이 후배들을 위해 친절하게 플래시로 시리얼 통신하는 법을 올려놓았네요.

참고하세요~

…Y

arduino code sample: 6 switches + 6 output (LEDs)

May 19, 2008

여러분, 참고하세요~ 5월21일 아듀니오 워크샵합니다. 그다음주에는 이 블로그에 다큐멘팅된 사이트로 발표할 계획이니 “post”빨리 만드세요. 이번주 금요일에 체크하여 학점에 반영됩니다. 테크박스도 설명 넣으세요!

김영희 교수 :-)

아래는 6개의 스위치 인풋을 사용하여 6개의 다른 LED를 키는 코드 샘플입니다.

—————————————————————————

// intialize your LEDs on their appropriate Digital pins

int ledPin5 = 5;
int ledPin6 = 6;
int ledPin9 = 9;
int ledPin10 = 10;
int ledPin11 = 11;
int ledPin13 = 13;

// same goes for the switches. Each switch according to its input on the Arduino
int switchPin2 = 2;
int switchPin3 = 3;
int switchPin4 = 4;
int switchPin7 = 7;
int switchPin8 = 8;
int switchPin12 = 12;
// initialize the state of each switch. Start them in the OFF position.
int switchState1 = 0;
int switchState2 = 0;
int switchState3 = 0;
int switchState4 = 0;
int switchState5 = 0;
int switchState6 = 0;

int inByte = 0;

void setup(){
Serial.begin(9600);
//set each switch as an INPUT, using the pinMode function

pinMode(switchPin2, INPUT);
pinMode(switchPin3, INPUT);
pinMode(switchPin4, INPUT);
pinMode(switchPin7, INPUT);
pinMode(switchPin8, INPUT);
pinMode(switchPin12, INPUT);

//set each LED as an OUTPUT, using the pinMode function pinMode(ledPin5, OUTPUT);

pinMode(ledPin6, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin13, OUTPUT);
}

void loop(){

// the state of your switch means READING the switch. Use digitalRead command

switchState1 = digitalRead(switchPin2);
switchState2 = digitalRead(switchPin3);
switchState3 = digitalRead(switchPin4);
switchState4 = digitalRead(switchPin7);
switchState5 = digitalRead(switchPin8);
switchState6 = digitalRead(switchPin12);

// if your switch state reads “on“, then…

if(switchState1 == 1){
digitalWrite(ledPin5, HIGH);
Serial.print(“switch1=”);
Serial.println(switchState1,BIN);

}
else{
digitalWrite(ledPin5, LOW);
Serial.print(“switch1=”);
Serial.println(switchState1,BIN);
}

if(switchState2 == 1){
digitalWrite(ledPin6, HIGH);
Serial.print(“switch2=”);
Serial.println(switchState2,BIN);
}
else{
digitalWrite(ledPin6, LOW);
Serial.print(“switch2=”);
Serial.println(switchState2,BIN);
}

if(switchState3 == 1){
digitalWrite(ledPin9, HIGH);
Serial.print(“switch3=”);
Serial.println(switchState3,BIN);
}
else{
digitalWrite(ledPin9, LOW);
Serial.print(“switch3=”);
Serial.println(switchState3,BIN);
}

if(switchState4 == 1){
digitalWrite(ledPin10, HIGH);
Serial.print(“switch4=”);
Serial.println(switchState4,BIN);
}
else{
digitalWrite(ledPin10, LOW);
Serial.print(“switch4=”);
Serial.println(switchState4,BIN);
}

if(switchState5 == 1){
digitalWrite(ledPin11, HIGH);
Serial.print(“switch5=”);
Serial.println(switchState5,BIN);
}
else{
digitalWrite(ledPin11, LOW);
Serial.print(“switch5=”);
Serial.println(switchState5,BIN);
}

if(switchState6 == 1){
digitalWrite(ledPin13, HIGH);
Serial.print(“switch6=”);
Serial.println(switchState6,BIN);
}
else{
digitalWrite(ledPin13, LOW);
Serial.print(“switch6=”);
Serial.println(switchState6,BIN);
}
}

——————————————————————

한글로 설명을 덧붙인 코드는 아래와 같습니다.

// your LED를 Digital pins 번호와 동일하게 intialize 한다

int ledPin5 = 5;
int ledPin6 = 6;
int ledPin9 = 9;
int ledPin10 = 10;
int ledPin11 = 11;
int ledPin13 = 13;

// 스위치도
int switchPin2 = 2;
int switchPin3 = 3;
int switchPin4 = 4;
int switchPin7 = 7;
int switchPin8 = 8;
int switchPin12 = 12;

// 각 스위치의 상태를 initialize한다.  OFF상태에서 시작한다.
int switchState1 = 0;
int switchState2 = 0;
int switchState3 = 0;
int switchState4 = 0;
int switchState5 = 0;
int switchState6 = 0;

int inByte = 0;

void setup(){

//9600은 baud rate입니다.  (baud rate 설명은 아래에 있습니다.)
Serial.begin(9600);

//각 스위치를 INPUT으로 pinMode function을 사용하여 이니셜한다.

pinMode(switchPin2, INPUT);
pinMode(switchPin3, INPUT);
pinMode(switchPin4, INPUT);
pinMode(switchPin7, INPUT);
pinMode(switchPin8, INPUT);
pinMode(switchPin12, INPUT);

// 각 LED를 OUTPUT으로 pinMode function을 사용하여 이니셜한다.

pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(ledPin11, OUTPUT);
pinMode(ledPin13, OUTPUT);
}

void loop(){

// the state of your switch는 digitalRead command를 사용하여 스위치를 READING함을 뜻한다.

switchState1 = digitalRead(switchPin2);
switchState2 = digitalRead(switchPin3);
switchState3 = digitalRead(switchPin4);
switchState4 = digitalRead(switchPin7);
switchState5 = digitalRead(switchPin8);
switchState6 = digitalRead(switchPin12);

// if your switch state reads “on“, then…

if(switchState1 == 1){
// ledPin5를 켜라
digitalWrite(ledPin5, HIGH);

// switch1= 을 시리얼모니터에 프린트함.
Serial.print(“switch1=”);

// binary 즉 0와1 상태를 한라인에 프린트하는 function, 8bit data를 읽을 경우에는 BYTE를 사용한다.
Serial.println(switchState1,BIN);

}
else{
digitalWrite(ledPin5, LOW);
Serial.print(“switch1=”);
Serial.println(switchState1,BIN);
}

if(switchState2 == 1){
digitalWrite(ledPin6, HIGH);
Serial.print(“switch2=”);
Serial.println(switchState2,BIN);
}
else{
digitalWrite(ledPin6, LOW);
Serial.print(“switch2=”);
Serial.println(switchState2,BIN);
}

if(switchState3 == 1){
digitalWrite(ledPin9, HIGH);
Serial.print(“switch3=”);
Serial.println(switchState3,BIN);
}
else{
digitalWrite(ledPin9, LOW);
Serial.print(“switch3=”);
Serial.println(switchState3,BIN);
}

if(switchState4 == 1){
digitalWrite(ledPin10, HIGH);
Serial.print(“switch4=”);
Serial.println(switchState4,BIN);
}
else{
digitalWrite(ledPin10, LOW);
Serial.print(“switch4=”);
Serial.println(switchState4,BIN);
}

if(switchState5 == 1){
digitalWrite(ledPin11, HIGH);
Serial.print(“switch5=”);
Serial.println(switchState5,BIN);
}
else{
digitalWrite(ledPin11, LOW);
Serial.print(“switch5=”);
Serial.println(switchState5,BIN);
}

if(switchState6 == 1){
digitalWrite(ledPin13, HIGH);
Serial.print(“switch6=”);
Serial.println(switchState6,BIN);
}
else{
digitalWrite(ledPin13, LOW);
Serial.print(“switch6=”);
Serial.println(switchState6,BIN);
}
}

———————————————————————–

baud rate
baud는 변조속도, 즉 컴퓨터의 디지털 신호를 전화선을 통해 전달될 수 있는 아날로그 신호로 바꿔주는 속도를 나타낸다. 프랑스의 발명가 Jean Maurice Emile Baudot가 만든 단위로 예전에는 전신기를 조작할 때 초당 전송하는 클록의 숫자를 나타낼 때 사용했던 단위이지만 현재는 1초에 변조할 수 있는 횟수를 나타낸다.