ㅇ 일 자 : 2026년 5월 19일(화)
ㅇ 내 용
1. 아두이노 회로란?
메인 보드(기판)와 다양한 센서, 액추에이터, 전자 부품들을 전선으로 연결하여 전기가 흐르도록 만든 통로이다. 아두이노 회로를 만들고 보드에 프로그래밍 코드를 입력하면, 외부 환경의 데이터를 읽거나 기계를 직접 움직이는 고유한 기능을 수행하게 된다.
* 액추에이터(Actuator)는 전기, 공압, 유압 등의 에너지를 받아 기계적인 물리적 움직임으로 변환하는 구동장치로, AI나 제어장치(두뇌)의 명령을 받아 실제 동작을 수행하는 기계의 핵심 부품 1.1. 아두이노 회로를 이해하기 위한 핵심 개념
1. 1. 아두이노 회로를 이해하기 위한 핵심 개념
| 핵심 개념 | 내 용 |
| 전류의 흐름 | 전기는 수압이 높은 곳에서 낮은 곳으로 물이 흐르듯, 전압이 높은 곳(5V 또는 3.3V)에서 낮은 곳(GND, 0V)으로 흐른다 |
| 회로의 폐쇄성 | 전기가 출발하여 아두이노 내부나 외부 소자를 거쳐 반드시 GND(그라운드) 핀으로 돌아와야만 회로가 정상 작동한다. |
| 극성 주의 | 전원과 그라운드를 반대로 연결하는 역극성이 발생하면 부품이 타거나 고장 날 수 있어 주의해야 한다. |
[ tinkercad.com 회로 디자인 ]


2. 아두이노를 활용한 회로도 구성 및 제어 실습
2.1. 슬라이드 스위치로 LED 제어하기 (교재 170P)
- 새 회로 만들기 → 스위치 배치하기 →스케치 코드 입력 하기 → 실행 결과 확인하기
- 시리얼모니터(시뮬레이션 시작, 코드클릭, 우하단 참조)에 0 (low), 1 (high) 값이 출력 된다.
<>코드
//[슬라이드 스위치로 LED 제어하기]
void setup()
{
Serial.begin(9600); // 시리얼 최초 통신 초기화
pinMode(8, OUTPUT); // 8번 디지털 핀을 출력 모드로 설정
pinMode(7, INPUT); // 7번 디지털 핀을 입력 모드로 설정
}
void loop()
{
int readValue = digitalRead(7); // 입력 핀의 값을 읽어서 변수에 저장
Serial.println(readValue); // 변수 값을 시리얼 모니터에 출력
if (readValue == HIGH) { // 입력값에 따라 LED 출력값 제어
digitalWrite(8,HIGH); // 조건문이 참이라면 HIGH 실행
}
else {
digitalWrite(8, LOW); // 조건문이 거짓이라면 LOW 실행
}
}

2. 2. 가변저항으로 LED 깜빡임 속도 조절하기 (교재 188P)
<>코드
// [가변저항으로 LED 깜빡임 속도 조절하기]
void setup()
{
Serial.begin(9600); // 직렬 통신 초기화
pinMode(13, OUTPUT);
}
void loop()
{
int readValue = digitalRead(A0); // A0 핀에서 읽은 값을 readValue에 저장
Serial.println(readValue);
digitalWrite(13, LOW);
delay(readValue); //readValue 값만큼 코드 샐행을 기다린다.
digitalWrite(13, HIGH);
delay(readValue); //readValue 값만큼 코드 실행을 기다린다.
}

2.3. 조도 센서로 스마트 가로등 만들기 (교재 199P)
<>코드
// [조도센서로 스마트 가로등 회로 만들기]
void setup()
{
Serial.begin(9600); // 시리얼 직렬 통신 초기화
pinMode(13, OUTPUT); // 디지털 13번 핀을 출력 모드로 설정(연결)한다.
}
void loop()
{
int photoresistor = analogRead(A0); // 조도 센서값 측정
Serial.println(photoresistor); // 조도 센서값 출력
if (photoresistor > 100) // 조도 센서값이 100보다 크면 on
digitalWrite(13, HIGH); // 어두울 때 가로등을 켠다
else
digitalWrite(13, LOW); // 밝을 때 가로등을 끈다
}

2.4. 온도 센서로 온도계 만들기 (교재 204P)
<>코드
//[온도 센서로 온도계 만들기]
void setup()
{
Serial.begin(9600); // 시리얼 통신 초기화
}
void loop()
{
int analogInput = analogRead(A0); // 온도 센서(TMP36) 값 측정
float voltage = analogInput*5.0/1023.0; // 전압값 변환
float temperature = voltage*100-50; // 온도값 변환
Serial.print("Temperature : ");
Serial.println(temperature); // 온도값 출력
}

2.5. 화재경보기 (교재 207P)
<>코드
// [화재 경보기 만들기]
const int sensorPin = A0; // TMP36 온도 센서 핀
const int ledPin = 13; // LED 경보 핀
// 화재 경보를 울릴 기준 온도 (주변 환경에 따라 변경 가능)
const float FIRE_THRESHOLD = 40.0;
void setup() {
pinMode(ledPin, OUTPUT); // LED 핀을 출력으로 설정
Serial.begin(9600); // 모니터링을 위한 시리얼 통신 시작
}
void loop() {
int sensorVal = analogRead(sensorPin); // 센서 값 읽기
float voltage = (sensorVal / 1023.0) * 5.0; // 전압 변환 (0V ~ 5V)
float temperature = (voltage - 0.5) * 120.0; // 섭씨 온도 계산
// 온도가 120℃를 넘으면 LED를 깜빡이는 화재경보기
// 현재 온도 시리얼 모니터 출력
Serial.print("Current Temp: ");
Serial.print(temperature);
Serial.println(" C");
// 화재 경보 조건 검사
if (temperature >= FIRE_THRESHOLD) {
// 화재 발생! LED를 빠르게 깜빡여 경보를 알림
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(50);
} else {
// 정상 상태: LED 꺼짐
digitalWrite(ledPin, LOW);
delay(500); // 평상시에는 0.5초 간격으로 온도 체크
}
}

2.6. 초음파 센서로 거리 측정하기 (교재 241p)
<>코드
// [초음파 센서로 거리 측정하기]
// 초음파가 물체에 반사되어 돌아올 때까지의 '시간'을 측정함.
// 초음파의 속력은 이미 정해져 있고 시간과 속력을 공식적용하여 물체 사이의 거리를 구한다.
// 초음파센서기는 사물의 위치에 따라 출력값이 달라진다.
void setup() {
Serial.begin(9600);
}
void loop() {
pinMode(9, OUTPUT);
digitalWrite(9, LOW);
delayMicroseconds(2);
digitalWrite(9, HIGH);
delayMicroseconds(5);
digitalWrite(9, LOW);
pinMode(9, INPUT);
double duration= pulseIn(9, HIGH);
double cm = duration * 340 / 10000 / 2;
Serial.println(cm);
}
※ 초음파 센서기를 마우스로 클릭하면 센서범위가 나타나며, 움직임에 따라 값이 변하면서 '시리얼모니터'에 변화값이 표시됨

끝.
'학습 로그 > Aduino' 카테고리의 다른 글
| D+34 [아두이노] Aduino '전자키보드 만들기' 실습 (0) | 2026.05.26 |
|---|---|
| D+31 [아두이노] Aduino 환경에서 조건문, 함수 활용한 제어 실습 (0) | 2026.05.20 |
| D+29 [아두이노] PIR 센서로 현관등 만들기 (0) | 2026.05.18 |
| D+25 [아두이노] Arduino 입문 및 실습 (0) | 2026.05.12 |