3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kotlin/NativeでLチカ

Last updated at Posted at 2020-06-12

目的

Kotlin/NativeでHello Worldが実行できたので、次はRaspberryPiのGPIOを触ってみたいと思います。
前にも書いた通り、pigpioを使います。

手順

  1. pigpioをraspberrypiでビルド
    http://abyz.me.uk/rpi/pigpio/download.html

  2. stub作成
    macに、headerをコピーしてcinteropを実行

    cinterop -def pigpio.def -compiler-option -I`pwd`/PIGPIO -o pigpio.bc -target raspberrypi 
    
    total 336
    drwxr-xr-x  3 hoso  staff    96B  6 11 00:41 PIGPIO
    drwxr-xr-x  5 hoso  staff   160B  6 11 00:48 pigpio.bc-build
    -rw-------  1 hoso  staff   160K  6 11 00:48 pigpio.bc.klib
    -rw-r--r--  1 hoso  staff    20B  6 11 00:40 pigpio.def
    

    で、できたなー、と思ったけど、実はGradleにcinteropを記載すればよかった。
    https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#cinterop-support

        compilations.main {
            cinterops {
                pigpioInterop{
                    defFile project.file("src/nativeInterop/cinterop/pigpio.def")
                    compilerOpts '-Istub_prepare/PIGPIO'
                }
            }
        }
    
  3. linkの解消

    ビルド時にlinkができないので、raspberrypi上でビルドしてできた.soをmacに持ってきて、linkerオプション追加して、ビルド完了

               linkerOpts = ['-Llib', '-lpigpio']
    
  4. 成果物はこんなかんじです
    kotlinnative-led.gif

  5. リポジトリはこちら
    https://gitlab.com/hoso-study/raspberrypi/kotlinnative-led

  6. 今更ながら、
    pigpioって、sudoしないといけないの?
    https://github.com/fivdi/pigpio#limitations

  7. アプリがsudoしなきゃならないのはあれなので、pigpiodを動かして、アプリはそちらを利用するようにしたのを作った。
    https://gitlab.com/hoso-study/raspberrypi/kotlinnative-led/-/tree/topic/pigpiod

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?