Arduino 기초 #1

lecture 2008. 2. 14. 00:23




ARDUINO, WHAT IS THAT?

사용자 삽입 이미지

Image taken from booklet by M. Banzi et al.

       

사용자 삽입 이미지

ARDUINO USB - LAYOUT



사용자 삽입 이미지

http://arduino.cc

사용자 삽입 이미지

Image taken from presentation by Appelback et al.



사용자 삽입 이미지

Image taken from presentation by Appelback et al.




사용자 삽입 이미지

Image taken from presentation by Appelback et al.


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

Image taken from booklet by M. Banzi et al.


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지





Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
:

ModuModus 전시 한경 와우 뉴스 2007년 11월 12일

News 2007. 11. 19. 14:47

:

페이드 인 효과

Technical References/Lighting 2007. 11. 17. 12:03


32 output 보드를 이용한 fade in / fade out 연습





//**************************************************************//
//  Name    : shiftPWMout                                       //
//  Author  : D. Cuartielles                                    //
//  Date    : 24 Sept, 2007                                     //
//  Version : 1.0                                               //
//  Notes   : Code for using Sadi's 32OUTPUT board              //
//          : to count from 0 to 255                            //
//  Acknowledgements: gonium.net for the original timer         //
//****************************************************************

//Pin connected to ST_CP of 74HC595
//int latchPin = 10;
//Pin connected to SH_CP of 74HC595
//int clockPin = 9;
////Pin connected to DS of 74HC595
//int dataPin = 8;

//#include < avr / interrupt.h > 
//#include < avr / io.h > 

#define INIT_TIMER_COUNT 6 
#define RESET_TIMER2 TCNT2 = INIT_TIMER_COUNT 

int int_counter = 0; 
volatile int second = 0; 
int oldSecond = 0; 
long starttime = 0; 
int numPWMs = 32;
int msTick = 0;
int duration[]= {
  0,0,0,0, 0,0,0,0,
  0,0,0,0, 0,0,0,0,
  0,0,0,0, 0,0,0,0,
  0,0,0,0, 0,0,0,0          };    //internal timer for current note  

int flags[]= {
  0,0,0,0, 0,0,0,0,
  0,0,0,0, 0,0,0,0,
  0,0,0,0, 0,0,0,0,
  0,0,0,0, 0,0,0,0          };    //internal flags, 0=nothing happens, 1=fade in, 2=fade out 

int cont = 1;
int tendency = 1;
int sizePeriod = 63;


void shiftOutLSB(byte val)
{
  int i;

  for (i = 0; i < 8; i++)  {
    if (val>>i & B1) PORTB |= B1;
    else PORTB &= ~B1;
    PORTB |= B10;
    //delayMicroseconds(1);
    PORTB &= ~B10;       
  }
}

void fadeout(int pin) {
  flags[pin-1] = 1;
}

void fadein(int pin) {
  flags[pin-1] = 2;
}

ISR(TIMER2_OVF_vect) { 
int adder = 0;
  RESET_TIMER2; 
  int_counter += 1; 
  if (int_counter == 1000) { 
    second+=1; 
    int_counter = 0; 
    adder = 1;
  }  

  int pinSetA = 0;
  int pinSetB = 0;

  msTick++;                                //increment timer tick at 1 ms intervals
  if (msTick > sizePeriod) msTick = 0;

  //check flags
  for (int i = 0; i < numPWMs; i++)
    switch (flags[i]) { 
    case 1:
      if (duration[i] > 0) duration[i] -= adder;
      else flags[i] = 0;
      break;
    case 2:
      if (duration[i] < sizePeriod) duration[i] += adder;
      else flags[i] = 0;
      break;
    default:
      break;
    }

  for (int i = 0; i < numPWMs; i++)
    if(i<numPWMs/2) pinSetA |= ((msTick<duration[i])<<i);
    else pinSetB |= ((msTick<duration[i])<<(i-numPWMs/2));

  PORTB &= ~B100;
  shiftOutLSB(pinSetA & B11111111);
  shiftOutLSB(pinSetA>>8);
  shiftOutLSB(pinSetB & B11111111);
  shiftOutLSB(pinSetB>>8);
  PORTB |= B100;

}; 

void setup() {
  //set pins to output because they are addressed in the main loop
  //pinMode(latchPin, OUTPUT);
  //pinMode(clockPin, OUTPUT);
  //pinMode(dataPin, OUTPUT);
  // To accelerate the process we are going to take 8, 9, 10 as outputs
  // - 8 will be the data
  // - 9 will be the clock
  // - 10 will be the latch
  DDRB |= 7;            //set data direction reg bit 0 to output
  PORTB &=~(7);            //set outputs low
  Serial.begin(9600); 
  Serial.println("Initializing timerinterrupt"); 
  //Timer2 Settings: Timer Prescaler /64,  using prescaler 1 --> 16000000/ 64 / 1 --> 250KHz
  TCCR2B |= (1<<CS20);     
  TCCR2B &= ~((1<<WGM22) | (1<<CS22) | (1<<CS21));      
  // Use normal mode 
  TCCR2A &= ~((1<<WGM21) | (1<<WGM20));   
  // Use external clock  
  ASSR |=  (1<<AS2) | (1<<EXCLK); 
  //Timer2 Overflow Interrupt Enable 
  TIMSK2 |= (1<<TOIE2) | (0<<OCIE2A);   
  RESET_TIMER2;                
  sei(); 
  starttime = millis(); 
}

void loop() {
  if (oldSecond != second) { 
    //Serial.print(second); 
    //Serial.print(". ->"); 
    //Serial.print(millis() - starttime); 
    //Serial.println("."); 
    //Serial.print("tendency "); 
    //Serial.print(tendency,DEC); 
    //Serial.print(" - cont - "); 
    //Serial.println(cont); 
    if(tendency) fadein(cont);
    else fadeout(cont);

    oldSecond = second; 
    cont++;
    if(cont > numPWMs) {
      cont = 1;

      // checking if lamps are still fading
      int fadelevel = 0;
      for(int i = 0; i < numPWMs; i++)
        if (flags[i]>0 && flags[i]<=2) fadelevel = flags[i];
      if(fadelevel==0) {
        tendency ^= B1;
    //Serial.println(fadelevel,DEC); 
      }
    }
  } 
}
:

Lighting Example

Technical References/Lighting 2007. 11. 17. 11:09



화장실을 메타포어로 삼은 간단한 라이팅 연습과제
:

2007 Sadi Interaction Design Workshop 스케치

Interaction Design Workshop 2007 2007. 11. 11. 07:34

아래 사진을 클릭하시면 더 많은 관련 이미지를 보실 수 있습니다.


보낸 사람 2007 Sadi Int...
:

전시장 모습

ModuModus 전시 2007. 11. 11. 01:03

아래 사진을 클릭하시면 더 많은 관련 이미지를 보실 수 있습니다.

































보낸 사람 ModuModus 인터랙...










:

Whisper of Nature

ModuModus 전시 2007. 11. 9. 16:47
사용자 삽입 이미지

:

Remember

ModuModus 전시 2007. 11. 9. 15:18
사용자 삽입 이미지
:

Cube Band

ModuModus 전시 2007. 11. 9. 15:16
사용자 삽입 이미지
:

Glow Voice

ModuModus 전시 2007. 11. 9. 15:15
사용자 삽입 이미지

: