eensy

Very early alpha stage. Please just use it for hobby projects. Open to contributions.

Package Version Hex Docs

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
Search Document