아두이노 조도센서 모터 - adu-ino jodosenseo moteo


서보모터를 사용하기 위해서는 꼭 Servo의 라이브러리를 가져와 주세요.

4번째 줄의 코드는 Servo라는 라이브러리에서 사용할 sv라는 변수를 지정한 것입니다. Servo를 직접 쓰지 못하고, 대표 변수를 지정하여 'sv.attach();, sv.write();'와 같이 코드를 작성해 준답니다.

7번째 줄의 코드'sv.attach(13);'은 '13번 핀에 서보모터를 연결했다'라고 설정해 준 것입니다. Servo를 직접 쓰지 않고 대표 변수인 sv를 사용했답니다.

loop() 문에서 11번째 줄은 'analogRead(A0);'의 값을 light라는 변수에 저장하겠다는 코드인데요, 이때 A0핀은 아날로그 입력핀을 말하며, 조도센서의 데이터 값이 A0핀을 통해 전달이 되는 거랍니다.

이제 조도센서의 입력값을 가지고 왔다면 서보모터에 회전 각도를 출력시켜야겠죠? 이때 사용하는 함수는 map() 함수로 빛의 값을 바꾸고자 하는 각도로 변경해줍니다. 변경된 값은 a라는 변수에 저장하여 13번째 줄과 같이 'sv.write(a);'로 서보모터의 회전 각도로 출력되는 것이지요.

아두이노 조도센서 모터 - adu-ino jodosenseo moteo
//서보모터 라이브러리 불러옴
#include <Servo.h>

Servo servo_3; //서보모터 이름정해줌

void setup()
{
  pinMode(A0, INPUT); //조도센서 
  Serial.begin(9600); //시리얼
  
  servo_3.attach(3); //3번 핀에 모터 등록
}

void loop()
{
  //조도센서 값을 보기위한 시리얼 출력
  Serial.println(analogRead(A0));
  
  //만약 900미만일때(어두울때) 서보모터 180도 적용
  //900이상일때(밝을때) 서보모터 0도 적용
  if(analogRead(A0) < 900){
    servo_3.write(180);
  } else {
    servo_3.write(0);
  }
}

반응형

저작자표시비영리변경금지

'IoT > Arduino' 카테고리의 다른 글

[아두이노] 트랜지스터와 DC모터를 이용한 모터작동  (0) 2020.05.16
[아두이노] 4색 LED사용하기  (0) 2020.05.12
[아두이노] 4핀 초음파센서, 피에조스피커를 사용한 경보기만들기  (0) 2020.05.12
[아두이노] 조도센서, 인체감지센서를 이용한 스마트가로등 만들기  (0) 2020.05.09
[아두이노] 서보모터 사용하기  (0) 2020.05.09

부품 살펴보기

1. 조도센서(Photoresistor)

1) 조도센서 (Photo Resistor)는 주변의 밝기를 측정하는 센서입니다. 광에너지 (빛)를 받으면 내부에 움직이는 전자가 발생하여 전도율이 변하는 광전효과를 가지는 소자를 사용합니다. 황화카드뮴을 (Cds)를 소자로 사용한 경우, CdS 센서라고 합니다.

CdS센서는 작고 저렴하기 때문에 가장 보편적으로 사용되고 있습니다.

어두워지면 자동으로 켜지는 가로등, 자동차의 헤드라이트, 밝기에 따라 변하는 핸드폰 화면 액정 등 실생활에서도 쉽게 찾아 볼 수 있습니다.

2)조도센서사용방법

조도센서는 극성은 없으나 빛의 양에 따라 전도율이 변합니다. 빛의 양이 많아질 수록 전도율이 높아져 저항이 낮아집니다. 그러나 전도율이 밝기에 비례하여 선형적으로 증가하는 것이 아니기 때문에 정확한 Lux 값을 구하기보다는 밝고 어두운 정도만을 판별하기에 적합합니다.

이 예제에서 사용된 조도센서 (CdS)는 옥외주차장, 휴식중의 극장 객석 정도의 빛의 양 (10 Lux) 에서 약 10KΩ의 저항을 가지며, 아무런 빛이 없는 암실에서 약 200KΩ의 저항을 가집니다.

조도센서도 일종의 저항이나, 빛의 양이 매우 많은 경우, 저항이 매우 작아저 과전류가 흐를수 있습니다 , 또한 조도센서의 저항 값에 따른 전압을 신호로 입력받기 위해서 10K 저항을 달아줍니다. (2.4 저항의 용도 참고)

이 예제에서는 풀업 저항을 사용합니다. 풀업 저항 사용시, 조도센서의 저항값에 따라 전압 분배가 일어나며, 빛의 양이 많을 수 록 (밝을 수록) 측정되는 전압의 크기는 작아집니다.

2. 릴레이(relay) : 여기를 클릭하세요.

3. 회로 연결

회로도를 참고하여 아두이노 보드에 다음과 같이 결선한다.

DC 모터는 극성을 반대로 하면 반대로 회전한다.

릴레이 출력측은 AC220V 전압까지 사용할 수 있으므로 이를 잘 활용하면 적은 입력전압으로 높은 전류를 필요로 하는 기기를 동작시킬 수 있다.

가지고 있는 센서가 몇개 안되서, 그중에 간단한 조도 센서를 테스트해봤다.

5V와 아날로그 INPUT 단자를 이용하면, 쉽게 값을 받을 수 있다.

코드는

#include<Arduino.h>

void setup() {

Serial.begin(115200);

}

void loop() {

int light = analogRead(A0);

Serial.println(light);

delay(500);

}

특별한 부분은 없고, analogRead 함수를 써서, 읽고자 하는 아날로그 포트를 지정해주면 된다.

노트북 빼고 연결 가능하게, 외부 전원 설치방법과, WIFI 연결, HTTP REST API 호출, LCD 출력등을 좀 더 테스트 해봐야겠다.

SERVO 모터를 이용해서, 조정하는 것도 해보고. 이걸 하면 로보트팔을 만들 수 있지 않을까?

저작자표시비영리

'프로그래밍 > 아두이노' 카테고리의 다른 글

ESP01 (ESP8266) 사용하기  (3) 2018.09.30
서보 모터 제어  (0) 2018.09.28
아두이노 무선 통신 모듈  (2) 2018.09.21
아두이노 기울기 센서와 소음 센서  (0) 2018.09.18
Hello 아두이노  (0) 2018.09.16