본문내용
1. 서론
1.1. 아두이노 마이크로컨트롤러의 이해
아두이노는 마이크로컨트롤러를 장착한 시스템을 위한 오픈소스 컴퓨팅/소프트웨어 개발환경이다. 이번 실험에서는 Mega2560 아두이노 보드를 이용하여 실험을 진행하였다. 아두이노는 센서, 스위치 등으로부터 입력 값을 받아들여 LED, 모터 등 다양한 장치의 출력을 제어하여 이를 통해 환경과 상호작용이 가능한 다양한 장치들을 쉽게 제작할 수 있다. 아두이노 보드의 입출력 단자에 핀 번호가 프린트 되어 있고, 이를 통해 입, 출력 신호를 제어한다. 입출력 신호는 디지털/아날로그로 구분되며, 디지털 신호는 HIGH/LOW 두 가지 상태를 입출력할 수 있다. Mega2560 보드에서는 pinMode() 함수에 인자로 핀 번호와 INPUT/OUTPUT 중 하나를 선택하여 입력 핀으로 사용할지 출력 핀으로 사용할지 결정할 수 있다. 디지털 핀이 입력으로 설정되었을 경우 digitalRead() 함수에 핀 번호를 입력하여 핀의 상태를 읽을 수 있고 출력으로 설정되었을 경우 digitalWrite() 함수에 핀 번호와 출력을 입력하여 핀의 출력을 제어할 수 있다. 따라서 아두이노는 마이크로컨트롤러의 기본 구성과 동작 방식에 대해 이해할 수 있는 좋은 실험 도구이다.
1.2. 디지털 입출력의 개념과 활용
아두이노는 센서, 스위치 등으로부터 입력 값을 받아들여 LED, 모터 등 다양한 장치의 출력을 제어할 수 있다. 아두이노 보드의 입출력 단자에 핀 번호가 프린트되어 있으며, 이를 통해 입·출력 신호를 제어할 수 있다. 입출력 신호는 디지털/아날로그로 구분되며, 디지털 신호는 HIGH/LOW 두 가지 상태를 입출력할 수 있다.
Mega2560 보드에서는 pinMode() 함수에 인자로 핀 번호와 INPUT/OUTPUT 중 하나를 선택하여 입력 핀으로 사용할지 출력 핀으로 사용할지 결정할 수 있다. 디지털 핀이 입력으로 설정되었을 경우 digitalRead() 함수에 핀 번호를 입력하여 핀의 상태를 읽을 수 있고, 출력으로 설정되었을 경우 digitalWrite() 함수에 핀 번호와 출력을 입력하여 핀의 출력을 제어할 수 있다.
푸시버튼 스위치는 회로로 구성되어 사용자의 입력을 받을 시 디지털 입력을 받아들일 수 있다. 이때 풀업 저항, 풀다운 저항을 푸시버튼 스위치에 연결하여 플로팅 현상을 억제할 수 있다. 또한, 스위치의 적절한 사용을 위해서 하드웨어/소프트웨어를 통해 스위치의 연결과 차단이 순간적으로 반복되는 채터링 현상을 방지해야 한다.
플로팅 현상은 스위치가 연결되지 않은 상태에서 전류가 흐르는지 안 흐르는지 알 수 없는 상태가 된 것이다. 입력 단자 주위에 정전기나 잡음에 의해서 오류가 생기며 이를 방지하기 위해 풀업 저항이나 풀다운 저항을 회로에 연결해주어 해결한다. 풀업 저항은 저항을 앞에 붙여줘서 플로팅 현상을 해결하는 방법이며, 풀다운 저항은 그라운드 쪽, 밑에다 저항을 연결하는 방식이다.
2. 실험 환경 및 실험 장치
2.1. 실험 장비와 소프트웨어
이번 실험에는 아두이노 Mega2560 보드와 아두이노 IDE 프로그램을 사용하였다. 아두이노 Mega2560 보드는 마이크로컨트롤러인 ATmega2560 칩을 장착하고 있으며, USB 통신을 위한 ATmega16U2 칩도 함께 내장하고 있다. 이 보드는 입출력 핀이 매우 많아 여러 장치를 동시에 제어할 수 있다는 장점이 있다. 또한 메모리 용량이 크여 복잡한 프로그램도 구현할 수 있다.
아두이노 IDE는 아두이노 보드를 프로그래밍하기 위한 통합개발환경으로, 컴퓨터와 아두이노 보드를 USB로 연결하여 사용한다. IDE에는 부트로더가 포함되어 있어 별도의 하드웨어 프로그래머 없이도 새로운 코드를 업로드할 수 있다. 이를 통해 쉽고...