eensy
Very early alpha stage. Please just use it for hobby projects. Open to contributions.
gleam add eensy
import eensy.{get_system_platform}
import eensy/gpio
import eensy/otp/task
import gleam/erlang/process
import gleam/result.{try}
pub fn start() -> Nil {
case eensy.get_system_platform() {
eensy.Esp32 -> {
// Set pin mode to output
let _ = gpio.set_pin_mode(pin(), gpio.Output)
// Start blinking
let _blinky = process.start(fn() { loop(pin(), gpio.High) }, False)
Nil
}
_ -> Nil
}
process.sleep_forever()
}
fn pin() {
case get_system_platform() {
eensy.Esp32 | eensy.Pico -> 2
_ -> 0
}
}
fn loop(pin, level) {
use _ <- try(gpio.digital_write(pin, toggle(level)))
process.sleep(case level {
gpio.High -> 150
gpio.Low -> 300
})
loop(pin, toggle(level))
}
fn toggle(level) {
case level {
gpio.High -> gpio.Low
_ -> gpio.High
}
}
Further documentation can be found at https://hexdocs.pm/eensy.
Development
gleam run -m eensy_dev_tools pack # Run devtools
atomvm ./build/.atomvm/<project_name>.release.avm # Run the avm file in a unix atomvm instance
gleam test # Run the tests