Raspberry Pi GPIO Kontrolü - Golang | Ar-Ge Kulübü

b0mb

Katılımcı Üye
14 Mar 2017
471
1
İzmir
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.
Gist: https://gist.github.com/laszlokuehl/fe2e17a0f169b89bec679b405baa17b9
Kod:
/*
*
* Usage:
*  ./blink BCM_PIN LOOP_COUNT
*  ./blink 17 15
*
*  Author: Laszlo Kuehl
*  Mail: [email protected]
*
*/

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:
D7RboZ.png
 

k3~

Özel Üye
5 Eki 2015
2,980
21
Eline sağlık, RPI ile elektronik proje yapmak isteyenler için yardımı olacaktır.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.