본문 바로가기
앱스킷(APPSKIT) 강좌

[앱스킷](LED-ON V1) I2C LED 모듈 사용방법 알아보기

by 오마이엔지니어 2018. 11. 28.
반응형


[LED-ON V1 노드모듈-I2C LED 모듈]

 

 

아두이노의 디지털 I/O 핀을 사용하지 않고 여러 개의 LED 출력을 할 수 없을까?

 

이런 문제에서 출발해서 I2C 통신을 통해 8개의 LED 출력을 할수 있는 LED-ON V1 노드모듈을 출시했습니다.

 

 

LED-ON V1 노드모듈은 한 개의 U-HUB V1 허브모듈을 장착할 수 있는 슬롯과, 8개의 LED 그리고 1개의 푸시버튼 스위치가 내장되어 있습니다.

 

또한 2개의 2.54mm, 1X12로 배열된 헤더핀은 U-HUB V1 허브모듈을 장착하면 전원, 아날로그, 디지털 I/O가 연결됩니다.

 

이제 LED-ON V1 노드모듈에 대해 알아보겠습니다.

 

먼저 각 부 명칭을 알아보겠습니다.

[LED-ON V1 각 부 명칭]

 

노드모듈을 정면으로 보았을 때, 크게 왼쪽으로 U-HUB V1 허브모듈을 장착할 수 있는 커넥터와 오른쪽으로 8개의 LED가 원형으로 배치되어 있으며, 중간에 1개의 푸시버튼 스위치가 있습니다.

(부착된 LED는 주황색 고휘도 LED로 8개를 모두 켰을 때, 어두운 방에서 조명등(무드등)으로 쓸 만큼 밝은 것 같습니다. LED가 켜진 상태에서 계속 바라보지 않는 것이 좋습니다.)

 

U-HUB V1 모듈 착/탈커넥터에는 U-HUB V1 허브모듈이 장착되는 공간입니다.

 [U-HUB V1과 LED-ON V1 결합 전 사진]

 

U-HUB V1 허브모듈과 LED-ON V1 노드모듈을 결합해 보았습니다. 

 [U-HUB V1과 LED-ON V1 결합 후 사진]

 

 

U-HUB V1 모듈 착/탈커넥터 사이로 배터리 연결단자와 칩저항으로 연결할 수 있는 패드가 있습니다.

[리튬이온 배터리 연결단자, LED-ON V1 I2C 주소 설정  저항] 

 

가장 왼쪽에는 리튬이온 배터리 연결단자가 있습니다.

이 기능은 U-HUB V1 허브모듈이 반드시 장착되어야 사용할 수 있는 기능입니다. U-HUB V1 허브모듈에는 리튬이온 배터리 충전기능이 내장되어 있어 이 기능을 이용하는 것입니다.

(U-HUB V1은 3.7[V] 리튬이온 배터리를 지원하며 충전전류는 50[mA]로 제한되어 있습니다.)

 

리튬-이온 전지는 직접 연결하는 것 보다 on/OFF 스위치를 통해 연결하는 것이 좋습니다.

 

가운데에는 I2C 주소는 총 8개 설정이 가능하며, 제품 출고 시 A2가 HIGH로 설정되어 있습니다.

(주소 설정 저항은 2012 사이즈 10K를 사용하며, 연결하지 않으면 LOW로 설정됩니다.)

 

아두이노의 Wire.h 라이브러리를 사용할 경우, Hex 값은 "0x24" 또는 Binary 값은 "0b00100100"로 주소를 지정하여 사용합니다.

(바이너리 기준으로 하위 3비트가 주소 지정 비트 설정값입니다.)

 

 

보드 기준 중앙 하단에 1개의 푸시버튼 스위치와 오른쪽에 8개의 LED 그리고 1x12 헤더핀이 배치되어 있습니다.

[상태표시 LED, 푸시버튼 스위치, U-HUB V1 허브모듈 I/Os]

 

푸시버튼 스위치는 U-HUB V1 허브모듈의 디지털 13번 핀이 연결되어 있습니다.

 

8개의 LED가 LED0~LED7로 원형 배열로 배치되어 있습니다.

(LED-ON V1 노드모듈의 전원이 공급되면 모든 LED가 켜집니다.)

 

2개의 1x12 헤더핀은 2.54mm 간격으로 전원과 아날로그 입력(A0~A5), 디지털 입/출력(0~13)으로 구성되어 있으며, 임베디드 시스템이나 NODE-STAND V1 확장 스탠드와 체결해서 사용합니다.

 

참고로 I2C 핀으로 A4(SDA)와 A5(SCL) 핀을 사용하므로 아날로그 입력으로는 사용할 수 없습니다.

 

아래 사진은 U-HUB V1 허브모듈을 LED-ON V1 노드모듈에 장착하고 microUSB 케이블을 통해 전원을 공급한 사진입니다.

(U-HUB V1 허브모듈에는 스케치를 업로드 하기 전으로 전원을 공급하면 모든 LED가 켜집니다.)

[U-HUB V1 허브모듈을 LED-ON V1 노드모듈 장착 후 전원공급 사진]

 

 

아래 사진은 LED-ON V1 노드모듈을 NODE-ON V1 확장-스탠드에 장착한 사진입니다.

 [LED-ON V1과 NODE-STAND V1 결합 사진]

 

 

본 설명에서는 위 사진 처럼 U-HUB V1과 PWR-ON V1을 결합하여 NODE-STAND V1에 장착하고, LED-ON V1을 NODE-STAND V1에 장착해서 동작시켜 보겠습니다.

(U-HUB V1과 LED-ON V1 두 보드만 연결해서도 사용할 수 있습니다.)

 

 

아래 동영상 동작은 원형 배열의 LED를 LED0부터 LED7까지 시프트 시키는 동작 예시입니다.

 

푸시버튼 스위치가 눌렸을 경우 LED가 멈추고 떼면 다시 그 위치에서 시프트됩니다. 마치 회전하는 것처럼 표시됩니다.

 

참고로 U-HUB V1 허브모듈은 아두이노 개발환경의 보드매니저에서 "Arduino PRO or PRO Mini"를 선택하고 스케치를 업로드하면 됩니다.

 

다음은 기본 예제 동작 영상입니다. U-HUB V1 허브모듈에 장착되어 있는 상태표시 LED도 13번 핀에 연결되어 있어 스위치가 눌렸을 때 같이 켜지거나 꺼집니다.

[LED-ON V1 동작 설명 동영상] 

 

 

다음은 상기 동작에 대한 예제 스케치입니다.

example code.txt

/*                                                                                                                             
#include <Wire.h>                           
 
#define LED_ADDR 0x24
//#define PUSH_ADDR 0b00100100
 
bool nReadPushBtn = 0;
int nCnt = 0;
 
void WriteLED(byte bAddr, byte bData)
{
  Wire.beginTransmission(bAddr);
  Wire.write(bData);
  Wire.endTransmission();
}
 
void setup()
{
  pinMode(13, INPUT);
  Wire.begin();
}
 
void loop()
{
  nReadPushBtn = digitalRead(13);
 
  if(nReadPushBtn == LOW)
  {
    switch(nCnt)
    {
      case 0:
        WriteLED(LED_ADDR, 0b00000001);
      break;
      case 1:
        WriteLED(LED_ADDR, 0b00000010);
      break;
      case 2:
        WriteLED(LED_ADDR, 0b00000100);
      break;
      case 3:
        WriteLED(LED_ADDR, 0b00001000);
      break;
      case 4:
        WriteLED(LED_ADDR, 0b00010000);
      break;
      case 5:
        WriteLED(LED_ADDR, 0b00100000);
      break;
      case 6:
        WriteLED(LED_ADDR, 0b01000000);
      break;
      case 7:
        WriteLED(LED_ADDR, 0b10000000);
      break;
    }
    nCnt++;
    if(nCnt == 8) nCnt = 0;
    delay(100);
  }
}


LED-ON V1 노드모듈을 통해 푸시버튼 디지털 입력, I2C 통신, LED 디지털 출력에 대한 이해에 도움이 되었으면 합니다.

 

이상으로 블로그를 마치겠습니다.

 

감사합니다.


앱스킷 구매처
앱스킷 공식 홈페이지

example code.txt
0.0MB
반응형

댓글