오디오 쿠키는 작고 재미있는 오디오 툴들을 제작합니다

    EW4SM 목차
  1. LED Level Meter
  2. 기초 회로 실습
  3. Arduino
    1. 프로그래밍 기초
    2. 연산자와 IF문
    3. PAN Knob 구현
    4. FOR Loop, 레벨 표시
    5. Serial로 값 표시
    6. DO-WHILE 문법
    7. FUNCTION 사용
  4. Mini Powered Speaker
  5. Fader Box
    1. Passive Volume
    2. Transformer
    3. Digital UP/DOWN
    4. Digital Volume I
    5. Digital Volume II
    6. Fader ADC
    7. Balanced Output
    8. D.Volume & Balanced
    9. Flying Fader
  6. USB AudioBox (DAC)
    1. AudioBox
  7. MIDI Controller 만들기
    1. Hardware Setup
    2. MIDI Spec.
    3. MIDI Software Programming

Basic Sketch / DO-WHILE 문법

LED가 순차로 이동하며 돌다가 버튼을 누르면 누른 순간의 LED만 켜진채 멈춘다. 버튼에서 손을 떼면 다시 회전한다.

1. 미리보기

2. 준비물

  • Arduino Board 1개
  • 컴퓨터
  • USB 케이블
  • LED 8개
  • 220ohm 저항 8개
  • 10k 저항 1개
  • 버튼 스위치 1개
  • 브레드보드와 점퍼선

3. BreadBoard에 세팅하기

  • LED 8개를 Active High로 3~10번에 연결한다.
  • 10k 저항을 풀업저항으로 사용해 버튼을 아두이노 2번 핀에 Active Low로 연결한다.

4. 스케치

	1:		#define button 2
	2:		int status = 0;
	3:		int led = 3;
	4:
	5:		void setup() {
	6:			pinMode(2, INPUT);
	7:			for(int i=3; i<=10; i++) pinMode(i, OUTPUT);
	8:		}
	9:
	10:		void loop() {
	11:			do {
	12:				digitalWrite(led, HIGH);
	13:				status = digitalRead(2);
	14:			} while(status==0);
	15:			digitalWrite(led, HIGH);
	16:			delay(100);
	17:			digitalWrite(led, LOW);
	18:			delay(100);
	19:			led++;
	20:			if(led>10) led=3;
	21:		}
			

5. 스케치 자세히 보기

5.1 스위치 입력 처리하기

				2:		int status = 0;
				6:		pinMode(2, INPUT);
				13:		status = digitalRead(2);
				
  • 아날로그 입력과 달리 디지털 입력은 아두이노의 디지털 핀을 사용한다.
  • setup()에서 입력으로 사용한다는 것을 알려주어야 한다. (라인 6)
  • 디지털 입력은 결과가 0 또는 1 뿐이다. Active High 버튼은 눌렀을때 1, 평소에 0 이다.
  • 이번 회로 처럼 Active Low 버튼은 평소에 1, 눌렀을 때 0 이 출력된다.
  • 아두이노 같은 프로세싱에서는 ActiveHigh 버튼보다 ActiveLow 버튼을 자주 사용한다.

5.2 DO-WHILE 문법

				11:		do {
							......		
				14:		} while(status==0);
				
  • do ~ while 문법은 { } 안의 내용을 반복 처리하도록 하는 문법이다.
  • do { 반복할 명령어 묶음 } while (조건); 형식으로 사용한다.
  • do 명령을 만나면 일단 { } 안의 내용을 한번 실행한다.
  • 그 다음에 while 에서 제시하는 조건을 비교해 조건을 만족하면 다시 { } 안의 내용을 실행한다.
  • 또 while에서 제시하는 조건을 비교한다. 비교 조건이 만족스럽지 못할 때 { } 반복을 마치고 빠져 나온다.
  • 여기서는 status == 0 이라는 조건을 사용하고 있다.
  • status 변수의 값이 0 일때 계속 반복하라는 뜻이다.
  • status는 버튼이 눌러져있는지 검사한 결과가 들어있다. ActiveLow 버튼이므로 평소에는 1, 눌러져 있으면 0이다.
  • 여기서는 버튼이 눌러지면 { } 안의 내용을 반복하고, 버트이 떨어지면 { } 다음 문장을 실행한다.

5.3 WHILE 문법

  • do - while 문법과 똑 같은 형태로 사용하는 while 문법도 있다.
  • while 문법은 while (조건) { 반복할 명령어 묶음 } 형식이다.
  • do - while은 일단 한번 실행하고 조건을 비교한다. 그냥 while은 일단 조건부터 비교하고 실행할지 말지를 결정한다.

6. 과제

  • 6.1 do-while로 되어있는 스케치를 while로 바꿔서 작성해 보자.
  • 6.2 LED가 하나만 켜져있다가 버튼을 누르면 회전하는 것으로 스케치를 바꿔보자.
최종수정 2014.02.18 16:35:26