# Pi4K Pi4J Kotlin bindings.
Awesome Kotlin Badge mhashim6 by Pi4K

Demo

Make sure to check Examples.kt.

fun blink() = digitalOutput(GPIO_01) {
    while (true) {
        toggle()
        delay(500)
    }
}
  • Pulse:
    digitalOutput(GPIO_01).pulse(600)
    
  • Triggers:
    val input = digitalInput(GPIO_04)
    val output = digitalOutput(GPIO_05)
    input.trigger(output) //output is HIGH when input is HIGH.
    // input.trigger(output, whenState = PinState.LOW, targetState = PinState.HIGH) //output is HIGH when input is LOW.
    
  • Pulse triggers:
    val input = digitalInput(GPIO_04)
    val output = digitalOutput(GPIO_05)
    input.triggerPulse(output, PinState.HIGH, millis = 1000) //when input is HIGH, output is HIGH for 1 second
    
  • State change listeners:
    digitalInput(GPIO_06).onStateChange { event, edge, state -> println(state) }
    
  • PWM
    pwm(clockDivisor = 500, mode = PWM_MODE_MS, range = 1000)
    pwmOutput(GPIO_01, 400)
    
  • Software PWM
    softPwmOutput(GPIO_01, 400)
    
  • Analog counterparts are also available.

  • When done with gpio, housekeeping is necessary;
gpioShutdown()

Testing

Tests were simulated on my machine using the ` PI4J_PLATFORM=Simulated Environment variable. However, I was not able to mock/test AnalogPins` bindings. Contributions are always welcome.

Dependency

  • Gradle

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Add the dependency:

dependencies {
    implementation 'com.github.mhashim6:Pi4K:0.1'
}

  • Maven ```xml
jitpack.io https://jitpack.io
Add the dependency:
```xml
<dependency>
    <groupId>com.github.mhashim6</groupId>
    <artifactId>Pi4K</artifactId>
    <version>0.1</version>
</dependency>
compile "com.github.mhashim6:Pi4K:0.1"

Related Libraries

Pi4K

Pi4J Kotlin bindings for the Raspberry Pi.

Last updated 3 mins ago