+implementation module Tasks.Examples
+
+import qualified Data.Map as DM
+import mTask
+
+import iTasks._Framework.Serialization
+
+derive class iTask UserLED, Main, ByteCode, Stmt, BC, BCState
+
+countAndLed :: Main (ByteCode () Stmt)
+countAndLed = sds \x=1 In sds \pinnetje=1 In {main =
+ IF (digitalRead D3) (
+ x =. x +. lit 1 :.
+ pub x
+ ) (
+ noOp
+ ) :.
+ IF (pinnetje ==. lit 1) (
+ ledOn LED1
+ ) (
+ IF (pinnetje ==. lit 2) (
+ ledOn LED2
+ ) (
+ ledOn LED3
+ )
+ )}
+
+blink :: UserLED -> Main (ByteCode () Stmt)
+blink led = sds \x=1 In {main =
+ IF (x ==. lit 1) (
+ ledOn led ) (
+ ledOff led ) :.
+ x =. lit 1 -. x :. noOp
+ }
+
+ledtOn :: UserLED -> Main (ByteCode () Stmt)
+ledtOn d = {main = ledOn d}
+
+ledtOff :: UserLED -> Main (ByteCode () Stmt)
+ledtOff d = {main = ledOff d}
+
+ledSelection :: Task UserLED
+ledSelection = enterInformation "Select LED" []
+
+allmTasks :: Map String (Task (Main (ByteCode () Stmt)))
+allmTasks = 'DM'.fromList [
+ ("countAndLed", treturn countAndLed),
+ ("ledOn", ledSelection @ ledtOn),
+ ("ledOff", ledSelection @ ledtOff),
+ ("blink", ledSelection @ blink)]