Skip to main content

Threading the Arduino with Haskell

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 10447))

Abstract

Programming embedded microcontrollers often requires the scheduling of independent threads of execution, specifying the interaction and sequencing of actions in the multiple threads. Developing and debugging such multi-threaded systems can be especially challenging in highly resource constrained systems such as the Arduino line of microcontroller boards. The Haskino library, developed at the University of Kansas, allows programmers to develop code for Arduino-based microcontrollers using monadic Haskell program fragments. This paper describes our efforts to extend the Haskino library to translate monadic Haskell code to multi-threaded code executing on Arduino boards.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

References

  1. Grebe, M., Gill, A.: Haskino: a remote monad for programming the Arduino. In: Gavanelli, M., Reppy, J. (eds.) PADL 2016. LNCS, vol. 9585, pp. 153–168. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-28228-2_10

    Chapter  Google Scholar 

  2. Erkok, L.: Hackage package hArduino-0.9 (2014)

    Google Scholar 

  3. Steiner, H.C.: Firmata: towards making microcontrollers act like extensions of the computer. In: New Interfaces for Musical Expression, pp. 125–130 (2009)

    Google Scholar 

  4. Gill, A., et al.: The remote monad design pattern. In: Proceedings of the 8th ACM SIGPLAN Symposium on Haskell, pp. 59–70. ACM (2015)

    Google Scholar 

  5. Gill, A., Dawson, J.: Hackage package remote-monad-0.2 (2016)

    Google Scholar 

  6. Elliott, C.: Hackage package boolean-0.2.3 (2013)

    Google Scholar 

  7. Koopman, P., Plasmeijer, R.: A shallow embedded type safe extendable DSL for the Arduino. In: Serrano, M., Hage, J. (eds.) TFP 2015. LNCS, vol. 9547, pp. 104–123. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-39110-6_6

    Chapter  Google Scholar 

  8. Hickey, P.C., Pike, L., Elliott, T., Bielman, J., Launchbury, J.: Building embedded systems with embedded DSLs. In: Proceedings of the 19th ACM SIGPLAN International Conference on Functional Programming, pp. 3–9. ACM (2014)

    Google Scholar 

  9. Elliott, T., et al.: Guilt free ivory. In: Proceedings of the 8th ACM SIGPLAN Symposium on Haskell, pp. 189–200. ACM (2015)

    Google Scholar 

  10. Lindberg, R.: Hackage package frp-arduino-0.1.0.3 (2015)

    Google Scholar 

  11. Farmer, A., Sculthorpe, N., Gill, A.: Reasoning with the HERMIT: tool support for equational reasoning on GHC core programs. In: Proceedings of the 8th ACM SIGPLAN Symposium on Haskell, pp. 23–34. ACM (2015)

    Google Scholar 

Download references

Acknowledgment

This material is based upon work supported by the National Science Foundation under Grant No. 1350901.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Mark Grebe .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Grebe, M., Gill, A. (2019). Threading the Arduino with Haskell. In: Van Horn, D., Hughes, J. (eds) Trends in Functional Programming. TFP 2016. Lecture Notes in Computer Science(), vol 10447. Springer, Cham. https://doi.org/10.1007/978-3-030-14805-8_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-14805-8_8

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-14804-1

  • Online ISBN: 978-3-030-14805-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics