전역변수와 지역변수 이해하기
Download
Report
Transcript 전역변수와 지역변수 이해하기
Tone 명령어 이해하기
목차
1.
재료준비 및 브레드 보드 배선 구성하기
2.
Tone 명령어 기본 및 프로그램 이해
3.
응용 작품 만들기
1
준비물
준비하기
1) 아두이노 보드 (SPL-Duino V2 초보자용 보드)
2) USB 케이블
3) 스피커, LED소자, 조도센서
4) 브레드보드 실습 키트
2
브레드보드 배선 구성하기
전원 연결
아래 그림과 같이 브레드 보드를 연결해줍니다.
3
브레드보드 배선 구성하기
디지털 센서
• 2핀 스피커 준비하기
부저라고도 하며 TONE명령어를 이용하여 멜로디 연주가 가능한 장비입니다.
스피커는 두 개의 선을 사용하며
방향은 상관없이 하나는 GND(G), 하나는
Data(S)로 연결하게 해줍니다.
4
브레드보드 배선 구성하기
센서 연결
스피커를 아래와 같이 연결해줍니다.
스피커 : 핀 색과 상관없이
하나는 G, 하나는 S에
연결 되도록 합니다.
5
전역변수와 지역변수 이해하기
지역변수 및 전역변수
• c언어와 마찬가지로 지역변수와 전역변수가 존재합니다.
• 지역변수나 전역변수나 변수 선언 자체는 똑같습니다.
• 변수의 위치에 따라 달라집니다.
6
전역변수와 지역변수 이해하기
지역변수 및 전역변수
위치에 따른 전역변수와 지역변수
int a =100;
void setup()
{
}
void my_function()
{
}
void loop()
{
}
int a는 전역 변수
void setup()
{
}
void my_function()
{
}
void loop()
{
int a =100;
}
int a는 지역 변수
7
전역변수와 지역변수 이해하기
지역변수 및 전역변수
• 전역 변수
전역 변수
- 모든 함수에서 사용할 수 있습니다.
- 프로그램이 시작될 때 생성됩니다.
- 프로그램이 완전 종료 때까지 존재합니다.
int a =100;
void setup()
{
}
void my_function()
{
}
void loop()
{
}
8
전역변수와 지역변수 이해하기
지역변수 및 전역변수
• 전역 변수
int a =100;
void setup()
{
Serial.begin(57600);
a=0;
}
void my_function()
{
a++;
}
void loop()
{
my_function();
Serial.println(a);
delay(1000);
}
좌측 소스를 입력하여
실행 한 뒤 시리얼
모니터를 실행 한
모습입니다.
9
전역변수와 지역변수 이해하기
지역변수 및 전역변수
• 전역 변수
int a =100;
void setup()
{
Serial.begin(57600);
a=0;
}
void my_function()
{
a++;
}
void loop()
{
my_function();
Serial.println(a);
delay(1000);
}
전역 변수 int a = 100을 선언하고
프로그램 시작 시 setup이 실행되어 a=0이 됩니다.
loop에서 my_function() 함수를 실행하게 되고
my_function()에서 a=a+1을 실행합니다.
다시 loop에서 a의 값을 출력해줍니다.
이것을 1초 동안 계속 반복합니다.
10
전역변수와 지역변수 이해하기
지역변수 및 전역변수
• 지역 변수
void setup()
{
}
void my_function()
{
지역 변수
- 대게 함수 안에 있는 변수들을 뜻합니다.
- 전역 변수와 달리 함수 안에 국한
되어 있는 변수입니다.
- 다른 함수에서 사용 할 수 없습니다.
- 해당 함수가 실행이 되야 지역 변수가
생성됩니다.
- 해당 함수가 종료되면 지역 변수도
소멸합니다.
}
void loop()
{
int a =100;
}
11
전역변수와 지역변수 이해하기
지역변수 및 전역변수
• 지역 변수
void setup()
{
Serial.begin(57600);
a=0;
}
void my_function()
{
a++;
}
void loop()
{
int a =100;
my_function();
Serial.println(a);
delay(1000);
}
전역 변수에서 사용한
소스를 지역변수로 바꾸어
실행을 하면 오류가 뜹니다.
12
전역변수와 지역변수 이해하기
지역변수 및 전역변수
• 지역 변수
void setup()
{
Serial.begin(57600);
a=0;
}
void my_function()
{
a++;
}
void loop()
{
int a =100;
my_function();
Serial.println(a);
delay(1000);
}
int a는 loop()의 변수이며
전역변수처럼 모든 함수가 아닌
loop()안에서만 사용할 수 있는
변수 입니다.
int a는 setup()과 my_function()가
사용 할 수 없다
13
tone 명령어 이해하기
스피커
스피커는 디지털 핀을 이용하며 tone이라는 특수한 명령어를 사용합니다.
디지털 핀
tone(Pin 번호, 진동수, 시간)
사용하는 디지털 핀 번호
음의 연주 시간
입력한 주파수에 따른 음이 출력
14
tone 명령어 이해하기
스피커
• tone 명령어 적용하기
void setup()
{
}
void loop()
{
tone(2,100,1000);
delay(1000);
}
실제 프로그램에서 사용하고자 할 땐
좌측 소스와 같이 실행시켜줍니다.
스피커가 사용되는 핀을 입력하고
원하는 진동수 값을 입력하고
음의 연주 시간 값을 입력합니다.
delay를 쓰는 이유는 tone의 연주시간 값인
1000에 딜레이가 없기 때문입니다.
연주가 끝날 때까지 기다리지 않고 다음 명령으로
넘어가기에 딜레이가 필요합니다.
15
tone 명령어 이해하기
스피커
• tone 명령어 적용하기
void setup()
{
}
void loop()
{
tone(2,100,1000);
tone(2,200,1000);
tone(2,300,1000);
tone(2,400,1000);
}
좌측 소스와 같이 연주 구간마다 딜레이가 없으면
첫 번째 tone의 연주가 끝나기 전에 두 번째 연주가
시작되고 마찬가지로 연주가 끝나기 전에
계속 다음 연주로 넘어가 버립니다.
16
tone 명령어 이해하기
스피커
• tone 명령어 적용하기
void setup()
{
}
void loop()
{
tone(2,100,1000);
delay(1000);
tone(2,200,300);
delay(300);
tone(2,300,500);
delay(500);
tone(2,400,1000);
delay(1000);
}
좌측과 같이 tone 구간마다 delay를 줘야 합니다.
17
tone 명령어 이해하기
스피커
• 아래 표의 값을 입력하면 해당 음과 옥타브에 맞춰 연주가 가능합니다.
18
응용 작품 만들기
실습
• 미션) 조도 센서의 밝기에 따라 스피커의 소리를 나게 하십시오
19
응용 작품 만들기
실습
• 코드 예시
void setup()
{
}
void loop()
{
int a = analogRead(0);
if (a >= 500)
{
tone(2,400,1000);
delay(1000);
}
else if (a <= 500)
{
tone(2,100,1000);
delay(1000);
}
}
20
응용 작품 만들기
실습
• 미션) 아래 표를 참고하여 자유롭게 연주를 해보십시오.
21