Title
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

본 게시물에서는 시리얼 모니터 프로그램을 이용하여 아날로그 입력값을 디스플레이하는 것을 설명한 후 가변저항을 사용하여 켜지는 LED 갯수를 제어하는 실험을 할 것입니다.

 

목적


  • 아두이노를 Uno 와 아두이노 상의 LED를 레지스터를 이용하여 제어할 수 있다.
  • 아두이노로 LED의 밝기및 색상을 조절할수 있게 된다
  • 저항의 또다른 종류를 사용할수있게 된다
  • 가변저항을 이용하는 방법을 할수있습니다
  • 아날로그로 사용하는 방법에 대하여 알수가있다.

준비물


ArduinoUno_r2_front450px-300x210.jpg Arduino Uno R2

저항 220옴.jpg저항

400 빵판.jpg브레드 보드

 

가변저항(포텐셔미터).jpg 가변저항 (포텐셔미터)

 

 

 

레드 엘이디.png LED

 

74HC595-IC.jpg 74HC595-IC

 

 

 

 

Moniter


 

1.jpg

 

Fritzing


먼저 포텐셔미터라고 알려진 가변저항에 대한 간단한 실험을 하여 보겠습니다. 브레드보드에 아래와 같이 연결을 하십시오.

 

2.jpg

 

아래의 스케치 파일을 아두이노에 업로드 하여보십시오.

 

  1. int potPin = 0;
  2.  
  3. void setup()
  4. {
  5. Serial.begin(9600);
  6. }
  7.  
  8. void loop()
  9. {
  10. int reading = analogRead(potPin);
  11. Serial.println(reading);
  12. delay(500);
  13. }
  14.  

업로드가 끝났으면 시리얼 모니터를 열어 보십시오. 화면 숫자들이 나타나는 것을 볼수 있을 것입니다.

 

3.jpg

가변저항에 달려 있는 손잡이를 돌려 보면 숫자들이 0~1023사이에서 변하는 것을 확인 할 수 있을 겁니다.

시리얼 모니터는 아두이노가 아래의 스케치코드를 실행하면서 A0로부터 읽어 들인 아날로그 값을 표시하고 있는 것입니다.

  1. int reading = analogRead(potPin);

A0의 전압은 0에서 1023의 숫자로 변환되어 전송이 됩니다.

 

가변저항 (포텐셔미터)​


가변저항은 A0핀의 전압레벨을 변경시킬 수 있습니다. 이 변경된 전압은 스케치 코드에 의해 0~1023의 값으로 변환이 됩니다.

 

4.png

포텐셔미터는 둥글게 생긴 트랙이 있는데 저항과 같은 역활을 합니다. 포텐셔미터가 일반 저항과 다른점은 슬라이더라 불리는 중간 연결입니다. 이 슬라이더는 포텐셔미터를 돌리면 같이 돌아가는데 5V쪽으로 돌리면 점차 5V가 되고, GND쪽으로 돌리면 0V가 됩니다.

 

Code


아래의 스케치를 아두이노에 업로드합니다.

  1. int potPin = 0;
  2. int latchPin = 5;
  3. int clockPin = 6;
  4. int dataPin = 4;
  5.  
  6. int leds = 0;
  7.  
  8. void setup()
  9. {
  10. pinMode(latchPin, OUTPUT);
  11. pinMode(dataPin, OUTPUT);
  12. pinMode(clockPin, OUTPUT);
  13. }
  14.  
  15. void loop()
  16. {
  17. int reading = analogRead(potPin);
  18. int numLEDSLit = reading / 114; //1023 / 9
  19. leds = 0;
  20. for (int i = 0; i < numLEDSLit; i++)
  21. {
  22. bitSet(leds, i);
  23. }
  24. updateShiftRegister();
  25. }
  26.  
  27. void updateShiftRegister()
  28. {
  29. digitalWrite(latchPin, LOW);
  30. shiftOut(dataPin, clockPin, LSBFIRST, leds);
  31. digitalWrite(latchPin, HIGH);
  32. }

코드가 상당부분 4번 강좌와 비슷합니다. 만약 코드가 잘 이해가 안되시는 부분이 있다면 이전의 강좌를 참고 바랍니다.

이 스케치의 핵심부분은 아날로그 핀을 정의하는 부분인데 이 아날로그 핀은 포센셔미터의 슬라이더와 연결되게 됩니다.

  1. int potPin = 0;

핀을 아날로그 입력으로 설정하기 위해 setup함수에 아무것도 넣지 않았다는 점을 유의하여 보십시오

메인 루프에서 아래와 같이 아날로그 값을 읽게 됩니다.

  1. int reading = analogRead(potPin);

읽은 아날로그 값은 0에서 1023 사이의 값입니다. 이 값들을 0에서 8의 9개의 LED에 해당하는 숫자로 변경하여 주어야 합니다. 그래서 읽은 값을 114로 나누어 줍니다.

  1. int numLEDSLit = reading / 114;

이제 LED를 원하는 숫자 만큼 켜주기 위해서 for loop안에서는 0에서 numLEDSLit까지 숫자를 카운트하면서 비트를 셋팅하게 됩니다.

  1. leds = 0;
  2. for (int i = 0; i < numLEDSLit; i++)
  3. {
  4. bitSet(leds, i);
  5. }

updateShiftRegister함수를 호출하여 shift register를 업데이트합니다.

  1. updateShiftRegister();

 


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
14 아두이노 강좌 [아두이노 강좌] 13. 아두이노를 사용하여 DC모터 제어하기 file 귀욤둥이 2017.03.01 520
13 아두이노 강좌 [아두이노 강좌] 12. LCD에 온도 및 조도 표시하기 file 귀욤둥이 2017.02.24 519
12 아두이노 강좌 [아두이노 강좌] 11. LCD 디스플레이 연결하기 file 귀욤둥이 2017.02.24 661
11 아두이노 강좌 [아두이노 강좌] 10. 소리 만들어 음악 연주하기 file 귀욤둥이 2017.02.24 594
10 아두이노 강좌 [아두이노 강좌] 09. 광센서로 조도 측정하기 file 귀욤둥이 2017.02.24 231
» 아두이노 강좌 [아두이노 강좌] 08. 가변저항을 이용하여 아날로그 입력으로 LED 밝기 조절하기 file 귀욤둥이 2017.02.24 624
8 아두이노 강좌 [아두이노 강좌] 07. 버튼을 이용하여 RGB LED 색상 제어하기 file 귀욤둥이 2017.02.23 729
7 아두이노 강좌 [아두이노 강좌] 06. 푸쉬버튼을 이용한 디지털 입력하기 file 귀욤둥이 2017.02.23 334
6 아두이노 강좌 [아두이노 강좌] 05. PC상에서 Serial Monitor로 LED 제어하기 file 귀욤둥이 2017.02.23 249
5 아두이노 강좌 [아두이노 강좌] 04. 쉬프트 레지스터를 이용한 LED제어 file 귀욤둥이 2017.02.21 289
4 아두이노 강좌 [아두이노 강좌] 03. RGB LED 색깔 변경하기 file 귀욤둥이 2017.02.21 164
3 아두이노 강좌 [아두이노 강좌] 02. LED 밝기 변경하기 file 귀욤둥이 2017.02.21 144
2 아두이노 강좌 [아두이노 강좌] 01. LED 깜빡이기 file 귀욤둥이 2017.02.20 113
1 아두이노 강좌 아두이노란 무엇 일까요??? file 귀욤둥이 2017.02.20 76
Board Pagination Prev 1 Next
/ 1