nRF51822 GPIO 제어하기

nRF51822 GPIO 제어하기

nRF51822 GPIO 코드 예제입니다.

 

목차

nRF51822

  1. nRF51822 (BLE400) 개발환경 세팅하기

  2. nRF51822 (BLE400) 개발환경 세팅하기2

  3. nRF51822 GPIO 제어하기 (현재 포스팅)

 

 

OUTPUT 함수 살펴보기

 STM 쓰다 이거 보려니 메뉴얼도 영 허술하고 개같더라. 그래도 어쩌겠나. 검색하고 코드를 작성해봐야지.

 

BLE 400 보드는  18번 핀부터 22번 핀까지 LED가 연결되어 있다. 그러니까 5개의 LED가 있는 셈이다. 근데 기존 코드를 돌려보면 2개의 핀밖에 안켜지니 얼마나 얼빠지는 일이란 말인가.

 

그렇다고 잠깐잠깐 라이브러리 수정해서 하는 것은 내 자존심이 허락하질 않으니 하나하나 세팅해 보고자 한다.

 

기존 예제처럼 깜박 거리는 것만 해볼까.

 

먼저 라이브러리 함수부터 뒤져보자

 

nrf_gpio_cfg_output

위 함수를 보면 핀을 Output으로 설정해주는 함수이다. 기초 설정에 들어가는 함수라고 보면 될 듯 하다. 만약에 설정을 하지 않는다면, 아무리 출력을 하라하던 말던 동작하지 않으니 설정을 해두는 편이 좋다. 근데 보니까 이걸 하나하나 설정하자니 코드가 길어져 안이쁜거다. nRF에는 이런 내 생각을 읽은 사람이 있었나보다. 범위를 지정해서 한꺼번에 지정하는 것이 가능하다. 오오..

 

nrf_gpio_range_cfg_output

오.. 영롱하도다. 이전 포스팅에서 다룬 것처럼 핀은 30개까지만 가능한가 보다.  입력 인자로 두 개를 받고 있는데 입력을 시작할 핀과 받을 핀 두 가지를 지정해 주면 된다.

 

초기 설정해 줄 핀을 설정했으면 이제 출력을 해줘야지. 예제에서는 계속 On Off를 반복하므로 토클만큼 적합한 함수가 없다.

 

nrf_gpio_pin_toggle

위 함수를 봐도 입력인자는 참 간단하다.

범위를 지정해 줄 수 있는 함수는 아니지만 기존 예제도 보면 뭐 하나하나 켜지고 하나하나 꺼지고 하는 식이라 범위 지정해주는 함수를 썻다면 구현할 수 없었을 거다.

 

Blink 예제 코드로 구현하기

그래서 코드로 구현하면 위처럼 나온다. 처음 18번 핀부터 22번 핀까지 출력 핀으로 사용할 것임을 지정해 준 뒤에 toggle을 해주면된다.  난 5개의 LED를 제어할 것이므로 for문을 5번을 돌렸다.

 

Git-Hub에도 코드를 공유해 놓았으니 필요한 사람은 참고하길 바란다.

구동 영상은 아래에 첨부해 두었다.

 

 

 

 

INPUT 함수 살펴보기

nrf_gpio_range_cfg_input

read로 지정할 핀은 KEY1, KEY2 인데, 각각 16 17번핀에 연결되어 있다.

Output 설정하는 함수랑 똑같다. 다만 입력해야하는 변수가 하나 더 추가되어 있는데 이것은 풀업으로 설정하면 된다.

자세한 것은 아래에 서술하겠다.

 

nrf_gpio_pin_pull_t

위의 enum을 가서 보면 세 가지가 입력되어 있는데 풀업을 사용할 것이므로, NRF_GPIO_PIN_PULLUP 을 입력하면 된다.

 

nrf_gpio_pin_write

토글은 ON이던 OFF이던 상관 없이 바뀌기만 하는 것을 원할 때 사용하는 것이다.

지금 On이 되었다가 Off가 되게 하려면 위 함수를 사용해 지정해 주어야한다.

 

nrf_gpio_pin_read

각 Key 핀의 데이터가 High인지 Low인지 보고 싶을 때 사용하는 핀이다.

기본이 High였다가 Low로 되었을 때를 보고 싶은 것이므로 앞에 !를 붙여줄 필요가 있다.

 

Button Read 함수 살펴보기

풀링 방식으로 구현하다보니 불이 켜지는 순간에는 버튼이 먹지 않지만, 그래도 Read가 되는 것을 확인하기에는 부족함이 없다.

1초동안 꺼지는 예제인데 어느 버튼을 누르냐에 따라 버튼이 켜지는 것이 다르다.

 

이것도 깃허브에 코드를 공유해 두었다.

 

구동 영상은 아래에 있다.

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d 블로거가 이것을 좋아합니다: