프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

(4) 전도성펜 x 오렌지보드-런던시티-조도센서 활용

2018-12-27 15:23:52

런던시티 키트는 '소프트웨어 코딩 + 오렌지보드 활용 + 전도성펜 회로이해'의 삼박자를 모두 갖춘 키트로

소프트웨어 코딩교육(엔트리, 스크래치, 스케치 등)을 초급부터 고급까지 단계별로 실습해 볼 수 있으며,

오렌지보드로 실습결과를 직접 확인할 수 있습니다.

 

 

뿐만 아니라, 더 많은 종류의 부품과 모듈을 이용해서 다양한 결과물을 만들어 볼 수 있습니다. 

그래서 저희는 런던시티 응용하기 가이드도 준비했습니다!!

응용하기 첫 번째 단계에서는 조도센서를 이용하여 어두워 지면 불 켜지는 런던시티를 만들어 보도록 하겠습니다.

조도센서에 대한 이론적인 설명은 다음 링크를 참고해 주시길 바랍니다! (http://kocoafab.cc/tutorial/view/551​)

 

 

 

 

 

 

준비물

 

※ 부품 목록은 기본적인 가이드를 위해 작성된 것으로 자유롭게 사용하고 싶은 부품을 이용하여 만들어 주시면 됩니다.

반드시 아래의 목록에 있는 부품들만 이용해야 되는 것은 아니니 참고만 해 주시길 바랍니다!

 

No 부품명 수량 상세 설명
1 오렌지 보드 1  
2 브레드 보드 2  
3 점퍼케이블 10  
4 점퍼케이블(링 작업/둥근 발이 달림) 8  
5 DC모터 1  
6 트랜지스터(npn형-KSP2222A) 1  
7 저항(330Ω) 1  
8 다이오드 1  
9 조도센서(빛감지센서/cds센서) 1  
10 저항(10kΩ) 1  

 

부품명 오렌지보드 브레드보드 점퍼케이블 점퍼케이블(링 작업) DC모터
파트
트랜지스터 저항(330Ω) 다이오드 조도센서 저항(10kΩ)

 

 

 

하드웨어 making

 

부품 + 전도성펜 + 오렌지보드를 연결하여 하드웨어를 먼저 만들어 보도록 해보겠습니다.

아래의 이미지에서 회색으로 되어 있는 부분은 전도성펜으로 연결한 부분이니 잘 확인해서 연결해 주세요!

전도성펜으로 연결한 부품과 오렌지보드를 연결 하실 때에는 링 작업 된 점퍼 케이블을 이용하여 연결해 주시면 됩니다^_^

 

 

 

 

소프트웨어 coding

 

하드웨어 연결이 다 되었으니 엔트리와 스케치 프로그램을 이용해 소프트웨어 코딩을 해보도록 하겠습니다.

 

 

[엔트리 프로그램]

 

엔트리 프로그램과 오렌지보드의 자세한 연결 방법은 아래 링크의 튜토리얼을 참고해 주세요^_^

(엔트리-오렌지보드 연결 튜토리얼 : http://kocoafab.cc/tutorial/view/536)

 

 

coding 1

 

조도센서를 이용해서 LED와 모터를 제어해 보기 전에 빛의 양에 따라 조도센서의 값이 어떻게 달라지는지 확인해 보도록 하겠습니다.

아래와 같이 엔트리 프로그램을 구성해 주시면, 엔트리봇에서 빛의 양에 따라 달라지는 조도센서의 값을 확인 하실 수 있습니다.

 

 

 

 

 

 

coding 2

 

아래의 코드를 작성하고 시작하기 버튼을 누르면, 아날로그 0번 핀에 연결된 조도센서 값이 400보다 커지면(어두워지면)

디지털 3번, 6번, 9번, 12번에 연결된 LED가 켜지고 디지털 11번 핀에 연결된 모터가 구동 됩니다.

다시 조도센서의 값이 400보다 작아지면(밝아지면), 디지털 3번, 6번, 9번, 12번에 연결된 LED가 꺼지고 디지털 11번 핀에 연결된 모터가 구동을 멈추게 됩니다.

 

 

 

[스케치 프로그램]

 

/*
   제목 : 조도센서 이용하여 LED 와 DC모터 제어하기
   내용 : 오렌지보드에 연결된 LED와 DC모터를 조도센서를 이용해 제어해 봅니다.
*/
int motor = 11; //DC모터를 11번 핀으로 설정합니다.
int LED_1 = 3; //LED_1를 3번 핀으로 설정합니다.
int LED_2 = 6; //LED_2를 6번 핀으로 설정합니다.
int LED_3 = 9; //LED_3를 9번 핀으로 설정합니다.
int LED_4 = 12; //LED_4를 12번 핀으로 설정합니다.
int cds = A0; // 조도센서를 아날로그 A0번 핀으로 설정합니다.

void setup() {
  Serial.begin(9600); // 조도센서 동작 상태 확인을 위해 시리얼 통신을 설정합니다.(전송속도 : 9600bps)
  pinMode(LED_1, OUTPUT); // 디지털 3번 핀에 연결된 LED_1를 OUTPUT 으로 설정합니다.
  pinMode(LED_2, OUTPUT); // 디지털 6번 핀에 연결된 LED_2를 OUTPUT 으로 설정합니다.
  pinMode(LED_3, OUTPUT); // 디지털 9번 핀에 연결된 LED_3를 OUTPUT 으로 설정합니다.
  pinMode(LED_4, OUTPUT); // 디지털 12번 핀에 연결된 LED_4를 OUTPUT 으로 설정합니다.
  pinMode(motor, OUTPUT); // 디지털 11번 핀에 연결된 motor를 OUTPUT 으로 설정합니다.
}

void loop() {
  int cdsValue = analogRead(cds); // 조도센서로 입력되는 전압의 크기(0~5V)에 따라 0~1023 범위의 값으로 변환되어 반환합니다.
  Serial.print("cds = "); // 측정된 조도센서 값을 "cds = " 형태로 시리얼 모니터에 출력합니다.
  Serial.println(cdsValue); // 측정된 조도센서 값을 읽어 옵니다.

  if (cdsValue > 400) // 조도센서에 측정된 밝기 값이 400보다 크면, 아래의 블록을 실행합니다.
  {
    digitalWrite(LED_1, HIGH); // LED가 연결된 핀의 로직레벨을 HIGH(5V)로 설정하여, LED가 켜지도록 합니다.
    digitalWrite(LED_2, HIGH);
    digitalWrite(LED_3, HIGH);
    digitalWrite(LED_4, HIGH);
    analogWrite(motor, 255); // DC모터의 회전속도를 0~255 범위의 값으로 제어 합니다.
    Serial.println("LED & MOTOR ON (cds > 400)"); 
  }
  else // 조도센서에 측정된 밝기 값이 400보다 작으면, 아래의 블록을 실행합니다.
  {
    digitalWrite(LED_1, LOW); // LED가 연결된 핀의 로직레벨을 LOW(0V)로 설정하여, LED가 꺼지도록 합니다.
    digitalWrite(LED_2, LOW);
    digitalWrite(LED_3, LOW);
    digitalWrite(LED_4, LOW);
    analogWrite(motor, 0); //DC모터의 duty-cycle을 0%로 설정하여 DC모터를 멈추게 합니다.
    Serial.println("LED & MOTOR OFF (cds < 400)");
  }
  delay(1000); // 1초 간격으로 조도센서 값을 읽어오며, 시리얼 모니터에 출력합니다.
}

 

 

 

 

작동 영상

 

어두워지면 불이 밝혀지는 나만의 런던시티를 영상으로 살펴볼까요?

 

 

 

 

 

kocoafab

전도성펜, 런던시티 키트, 아두이노, 오렌지보드