packages feed

zephyr-copilot-1.0.0: Examples/Button/Demo.hs

{-# LANGUAGE RebindableSyntax #-}

module Examples.Button.Demo where

import Copilot.Zephyr.Board.Generic

main :: IO ()
main = zephyr $ do
	buttonpressed <- input' sw0 [False, False, False, True, True]
	led0 =: buttonpressed || blinking
	delay =: MilliSeconds (longer_and_longer * 2)

longer_and_longer :: Stream Word32
longer_and_longer = counter $ counter false `mod` 64 == 0

counter :: Stream Bool -> Stream Word32
counter reset = s
   where
	s = if reset then 0 else z + 1
	z = [0] ++ s