Merhabalar,
Go-rpio, Raspberry Pi üzerinde bulunan GPIO (Genel amaçlı giriş çıkış) pinlerini kontrol etmenizi sağlayan bir Golang kütüphanesidir. Herhangi ek bir C kütüphanesine gerek duymaz.(WiringPi ya da bcm2835).
GitHub: https://github.com/stianeikeland/go-rpio
Yazarın blog yazısı: https://blog.eikeland.se/2013/07/30/go-gpio-library-for-raspberry-pi/
Örnek Uygulama
Led yakıp söndürmek için yazdığım basit bir uygulama aşağıda bulunuyor.
/*
*
* Usage:
* ./blink BCM_PIN LOOP_COUNT
* ./blink 17 15
*
* Author: Laszlo Kuehl
* Mail: laszlokuehl@yandex.com
*
*/
package main
import (
"os"
//"fmt"
"log"
"time"
"strconv"
"github.com/stianeikeland/go-rpio"
)
//const RED_LED_BCM = 17
//var red_led = rpio.Pin(RED_LED_BCM)
func ParseArgs() (int, int) {
var val1, val2 int64
if len(os.Args[1:]) == 2 {
if val, err := strconv.ParseInt(os.Args[1], 10, 0); err == nil {
val1 = val
}
if val, err := strconv.ParseInt(os.Args[2], 10, 0); err == nil {
val2 = val
}
}
return int(val1), int(val2)
}
func main() {
log.Printf("Program Started!")
pin_bcm, blink_c := ParseArgs()
var red_led = rpio.Pin(pin_bcm)
if err := rpio.Open(); err != nil {
log.Fatal(err)
}
//defer rpio.Close()
red_led.Output()
for i := 1; i < (blink_c + 1); i++ {
red_led.High()
time.Sleep(time.Second / 40)
red_led.Low()
time.Sleep(time.Second / 40)
log.Printf("[%d] Blink! :)", i)
}
rpio.Close()
}