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

    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 / 시리얼 포트로 값 출력하기

1. 준비물

지난번 6회차 아날로그 입력회로와 같다.

  • Arduino Board 1개
  • 컴퓨터
  • USB 케이블
  • LED 10개
  • 220ohm 저항 10개
  • 10k 볼륨저항 1개
  • 브레드보드와 점퍼선

2. 미리보기

2.1 BreadBoard에 세팅하기 (지난번 6회차와 같다)

  • LED를 ActiveHigh 연결로 10개 연결한다.
  • LED는 10개 모두 Cathode(-)쪽이 모두 접지와 연결된다.
  • LED의 Anode(+)쪽이 220 저항과 연결된다.
  • 220 저항의 다른 끝은 아두이노의 각 핀들과 연결한다.
  • LED가 연결되는 아두이노 핀은 3번~12번이다.
  • 이 연결로는 아두이노의 출력핀이 HIGH일 때 LED가 켜진다.
  • 가변저항의 한쪽 끝에는 +5V, 다른 끝에는 접지와 연결한다.
  • 가변저항의 가운데 단자와 AnalogIN A0 단자를 연결한다.

3. 스케치 구성

아날로그 입력 값을 LED를 채우는 형태로 표시한다. 시리얼포트를 사용하는 부분만 추가되었다.

  • 아날로그 값을 읽어들인다. 읽은 값은 0~1023 사이의 값이다.
  • 읽어들인 값을 0~9 사이의 값으로 변환한다.
  • 읽어들인 값과 변환한 값 모두 시리얼 포트로 출력해 상세한 정보를 알 수 있도록 한다.
  • 결과 값에 해당하는 LED까지 모두 켜서 채운다.

4. 스케치 자세히 보기

	1:		void setup() {
	2:			Serial.begin(9600);
	3:			for(int i=3; i < 13; i++) {
	4:				pinMode(i, OUTPUT);
	5:			}
	6:		}
	7:
	8:		void loop() {
	9:			int analogIN, levelVal, ledPin;
	10:			analogIN = analogRead(A0);
	11:			levelVal = map(analogIN, 0, 1023, 1, 10);
	12:			Serial.print(analogIN);
	13:			Serial.print(" / ");
	14:			Serial.println(levelVal);
	15:			for(int i=0; i < levelVal; i++) {
	16:				ledPin = i+3;
	17:				digitalWrite(ledPin, HIGH);
	18:			}
	19:			delay(100);
	20:			for(int i=0; i < levelVal; i++) {
	21:				ledPin = i+3;
	22:				digitalWrite(ledPin, LOW);
	23:			}
	24:		}
			

4.1 Serial 포트 사용하기

시리얼포트를 사용해 외부 장치와 통화하는 것은 쉬운 일이 아니다. 하지만 아두이노 내부에서 결과 값을 보는 것은 어렵지 않다. 프로그래밍 도중에 내부의 값을 알고 싶을 때, 막막하게 생각하던 아날로그 입력값을 들여다 보고 싶을 때 시리얼 출력을 사용하면 속 시원히 내부를 들여다 볼 수 있다.

	2:			Serial.begin(9600);
				
  • 시리얼 포트를 사용하기 위해, Setup() 함수 안에 이렇게 한줄 써 주는 것으로 충분하다.
  • () 안에 통신 속도를 쓴다. 보통 9600bps를 많이 사용한다.
  • 또 다른 값은 차차 다루기로 한다.
	12:			Serial.print(analogIN);
	13:			Serial.print(" / ");
	14:			Serial.println(levelVal);
				
  • 시리얼 포트로 출력하는 Serial.print() 함수의 사용법이다.
  • Serial.print()만 사용하면 줄넘김이 되지 않는다. 줄넘김 표시가 있을 때까지 계속 이어서 출력한다.
  • Serial.println()은 출력 후 줄넘김이 생긴다.
  • 그래서 12번줄~13번줄까지 쭉 이어서 출력하고 14번 줄까지 출력하고 비로소 다음줄로 넘어간다.
  • 위 내용대로 하면 12~14번 줄 내용이 모두 한 줄에 표시되고 다음 줄로 넘어간다.
  • Serail.print 혹은 Serial.println 모두 ()안에 출력할 내용을 쓴다.
  • " "로 둘서싼 내용은 내용 그대로 출력한다. 예)13번 줄
  • 변수 이름을 쓰면 변수 값이 출력된다. 예)12, 14번 줄

4.2 Serail Monitor 사용하기

시리얼 포트로 출력되는 내용을 보려면 Tools-Serial Monitor 항목을 선택하거나

화면 상단 오른쪽의 돋보기 모양 아이콘을 클릭하면 시리얼 모니터가 나타난다.

물리적인 신호는 아두이노의 1번핀 TX 포트로 출력된다. 이 신호를 외부 장치에 연결해서 통신을 할 수 있다. 스케치를 실행하면 아두이노 보드의 TX LED가 깜빡이는 것을 볼 수 있다.

5. 과제

  • 5.1 출력되는 문자를 [ AnalogIN : XXXX / Value : X ] 형식으로 만들어 보자.
  • 5.2 아날로그 입력 신호로 오디오 신호를 넣어, 시리얼포트로 출력되는 오디오 신호값의 특징을 살펴보자.
최종수정 2014.02.18 16:35:26