겨우 1주일 지났는데 오랜만에 다시 돌아온 느낌이네요.
흠흠..
지난 시간까지 멀티펑션보드랑 간단한 브레드 보드를 이용해서 조도센서까지 동작시키는 것을 맛(?) 보았는데요. 거기까지를 초급강좌로 마무리 짓고!!!
이번 시간부터는 아두이노에 사용되는 각종 센서들에 대해서 알아보도록 하겠습니다.
무려~ 37종의 센서들을 강좌로 다루어 볼려고 하니 한번 달려볼까요~?
11-1. 센서란 무엇인가?
우선 간단히 센서가 무엇인지에 대해서 알아보도록 하죠. 모르는게 있다면 가장 먼저 인터넷을 검색해봐야죠! 위.키.백.과에 물어봐보면~~
'센서(Sensor)는 무언가를 느끼고, 그 감각으로부터 무언가를 알아내는 장치'라고 되어 있네요. 좀 더 좁혀서 얘기하면 빛, 소리, 화학물질, 온도 등과 같은 감각과 관련된 신호들을 수집하여 이것들을 과학적인 방법으로 분석하여 외부의 상태를 알아내는 장치 입니다.
< 출처 : 구글 사진 > |
먼가 어려운말 같지만 인간이 가지고 있는 감각들을 전기적 신호로 변환해서 사용할 수 있는 장치라고 생각하면 될 것 같습니다. 물론 인간의 감각을 뛰어넘는 것들도 이런 센서들을 통해 인간이 볼 수 있도록 변환 할 수도 있죠.
센서의 중요성은 앞으로 이 센서쪽 기초기술과학 분야가 얼마나 발달하느냐에 따라서 세계를 좌지우지 할 수도 있다는 설이... 흠.. 흠.. 그냥 제 헛소리 입니다.
어쨋든 이렇게 중요한 센서들에 대해서 어떻게 사용하고 어떤 센서들이 있는지 잘 알고 있어야 응용도 할 수 있겠죠~? 오늘은 그 첫번째 센서인 'passive buzzer' 에 대해서 알아보도록 하겠습니다.
11-2. Passive Buzzer 원리
< 출처 : 구글 사진 > |
우선 부져에 대해서는 우리가 이전시간에 잘 알아봤었죠. ---> '멀티펑션 보드 부져 동작'
따라서 이번에 알아보는 것은 Passive Buzzer가 무엇인지 알아보죠.
이전 시간에도 설명했다시피 부져에는 2가지 종류가 있는 회로 내장형과 내장되지 않은 부져가 있습니다.
두 가지는 장단점이 있는데요. 회로 내장형 같은 경우에는 전원만 넣으면 "삐~~~" 라는 소리가 바로 나게되죠. 간편하고 빠르지만 내가 원하는 음역대의 소리를 낼 수 없는 단점이 있습니다. 그리고 이것을 Active Buzzer 라고 하죠!
우리가 사용할 것은 Passive Buzzer 바로 회로가 내장 되지 않은 부져 입니다. 이 부져 같은 경우에는 회로가 내장되어 있지 않기 때문에 Pulse를 넣어줘야 소리를 낼 수 있습니다. 이는 펌웨어적으로는 코드가 회로 내장형 보다는 복잡해지는 단점이 있죠 ㅠ
하지만!~ 내가 원하는 음역대의 소리를 낼 수 있다는 것! 이 장점 입니다.
이게 먼소리냐 하면 피아노 소리를 내맘대로 낼 수 있다는 뜻 입니다. 어떻게?~ 그건 이전 강좌에서 설명 드렸으니 이번시간에는 간단히 공식만 다시한번 리마인드 해보죠.
t(s) = 1/f(hz)
하.. 정말 V=IR 수준으로 중요한 공식 되겠습니다. 시간을 주파수로 변경하거나 주파수를 시간으로 변경하는 공식입죠. 정말 중요하니 반드시 외워 가도록 합시다.
< 출처 : 구글 사진 > |
그럼 어떻게 우리가 원하는 음을 만들어내느냐~?
위 윤덕용 교수님께서 만들어주신 표를 보고 저 안에 있는 주파수를 만들어주면 원하는 소리를 낼 수가 있습니다.
멀로?~ PWM으로!!
11-3. Passive Buzzer 회로 연결
아두이노에 부져를 연결하는 것은 그림과 같습니다. 간단하죠? 한쪽에는 아두이노핀 3번과 나머지 한쪽에는 GND를 연결하는 것입니다.
반드시 아두이노 3핀에 연결해야 하냐구요?~
'아뇨'
아두이노를 자세히보면 핀옆에 ~ 이렇게 물결 표시가 있는데요. 이건 PWM 주파수 출력이 가능한 핀을 얘기합니다. 따라서 ~ <--- 물결 표시가 있는 핀에 부져를 연결한다면 소리를 낼 수 있는 것입니다.(다른 핀도 낼 수 있지만 펌웨어가 복잡해 집니다.)
그럼 펌웨어를 짜서 내가 원하는 소리를 만들어 볼까요~?
11-4. 펌웨어 코드
#include "pitches.h"
// notes in the melody:
int melody[] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4,
NOTE_C4, NOTE_C4, NOTE_C4, NOTE_G3, NOTE_A3, 0, NOTE_A3, NOTE_G3
};
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4, 4, 8, 8, 4, 4, 4, 4, 4,
};
void setup() {
for (int thisNote = 0; thisNote < 16; thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(9, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// stop the tone playing:
noTone(9);
}
}
void loop() {
// no need to repeat the melody.
}
언제나 처럼 실습은 동영상으로 진행해 보겠습니다~
미리 준비를 안했더니 액티브 부져가 제대로 동작안되서 좀 당황했네요.
양해 부탁드립니다! (망가진건지 제대로 동작 안시킨건지... 새거 뜯은건데 ㅠ)
다음 시간에는 2 Color LED를 동작시켜 보도록 하겠습니다.
그럼 다음주에 보아요~~
8 댓글
재미있는 강의 계속 부탁드립니다.
답글삭제제가 아직 부저가 없어서 혹시 아래걸로 노래 만들어봤는데
삭제혹시 어떠한 소리가 나는지 알 수 있을까요?
int melody[] = {
NOTE_E3,0,NOTE_D3,NOTE_C3,NOTE_D3,NOTE_E3,NOTE_E3,NOTE_E3,NOTE_D3,NOTE_D3,NOTE_D3,NOTE_E3,NOTE_G3,NOTE_G3
NOTE_E3,0,NOTE_D3,NOTE_C3,NOTE_D3,NOTE_E3,NOTE_E3,NOTE_E3,NOTE_D3,NOTE_D3,NOTE_E3,NOTE_D3,NOTE_C3
};
int noteDurations[] = {
4,4,8,4,4,4,4,2,4,4,2,4,4,2
4,4,8,4,4,4,4,2,4,4,4,8,1
};
안녕하세요~ ㅎㅎ 한번 해보고 링크 걸어 드리겠습니다!~
삭제혹시 active 부저도 위와 같이 연결하면 소리가 날 수 있나요?
삭제아뇨 active 부저는 위와 같이 깔끔하게 나오지는 않구요. 미세하게 섞여서 나옵니다. 삐~~~(띠 띠리띠띠 띠띠) 이런식으로요 ㅎ
삭제혹시 테스트 해 보셨다요? 궁금해서 ㅋㅋ
삭제넵 ㅎㅎ 잘되네요!
삭제https://youtu.be/f4r4Kw_2hx4 <-- 소리는 이렇게 나오네요ㅋㅋ
앗 감사합니다 비행기 노래 나오네요 ㅎㅎ 신기하다...
삭제