로봇을 위한 Go 프로그래밍, 한발 더 들어가기

 

Go 프로그래밍을 위한 Sublime 플러그인 설치

Go 프로그래밍 들이대기

Go 프로그래밍 라이브러리 만들기

로봇을 위한 Go 프레임워크 Gobot

 

 

Go Robot Framework, Gobot - GPIO Button

이제 한걸은 더 들어갑니다. 간단한 예제 이지만 Gobot 프레임워크를 이해하는데 도움이 될것입니다.

이번에는 가장 기초적이지만 중요한 버튼 콤포넌트를 사용해 보는 예제입니다.

 

위에있는 링크에서 필요한 파일들을 설치하고 준비를 합니다.

 

현재, 시스템에 Go 언어가 설치되어 있고 경로도 설정되어 있습니다.

지난번에 Gobot 에서 필요한 라이브러리와 예제 소스도 받았습니다.

 

저의 경우는 아래 경로에 예제 파일들이 다운로드 되어 있습니다.

~/Developments/Go/workspace/src/github.com/hybridgroup/gobot/examples

예제 디렉토리로 이동합니다.

Firmata 올리기 

DFRobot 의 비기너 키트의 보드에 firmata 를 올립니다.

지난번에 올린 상태라면 그 대로 사용하셔도 좋고 아니면 다시 올립니다.

decsers:~/Developments/Go/workspace/src/github.com/hybridgroup/gobot/examples (master) $ gort scan serial
/dev/cu.Bluetooth-Incoming-Port /dev/tty.Bluetooth-Incoming-Port
/dev/cu.Bluetooth-Modem /dev/tty.Bluetooth-Modem
/dev/cu.HojuniPhone-WirelessiAP /dev/tty.HojuniPhone-WirelessiAP
/dev/cu.JunoiPhone6-WirelessiAP /dev/tty.JunoiPhone6-WirelessiAP
/dev/cu.usbmodem1421 /dev/tty.usbmodem1421

위에서 처럼 일단 시리얼 포트를 확인합니다.

시리얼 포트의 이름은 사용하는 아두이노마다 약간씩 다를 수 있습니다.

위에서는 /dev/tty.usbmodem421 입니다.

 

이제 gort arduino upload firmata 명령으로  firmata를 올립니다.
decsers:~/Developments/Go/workspace/src/github.com/hybridgroup/gobot/examples (master) $ gort arduino upload firmata '/dev/tty.usbmodem1421'

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "/var/folders/rp/xxhqgy6134z_mhvsq_p7z95r0000gn/T/498069072"
avrdude: writing flash (11452 bytes):

Writing | ################################################## | 100% 1.84s

avrdude: 11452 bytes of flash written
avrdude: verifying flash memory against /var/folders/rp/xxhqgy6134z_mhvsq_p7z95r0000gn/T/498069072:
avrdude: load data flash data from input file /var/folders/rp/xxhqgy6134z_mhvsq_p7z95r0000gn/T/498069072:
avrdude: input file /var/folders/rp/xxhqgy6134z_mhvsq_p7z95r0000gn/T/498069072 contains 11452 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.47s

avrdude: verifying ...
avrdude: 11452 bytes of flash verified

이렇게 firmata 가 올려지면 준비는 끝났습니다.

 

 

 

 

소스의 시리얼 포트 수정하기

 

이제 예제 디록토리로 이동하여 에디터로 소스를 읽어옵니다.

sublime 을 사용하신다면 sublime . 을 입력하시면 됩니다.

포트를 찾아서 현재 포트로 수정해줍니다.

여기에서는 /dev/cu.usbmodem421 로 수정했습니다.

 

스크린샷 2015-07-06 오후 5.09.06

 

 

 

 

아두이노 구성하기 

 

이제 아두이노와 프로토타입 쉴드와 버튼과 저항을 준비합니다.

IMG_0038

구성은 버튼을 눌렀을때 13번 LED를 켜고 버튼이 놓으면 꺼지는 구조입니다.

따라서 버튼에 저항을 연결하고 저항을 그라운드에 연결합니다.

다른쪽은 5V 를 걸어줍니다.

 

그라운드에 연결된 반대쪽에서 신호를 체크합니다. 디지털 2번핀으로 연결합니다.

이제 2번 핀에서 버튼의 이벤트를 받을 수 있습니다.

 

버튼이 눌리면 Push 이벤트를, 놓으면 Release 이벤트를 받습니다.

 

work := func() {
gobot.On(button.Event("push"), func(data interface{}) {
led.On()
})
gobot.On(button.Event("release"), func(data interface{}) {
led.Off()
})
}

 

 

 

실행하기 
이제 아두이노의 파워를 뺐다가 다시 넣어줍니다.

그리고 예제 파일을 실행합니다.

go run firmata_button.go

스크린샷 2015-07-01 오전 11.23.11

이제 버튼을 누르면 13번 Led  켜지고 놓으면 꺼집니다.

동작영상 

 

 

 

 




관련상품 : DFRobot 비기너 키트 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005605397&catg_code=101141152