지난 포스트 LED 불 켜기에서 스위치로 LED 불을 켜고 끄는 것을 알아봤다. 이번 포스트에서는 GPIO를 이용해서 LED를 깜빡이는 방법을 알아보자.


  GPIO를 컨트롤 하는 가장 쉽고 편한 방법은 WiringPi 라이브러리를 사용하는 것이다. Git가 설치되어 있으면 WiringPi를 설치하기가 수월하다. Git이 설치되어 있지 않다면 'sudo apt-get install git-core'를 입력해서 설치한다. Git이 설치되어 있으면 'git clone git://git.drogon.net/wiringPi'를 입력해서 WiringPi를 다운 받는다. 다운 받은 디렉터리에 들어가서 './build'를 입력하면 설치 끝.

 

  제대로 설치되었는지 확인하기 위해서는 'gpio readall'을 입력한다. 아래 사진과 같은 화면이 나온다. 제일 왼쪽행(BCM)은 Broadcom의 BCM2835 칩에서 사용하는 핀번호, wPi는 WiringPi 라이브러리의 핀번호, Name은 GPIO의 이름, Mode는 핀이 입력모드인지 출력모드인지를 알려주고, V는 핀의 값으로 1은 전압이 High상태 0은 Low상태, 그리고 Physical은 라즈베리파이 핀헤더의 번호이다. 예를들어 밑줄 친 열을 보면 11번 헤더핀이 출력모드이고 값은 0인 것을 알 수 있다. 유튜브(http://www.youtube.com/watch?v=Wr49ia3oID4)에 올라온 실험에 따르면, 핀이 입력모드일 때 전압이 0-1.19v는 0, 1.34-3.3v는 1으로 인식된다고 한다.


  라즈베리파이의 GPIO 핀을 이용해서 전압을 넣으면 LED가 켜지고 전압을 없애면 LED가 꺼지는 것으로 매우 단순하다. LED 불 켜기에서와 같이 LED를 저항과 GND에 연결하고 3.3v 에 연결되어 있던 부분을 GPIO핀으로 연결해주면 세팅이 완료 된다. (예제를 그대로 사용하려면 NS-GPIO의 G17 이나 라즈베리파이의 11번째 핀에 연결해야한다.)


  아래 wiringpi.com에 올라와 있는 예제인 'blink.c'의 코드이다. 이것을 복사해서 라즈베리파이에 'blink.c'로 저장하고 'gcc -o blink blink.c -lwiringPi'를 입력해서 컴파일 하고 'sudo ./blink' 명령으로 실행하면 아래 동영상과 같이 LED가 깜빡이는 것을 확인 할 수 있다.

#include <wiringPi.h>
int main (void)
{
  wiringPiSetup () ;
  pinMode (0, OUTPUT) ;
  for (;;)
  {
    digitalWrite (0, HIGH) ;
	delay (500) ;
    digitalWrite (0,  LOW) ;
	delay (500) ;
  }
  return 0 ;
}




  다음 포스트에서는 'blink.c' 프로그램의 코드를 살펴보고, 수정해서 LED로 신호등을 만드는 것을 알아보자.


참조

WiringPi.com

블로그 이미지

작은 조약돌

공돌이 형과 글쟁이 동생 쌍둥이 형제의 낙서장

,

  LED는 전자회로에서 가장 기본적인 소자중에 하나이다. 사용하는 방법은 매우 간단하다. 아래 그림 같이 +극에 전원을 넣고 -극에 접지를 하면 불이 켜진다. +극과 -극을 알아보려면 기본적으로 긴다리가 + 짧은 다리가 - 극이다. 다리 길이로 +,- 극을 구별할 수 없을 경우에는 헤드에서 작은쪽이 + 큰 쪽이 - 극이다.

LED


  LED를 포함한 전자소자에 최대전압 이상의 전압이 걸리면 소자가 타버릴 수 있다. 예를들어 3.2V LED에 6V의 전압을 가하면 순간 많은 전류가 흐르면서 LED가 번쩍하고 타서 더이상 쓸 수 없게 된다. 이를 조절하기 위해서 적절한 저항을 달아주는 것이 필요하다. 이때 적절한 저항의 크기를 계산하는 법은 다음과 같다. 중고등학교 물리시간에 한번쯤은 들어봤을 법한 V=IR공식을 이용하여 R=V/I로 계산 하면 된다. 예를들어 동작전압이 1.8~2.4V 이고 동작전류가 20mA 그리고 소스전압이 3.3V 인 경우, V=3.3-2.4, I=20mA 를 식에 대입하면 R=45Ω이고,  V=3.3-1.8, I=20mA를 대입하면 R=75Ω이므로 45~75Ω사이의 저항을 사용하면 된다. 저항을 계산할 때 고려해야 하는 것이 와트인데 저항마다 견딜 수 있는 전력량이 다르기 때문이다. P=VI=I^2R 이라는 공식을 사용하면 되는데 위의 예를 보면 I=20mA, R=75Ω이므로 P=0.03W이다. 따라서 1/8W 이상되는 저항을 사용하면 문제 없겠다.


LED

블로그 이미지

작은 조약돌

공돌이 형과 글쟁이 동생 쌍둥이 형제의 낙서장

,