Raspberry Pi GPIO Kontrolü

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()
}

Resim

sample

3 Beğeni