페이지

2025년 12월 26일 금요일

3.2.2. 빛 센서 회로 구성하기

안녕하세요! 여러분의 AI-IT 멘토, '파이컴'입니다. 😊

지난 시간에는 이론을 통해 아두이노가 어떻게 세상을 인지하는지 알아봤죠? 오늘은 그 첫걸음으로, 우리 눈처럼 빛의 밝기를 감지하는 '빛 센서(조도 센서)'를 직접 다뤄볼 거예요.

어두울 때와 밝을 때, 아두이노는 세상을 어떻게 숫자로 받아들이는지! 지금부터 저와 함께 차근차근 회로를 만들고 코드를 작성하며 확인해 봅시다. 준비되셨나요?

Slide 1: 3장 센서로 세상 느끼기 - 빛 센서 회로 구성하기

빛 센서 회로 구성하기

이번 시간에는 3장. 센서로 세상 느끼기의 두 번째 주제, 빛 센서에 대해 배워볼 거예요. 그중에서도 첫 번째 미션은 바로 빛 센서 회로를 직접 구성해보는 것입니다. 이론으로만 보던 것을 직접 손으로 만들어보면 개념이 머리에 쏙쏙 들어올 거예요!

Slide 2: 빛 센서 회로 구성

빛 센서 회로도 및 실제 연결 사진

자, 이제 본격적으로 회로를 만들어 볼 시간이에요. 복잡해 보이지만, 하나씩 따라 하면 전혀 어렵지 않아요!

✅ 준비물

먼저 필요한 부품들을 챙겨주세요.

  • 아두이노 우노
  • 빛 센서(조도 센서, CdS)
  • 10kΩ 저항 (갈색-검은색-주황색-금색 띠를 확인하세요!)
  • 작은 브레드보드
  • 점퍼선 몇 가닥

✅ 연결 방법

준비물이 모두 모였다면, 슬라이드 이미지의 회로도처럼 연결을 시작해 볼게요.

  1. 부품 배치하기: 먼저 브레드보드에 빛 센서와 10kΩ 저항을 나란히 꽂아주세요.
  2. 가장 중요한 포인트!: 두 부품의 다리가 서로 한쪽씩 맞닿도록 연결해야 해요. 브레드보드의 같은 세로줄에 각 부품의 다리 하나씩을 꽂으면 서로 연결된답니다. 이게 바로 '직렬연결'의 기본이에요.
    • 꿀팁! 빛 센서는 LED와 달리 다리 방향(극성)이 없어서 어느 쪽으로 꽂아도 괜찮아요. 정말 편하죠?
  3. 전원 연결 (5V): 이제 아두이노로부터 전기를 공급해 줄게요. 빛 센서의 남은 쪽 다리를 아두이노의 5V 핀에 연결해 주세요.
  4. 접지 연결 (GND): 전기가 흘러나갈 길도 만들어 줘야겠죠? 저항의 남은 쪽 다리는 아두이노의 GND 핀에 연결합니다.
  5. 신호선 연결 (A0): 마지막으로 가장 중요한 단계! 아두이노가 빛의 밝기 변화를 읽을 수 있도록 신호선을 연결해야 해요. 빛 센서와 저항이 서로 맞닿아 있는 중간 다리에서 선을 하나 뽑아 아두이노의 A0(아날로그 0번) 핀에 연결해 주세요.

이것으로 회로 구성은 끝났습니다! 참 쉽죠? 이 회로는 '전압 분배 회로'라는 것인데, 빛의 밝기에 따라 빛 센서의 저항값이 변하면서 A0 핀에 걸리는 전압이 달라지는 원리랍니다.

Slide 3: 빛 센서 값 읽기 코드

빛 센서 값 확인 코드

하드웨어 준비가 끝났으니, 이제 아두이노에게 명령을 내릴 소프트웨어(코드)를 살펴볼 시간이에요. "지금 얼마나 밝은지 숫자로 말해줘!"라고 시키는 거죠.

✅ 전체 소스 코드

CODE 3.3 | 빛 센서 값 확인 코드
01/*
02  CODE 3.3 빛 센서 값 확인 코드
03*/
04 
05void setup() {
06  Serial.begin(9600); // 컴퓨터와 대화 시작 (속도 9600)
07}
08 
09void loop() {
10  int sensorValue = analogRead(A0); // 빛 센서 값 읽어오기
11  Serial.println(sensorValue);      // 읽은 값을 화면에 출력하기
12  delay(100);                       // 0.1초 잠깐 쉬기
13}

어? 이 코드, 어디서 많이 본 것 같지 않나요? 맞아요! 이전에 '가변 저항' 실습을 해보셨다면 코드가 완전히 똑같다는 걸 눈치채셨을 거예요.

우리가 보기엔 '손으로 돌리는 부품'과 '빛을 감지하는 부품'으로 완전히 다르지만, 아두이노 입장에서는 둘 다 '전압을 변화시키는 저항'일 뿐이거든요. 아두이노는 A0 핀으로 들어오는 전압이 어떻게 변하는지에만 관심이 있답니다. 정말 흥미로운 점이죠?

✅ 코드 핵심 요약

  • setup() 함수
    • Serial.begin(9600);: 아두이노와 PC가 서로 데이터를 주고받을 수 있도록 통신을 시작하는 명령어예요. 9600은 통신 속도를 의미합니다.
  • loop() 함수
    • analogRead(A0);: A0 핀에 연결된 센서의 전압 값을 읽어오는 가장 중요한 함수예요. 이 값은 0부터 1023까지의 숫자로 변환됩니다.
    • Serial.println(sensorValue);: 방금 읽어온 센서 값을 PC 화면(시리얼 모니터)에 출력해 줍니다.
    • delay(100);: 0.1초 동안 잠시 프로그램을 멈춰요. 너무 빠른 속도로 값이 출력되면 우리 눈으로 확인하기 힘드니까요.

✅ 동작 확인

이제 코드를 아두이노에 업로드하고, 아두이노 IDE의 오른쪽 위 돋보기 모양 아이콘을 눌러 '시리얼 모니터' 창을 열어보세요.

  1. 가만히 두면 주변 밝기에 해당하는 숫자들이 화면에 쭉 올라올 거예요.
  2. 빛 센서 위를 손으로 살짝 가려 어둡게 만들어보세요. 어때요? 숫자가 작아지는 것이 보이나요?
  3. 이제 손을 떼면? 다시 숫자가 커지는 것을 확인할 수 있습니다!

이제 아두이노가 빛을 감지하고 있다는 사실을 확실히 알 수 있겠죠?

오늘은 빛 센서를 이용해 주변의 밝기를 숫자로 측정하는 실습을 해봤어요. 간단한 회로와 몇 줄 안 되는 코드로 아두이노에게 '시각'을 선물해 준 셈이죠!

오늘 배운 원리는 주변 밝기에 따라 자동으로 켜지는 가로등, 스마트폰의 자동 밝기 조절 등 우리 생활 곳곳에 사용되는 아주 중요한 기술의 기초랍니다.

다음 시간에는 이 빛 센서 값을 이용해서 LED를 제어하는, 조금 더 재미있는 프로젝트로 돌아올게요! 오늘 실습도 정말 고생 많으셨습니다! 👍

이 포스팅의 내용은 교재 [주니어 공학교실 아두이노의 기초]에 수록된 내용입니다.

댓글 없음:

댓글 쓰기