주변 밝기에 따라 자동으로 불이 켜지고 꺼지는 LED 만들기(천재교육 정보교과서)

아두위키 : Arduwiki

본 위키는 천재교육 고교 정보교과서 P. 215 ~ 218 주변 밝기에 따라 자동으로 불이 켜지고 꺼지는 LED 만들기에 대한 내용을 서술합니다.

조도 센서(CDS) 문서에서 이번 예제에 사용되는 조도 센서(교과서에서는 빛 센서로 명칭)에 대한 기본 정보를 참고해주세요.

※ 교과서 내용에 따라 엔트리를 함께 사용합니다.

아두이노 사용 방법 문서에서 엔트리에 하드웨어(아두이노)를 연결하여 사용하는 방법을 참고해주세요.


P. 215 ~ 216 피지컬 컴퓨팅 시스템의 구현, 자동으로 불이 켜지는 LED 만들기

조도 센서는 주변 밝기를 0 ~ 1023 아날로그 값으로 출력하는 모듈입니다.

주변 밝기 값이 기준값(임의 설정)보다 낮으면(어두운 경우) LED가 켜지고, 높으면(밝은 경우) LED가 꺼지는 예제입니다.


회로 구성

교과서 217페이지에 표시된 회로와 동일합니다.

  • LED에 연결된 저항 : 220 ~ 1kΩ을 주로 사용하며, 저항이 클수록 LED 밝기가 줄어듭니다.
  • 조도 센서에 연결된 저항 : 10kΩ을 주로 사용하며 저항 값이 낮아질수록 감도가 낮아집니다.

엔트리

엔트리 사용 관련 내용은 아두이노 사용 방법 문서의 내용과 동일합니다.


엔트리 설치

1. 엔트리 홈페이지 접속

2. 다운로드 탭 클릭

3. 운영체제에 맞는 버전을 다운로드하신 후 및 실행하여 설치해주세요.


하드웨어 연결

1. 설치된 엔트리 오프라인 프로그램를 실행합니다.

2. 컴퓨터(혹은 노트북)에 아두이노 보드를 연결합니다.

3. 하드웨어 - 연결 프로그램 열기 버튼을 누릅니다.


4. 해당하는 하드웨어를 선택해주세요. 본문에서는 아두이노 Uno 확장모드를 사용합니다.

* 포트 번호 확인 방법은 링크 문서로 이동해 초반부의 장치 관리자 관련 내용을 참고해주세요.

5. 최초 실행 시 드라이버와 펌웨어를 설치를 눌러줍니다.

6. 하드웨어가 정상적으로 연결이 완료되었다면 다음과 같이 새로운 블록이 생성됩니다.


엔트리봇 코딩

시작하기 버튼을 누르면 엔트리봇이 아날로그 A0 센서(조도 센서) 값을 계속 말하도록 코딩해주세요.


배경 코딩

1. 오브젝트 추가하기 버튼을 클릭합니다.

2. 배경을 선택하여 추가합니다.


3. 다음과 같이 배경 오브젝트에 코딩해주세요.

※ 교과서에 표기된 코드를 조금 수정했습니다. 조도 센서는 주변이 어두울수록 값이 낮아집니다. 주변이 어두워지면 LED를 켤 것이기 때문에 센서 값이 기준값보다 낮을 때 LED가 켜지고, 배경은 밤이 되도록 코드가 수정되었습니다.


실행결과

1. 좌측

핸드폰 후레쉬를 비추어 밝은 환경으로 만들어준 상태입니다.

엔트리 배경은 낮이 된 모습이고, 0 ~ 1023 중 비교적 높은 값을 말하고 있습니다.

아두이노에 연결된 LED는 꺼져있는 모습니다.

2. 우측

어두운 환경으로 만들어준 상태입니다.

엔트리 배경은 밤이 된 모습이고, 0 ~ 1023 중 비교적 낮은 값을 말하고 있습니다.

아두이노에 연결된 LED가 켜진 모습입니다.


P. 217 ~ 218 아두이노를 이용하여 자동으로 불이 켜지는 LED 만들기

위와 거의 동일한 예제이지만, 엔트리 대신 아두이노를 사용합니다.

아두이노를 처음 사용하신다면 아두이노 사용 방법 문서에서 아두이노 IDE 사용법을 먼저 참고해주세요.


회로 구성

이전 회로와 동일합니다.


아두이노 코드

조도 센서 값을 기준으로 LED를 켜거나 끄는 코드입니다.

int sensor = 0; // 조도 센서 값을 저장할 변수입니다. 0으로 초기화합니다.

void setup() {
  pinMode(7, OUTPUT); // 7번(LED) 핀을 출력으로 설정합니다.
}

void loop() {
  sensor = analogRead(A0); // A0 핀에 연결된 조도 센서 값을 읽어와 sensor 변수에 저장합니다.
  if (sensor > 500)        // 조도 센서 값(0 ~ 1023)이 500보다 크다면 * 주위가 밝다면
    digitalWrite(7, LOW);  // 7번 핀(LED)에 LOW 신호를 보내 LED를 끕니다.
  else                     // 그렇지 않다면(조도 센서 값이 500 이하라면) * 주위가 어둡다면
    digitalWrite(7, HIGH); // 7번 핀(LED)에 HIGH 신호를 보내 LED를 켭니다.
}


실행 결과

P. 215 ~ 216 예제와 동일하게 LED가 작동합니다.

  • 좌측 : 휴대폰 후레쉬를 비춰 주변이 밝은 상태이기 때문에 LED가 꺼진 모습입니다.
  • 우측 : 주변이 어두운 상태이기 때문에 LED가 켜진 모습입니다.