[아두이노 강좌] 15. 아날로그 신호 입력받기 / 조도센서로 밝기 측정하기 / analogRead()
개요
아두이노는 아래 사진과 같이 A0~A5 총 6개의 핀을 통해 아날로그 신호를 입력받을 수 있습니다. 이번 글에서는 아날로그 신호에 대해 다시 한번 되짚어보고, 아날로그 센서를 통해 직접 신호를 입력받아 보도록 할게요. 그림1. 아날로그 신호 입력핀
아날로그 신호
디지털 신호와 마찬가지로 아날로그 신호는 기기들간의 통신을 위한 전기적 신호입니다. 아날로그 신호는 여러개의 신호로 이루어지며, 아래 그림과 같이 연속적인 물리량 변화를 나타낼 수 있습니다.
그림2. 아날로그 신호
아두이노와 아날로그 신호를 연관지어보자면, 아두이노 우노의 아날로그 입력핀은 5V를 인식할 경우 1023을 반환합니다. 그리고 0V를 인식하면 0을, 중간인 2.5V를 인식하면 1023값의 중간인 512를 반환합니다. 이처럼 아두이노 우노는 0~5V의 전기적 신호를 0~1023 총 1024가지의 신호로 반환합니다. (기본적으로 1024가지이지만 프로그래밍을 통해 조절할 수도 있어요. ^^)
조도센서란?
조도센서(황화 카드뮴셀:CDS)는 저항의 일종으로 외부 빛의 조도에 의해 저항값이 결정 됩니다. 빛이 강하면 저항 값이 낮아지고, 빛이 약하면 저항 값이 높아지죠. 이러한 성질을 이용하면 아두이노의 5V 전압에 밝기에 따른 저항(조도센서)을 연결하여 아날로그성 신호를 만들 수 있으며, 결국 밝기를 측정할 수 있습니다. CDS는 저렴하기때문에 가장 보편적으로 사용되고 있으며, 자동차 헤드라이트나 밝기에 따라 켜지는 조명등 여러 실생활에서 사용 되고 있습니다.
그림3. 황화 카드뮴 셀 CDS
아두이노와 조도센서 사용하기
아두이노의 아날로그 핀과 아날로그 센서(CDS)를 사용하여 밝기를 측정해봅시다. 준비물
저항이 연결된 5V쪽에 A0을 연결해줍니다.
프로그램 코드 (5) int cds = A0; // 변수 cds를 선언하고, A0을 대입
void setup() { Serial.begin(9600); // 시리얼 통신을 시작하며, 속도는 9600으로 설정. } void loop() { int val= analogRead(cds); // 변수 val을 선언, cds(A0) 아날로그 값을 저장 Serial.println(val); // 변수 val에 저장된 값을 시리얼 통신을 통해 출력. delay(1000); // 1초 동안 딜레이. }
프로그램 해석 변수 val에 아두이노 A0핀에 입력되는 아날로그 센서 값을 저장한 후 이를 시리얼 모니터로 출력하기 위한 프로그램입니다. 통합개발환경 우측 상단의 시리얼모니터로 센싱값을 확인해봅시다. 그림4. 아날로그 신호 통신 과정
관련 함수 정리하기 ■analogRead(핀번호) 아날로그 신호를 읽기위한 함수입니다. 매개변수 핀번호 - 아날로그 신호를 읽어들일 아두이노 핀번호 (A0~A5)를 설정합니다.
여기서 잠깐~! 본 예제에서 활용된 회로를 보면 10k저항이 연결된것을 확인할 수 있습니다. 이 저항의 용도는 무엇일까요? (이 또한 전기의 성질과 연관이 있어요..) 자세한 내용은 여기를 클릭하여 확인해주세요. (옴의법칙, 전압분배법칙 알아보기)
링크바로가기: https://smartstore.naver.com/mechasolution_com/products/2855891646 |