Title
조회 수 436 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

본 게시글에서는 아날로그 입력을 사용하여 어떻게 광도를 측정하는지 알아보도록 하겠습니다. 이전 강좌 8번에 서 사용된 회로를 응용하겠습니다.

 

목적


  • 아두이노를 Uno 와 아두이노 상의 부저를 이용할수있게된다
  • 소리를 낼수있게된다
  • 간단한 음악을 만들수 있게 된다.
  • 조도센서의 기능을 알수있다.

준비물


 ArduinoUno_r2_front450px-300x210.jpg Arduino Uno R2

400 빵판.jpg 브레드 보드

 

21.아두이노 CDS 조도 포토 셀 센서.PNG 조도 센서

 

 

피에조부저.jpg 피에조부저

 

 

 

Moniter


 

1.jpg

 

연주하기


음계를 연주하기 위해서 피에조 버저하나를 준비하고 브레드보드에 피에조 버저를 꼽은 다음 피에조버저의 핀 하나를 GND에 연결하고 다른 하나를 디지털 핀 12에 연결합니다.

 

2.jpg

 

Fritzing


 

3.jpg

위의 그림 참조

  1. int speakerPin = 12;
  2.  
  3. int numTones = 10;
  4. int tones[] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440};
  5. // mid C C# D D# E F F# G G# A
  6.  
  7. void setup()
  8. {
  9. for (int i = 0; i < numTones; i++)
  10. {
  11. tone(speakerPin, tones[i]);
  12. delay(500);
  13. }
  14. noTone(speakerPin);
  15. }
  16.  
  17. void loop()
  18. {
  19. }
  20.  

특정 음을 연주하기 위해서는 주파수를 정해 주어야 합니다. 각각의 음은 서로 다른 주파수를 가지고 있고 배열에 저장이 되어 있습니다. 배열에 있는 음을 순서대로 연수하면 음계를 연주할 수 있습니다.

for loop문에서 각각의 음은 tone[i]를 사용하여 연주합니다. 아두이노 함수 tone()은 두 개의 파라메터를 가지는데 처음 값은 음을 플리이할 스피커핀이며, 다른 것은 플레이할 음의 주파수 입니다.

모든 음이 연주가 되면 noTone함수가 연주되고 있는 음을 멈추게 됩니다.

for loop는 메인 loop문 안에 위치하여도 되지만 setup함수안에 위치시켜 한번만 플레이 되게 만들어 놓았습니다. 또 한번 연주되는 음을 듣고 싶으면 아두이노의 리셋버튼을 누르십시오.

 

빛에 따라 연주하는 아두이노를 만드는 Fritzing

 

5.jpg

 

 

Sound


소리파동은 공기압의 진동입니다. 진동의 속도가 소리를 만들게 되는 것이죠. 높은 주파수의 진동이 더 높은 피치를 내게 됩니다.

 

4.png

 

C 음은 보통 277Hz로 정의 되어 있습니다. 디지털 출력을 277번 on/off 시키면 C음을 얻을 수 있는데 이 소리를 들을려면 전기적인 신호를 파동으로 바꾸어주는 무언가를 연결해야 합니다. 이것이 스피커 혹은 피에조 버저가 됩니다.

비에조 버저는 전기적인 신호에 늘어났다 줄어드는 특별한 크리스탈을 사용하여 우리가 들을 수 있는 소리를 만들어 냅니다.

 

Code


다음의 아두이노 코드를 업로드합니다.

  1. int speakerPin = 12;
  2. int photocellPin = 0;
  3.  
  4. void setup()
  5. {
  6. }
  7.  
  8. void loop()
  9. {
  10. int reading = analogRead(photocellPin);
  11. int pitch = 200 + reading / 4;
  12. tone(speakerPin, pitch);
  13. }
  14.  

이 스케치 코드는 매우 간단합니다. 단순히 A0에서 조도값인 아날로그 값(0~700)을 읽어서 4로 나눈뒤 200을 더하여 제일 낮은 주파수를 200Hz로 만들고 플레이 시키는 코드입니다. 주파수대역은 200Hz~370Hz가 되게 됩니다. 포토셀앞에서 손을 흔들어 음악을 플레이하여 보십시오.


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
321 아두이노 강좌 [아두이노 강좌] 13. 아두이노를 사용하여 DC모터 제어하기 file 귀욤둥이 2017.03.01 394
320 아두이노 강좌 [아두이노 강좌] 12. LCD에 온도 및 조도 표시하기 file 귀욤둥이 2017.02.24 273
319 아두이노 강좌 [아두이노 강좌] 11. LCD 디스플레이 연결하기 file 귀욤둥이 2017.02.24 448
» 아두이노 강좌 [아두이노 강좌] 10. 소리 만들어 음악 연주하기 file 귀욤둥이 2017.02.24 436
317 아두이노 강좌 [아두이노 강좌] 09. 광센서로 조도 측정하기 file 귀욤둥이 2017.02.24 158
316 아두이노 강좌 [아두이노 강좌] 08. 가변저항을 이용하여 아날로그 입력으로 LED 밝기 조절하기 file 귀욤둥이 2017.02.24 466
315 아두이노 강좌 [아두이노 강좌] 07. 버튼을 이용하여 RGB LED 색상 제어하기 file 귀욤둥이 2017.02.23 465
314 아두이노 강좌 [아두이노 강좌] 06. 푸쉬버튼을 이용한 디지털 입력하기 file 귀욤둥이 2017.02.23 246
313 아두이노 강좌 [아두이노 강좌] 05. PC상에서 Serial Monitor로 LED 제어하기 file 귀욤둥이 2017.02.23 161
312 아두이노 강좌 [아두이노 강좌] 04. 쉬프트 레지스터를 이용한 LED제어 file 귀욤둥이 2017.02.21 220
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 33 Next
/ 33