본문 바로가기
C++

[C++] 아두이노로 자동 햇빛 가리개 만들기

by teamnova 2024. 1. 13.
728x90

안녕하세요. 이번에는 아두이노, 서보 모터, 조도센서를 사용하여 햇빛이 비치면 자동으로 가리는 자동 햇빛 가리개를 만들어보겠습니다.

 

아래 두 게시물에서 이어집니다.

https://stickode.tistory.com/1044

 

[C++] 아두이노로 서보 모터 사용하기

이번 시간에는 아두이노로 서보 모터 사용하는 예제를 진행하겠습니다. 1. 아두이노란? 아두이노(Arduino)는 사용하기 쉬운 하드웨어와 소프트웨어를 기반으로 한 오픈 소스 전자 플랫폼입니다.

stickode.tistory.com

https://stickode.tistory.com/1055

 

[C++] 아두이노로 조도센서 사용하기

안녕하세요. 이번 시간에는 아두이노로 조도센서를 사용하는 예제를 진행하겠습니다. 아두이노에 대해 기본적인 내용을 알고 싶다면 아래 게시글을 참고해주세요. https://stickode.tistory.com/1044 [C++

stickode.tistory.com

 

햇빛이 비치면 가리고, 햇빛이 비치지 않으면 가리지 않도록 해보겠습니다.

 

 

1. 준비물

아두이노 우노, 서보모터, 조도센서

 

2. 회로도

회로도

 

3. 소스 코드

// 서보모터 라이브러리 불러오기
#include <Servo.h>

// 서보모터와 조도센서 핀에 대한 상수 정의
#define SERVO 11
#define PHOTO A0

// Servo 객체 생성
Servo myservo;

// 조도센서 읽기 결과를 저장하는 변수
int val = 0;

void setup()
{
  // 서보모터를 핀 SERVO에 연결
  myservo.attach(SERVO);
}

void loop()
{ 
  // 조도센서 아날로그 값을 읽어와서 0에서 1023까지의 범위를 0에서 180으로 매핑
  val = map(analogRead(PHOTO), 0, 1023, 0, 180);
  
  // 매핑된 값이 100보다 작으면 서보모터를 90도로 회전
  if(val < 100){
    myservo.write(90);
  } 
  // 매핑된 값이 100보다 크지 않으면 서보모터를 0도로 회전
  else {
    myservo.write(0);
  }
  
  // 100 밀리초의 딜레이. 아두이노 과부하를 막기 위함.
  delay(100);
}

 

 

4. 실행

실행 영상입니다.

스탠드 조명을 햇빛이라고 가정하여 진행했습니다.