본문내용
1. 전기및디지털회로실험 결과레포트
1.1. 실험 명
실험 명은 "전기및디지털회로실험 결과레포트"이다.
본 실험은 전기 및 디지털 회로의 기본 개념과 동작을 실험적으로 확인하고 이를 통해 이해도를 높이는 것을 목적으로 한다.
1.2. 실험 개요
실험 개요는 아두이노에서 지원하는 디지털 I/O와 아날로그 I/O를 사용하는 기초적인 실험을 해보고, 시리얼 통신을 통해 PC에서 아두이노의 수행 결과를 확인하며 프로그램을 디버깅하는 방법을 학습하는 것이다.
구체적으로 디지털 입력(Read), 디지털 출력(Write), 아날로그 입력(Read), 아날로그 출력(PWM Write)에 대한 실험을 진행하여 입출력 관련 기능을 익히고, 이를 통해 시리얼 통신 및 프로그램 디버깅 방법을 학습하고자 한다.
이를 통해 마이크로 프로세서 기술 활용 능력을 배양할 수 있을 것으로 기대된다.
1.3. 실험 결과
1.3.1. 디지털 Input(Read)
아두이노에서 디지털 핀을 이용한 입력 읽기는 매우 기초적이지만 중요한 기능이다. 이를 통해 사용자의 입력을 감지하고 프로그램의 동작을 제어할 수 있다.
디지털 입력(Read)에서는 버튼이나 스위치와 같은 디지털 입력 장치를 아두이노의 디지털 핀에 연결하여 이 핀의 상태를 읽어들이는 방법을 다룬다. 문서에 따르면, 이를 위해 아두이노 보드와 브레드보드를 이용해 버튼을 연결하고 풀다운 저항을 사용하였다.
이 실험에서는 디지털 핀 2번을 버튼 입력으로 설정하고, 버튼의 상태를 읽어 시리얼 모니터에 출력하는 프로그램을 작성하였다. 구체적인 코드는 다음과 같다:
```c++
void setup(){
Serial.begin(9600); // 시리얼 통신 초기화
pinMode(2,INPUT); // 2번 핀을 버튼 입력으로 설정
}
void loop(){
if(digitalRead(2)==HIGH){ // 디지털 상태를 읽고 HIGH 상태라면
Serial.print("ON"); // 시리얼 모니터에 ON 출력
}
else{ // 디지털 상태를 읽고 LOW 상태라면
Serial.print("OFF"); // 시리얼 모니터에 OFF 출력
}
}
```
이 코드에서 `digitalRead(2)`를 통해 디지털 핀 2번의 상태를 읽어들이고, 버튼이 눌렸을 때(HIGH 상태) "ON"을, 눌리지 않았을 때(LOW 상태) "OFF"를 시리얼 모니터에 출력하도록 하였다.
실험 결과에 따르면, 이 코드를 컴파일 및 업로드한 후 스위치를 눌렀다 떼면 시리얼 모니터에 ON과 OFF가 번갈아 출력되는 것을 확인할 수 있었다. 이를 통해 디지털 입력 장치의 상태를 프로그램에서 정확히 감지할 수 있음을 알 수 있다.
풀다운 저항을 사용한 이유는 버튼이 눌리지 않을 때 디지털 핀의 상태가 HIGH가 되도록 하기 위해서이다. 버튼이 눌리면 디지털 핀이 LOW 상태가 되어 프로그램에서 이를 감지할 수 있다.
이처럼 디지털 입력(Read)은 아두이노에서 사용자의 입력을 받아들이는 가장 기본적인 기능이다. 버튼, 스위치 등의 디지털 입력 장치를 활용하여 사용자 인터페이스를 구현하거나, 센서의 디지털 출력을 읽어들이는 등 다양한 응용이 가능하다.
1.3.2. 디지털 Output(Write)
디지털 Output(Write)은 보드에 장착된 LED(디지털 13 출력과 연결)를 스위치 입력에 따라 제어하는 기능이다. 회로를 구성하고 프로그램을 작성하여 스위치를 눌렀을 때 LED가 켜지도록 동작을 확인하였다.
구체적으로 회로는 스위치를 눌렀을 때 보드의 디지털 13번 핀에 연결된 LED가 켜지도록 구성하였다. 프로그램에서는 디지털 2번 핀을 버튼 입력으로 설정하고, 해당 핀의 상태가 HIGH(버튼 눌림)일 때 디지털 13번 핀을 HIGH로 출력하여 LED를 켜도록 구현하였다.
이를 통해 아두이노에서 디지털 출력 핀을 제어하는 방법을 학습할 수 있었다. 디지털 입출력 핀은 입력과 출력에 공동으로 사용될 수 있으며, 버튼 입력을 받아 LED 출력을 제어하는 기본적인 입출력 동작을 확인하였다. 이는 향후 다양한 주변 장치 제어에 응용될 수 있을 것이다.
1.3.3. 아날로그 Input(Read)
'1.3.3. 아날로그 Input(Read)'는 아날로그 입력 실험에 대한 내용이다. 이를 위해 아래와 같은 회로를 구성하였다.
[아날로그 Input 측정 회로]
실험 과정에서 포텐셔미터에 의해 조절된 전압 값이 시리얼 모니터에 연속으로 출력되도록 프로그램을 작성하고 컴파일 및 업로드하였다. 그 후 포텐셔미터를 조절하면서 그 결과를 확인하였다.
코드를 보면 다음과 같다.
void setup(){
Serial.begin(9600); // 시리얼 통신 초기화
}
void loop(){
int a;
a = analogRead(A0); // a를 아날로그입력 A0로 설정
Serial.print("Read A0 : "); // 메시지 출력
Serial.println(a); // 아날로그 입력값 출력
}
분석 결과, 가변저항을 조절함에 따라 연속적인 아날로그 Input의 변화가 시리얼모니터로 관찰되었다. 아날로그 입력은 ADC에 의해 5V를 0.0049V 단위로 나누어 10bit(2^10:1024)개의 수로 나타낼 수 있다. 따라서 이 실험에서 가변저항의 값이 변함에 따라 0~1023 사이의 값으로 시리얼 모니터에 출력된 것이다.
1.3.4. 아날로그 Output(PWM Write)
LED가 처음에는 가장 밝은 밝기로 켜진 후, 매 1초마다 점점 어두워졌다가 다시 점점 밝아지는 것을 반복하도록 프로그램을 작성했다""
먼저 회로를 구성하였다. LED를 아날로그 출력 핀 9번에 연결하였고, 이를 통해 PWM(Pulse Width Modulation) 기능을 활용...