94042747b4c57a608de6529d008369aca71315bd
[mTask.git] / Tasks / Examples.icl
1 implementation module Tasks.Examples
2
3 import qualified Data.Map as DM
4 import mTask
5
6 import Devices.mTaskDevice
7 import iTasks._Framework.Serialization
8
9 countAndLed :: Main (ByteCode () Stmt)
10 countAndLed = sds \x=1 In sds \pinnetje=1 In {main =
11 IF (digitalRead D3) (
12 x =. x +. lit 1 :.
13 pub x
14 ) (
15 noOp
16 ) :.
17 IF (pinnetje ==. lit 1) (
18 ledOn (lit LED1)
19 ) (
20 IF (pinnetje ==. lit 2) (
21 ledOn (lit LED2)
22 ) (
23 ledOn (lit LED3)
24 )
25 )}
26
27 blinkShare :: Main (ByteCode () Stmt)
28 blinkShare = sds \x=1 In sds \led=LED1 In {main =
29 IF (x ==. lit 1) (
30 ledOn led ) (
31 ledOff led ) :.
32 x =. lit 1 -. x :. noOp
33 }
34
35 blink :: UserLED -> Main (ByteCode () Stmt)
36 blink l = sds \x=1 In {main =
37 IF (x ==. lit 1) (
38 ledOn (lit l) ) (
39 ledOff (lit l) ) :.
40 x =. lit 1 -. x :. noOp
41 }
42
43 ledtOn :: UserLED -> Main (ByteCode () Stmt)
44 ledtOn d = {main = ledOn (lit d) :. noOp}
45
46 ledtOff :: UserLED -> Main (ByteCode () Stmt)
47 ledtOff d = {main = ledOff (lit d) :. noOp}
48
49 readDPin :: DigitalPin -> Main (ByteCode () Stmt)
50 readDPin d = sds \pin=False In {main=pin =. digitalRead d :. noOp}
51
52 ledSelection :: Task UserLED
53 ledSelection = enterInformation "Select LED" []
54
55 pinSelection :: Task DigitalPin
56 pinSelection = enterInformation "Select digital pin" []
57
58 allmTasks :: Map String (Task (Main (ByteCode () Stmt)))
59 allmTasks = 'DM'.fromList
60 [("countAndLed", treturn countAndLed)
61 ,("ledOn", ledSelection @ ledtOn)
62 ,("ledOff", ledSelection @ ledtOff)
63 ,("readDPin", pinSelection @ readDPin)
64 ,("blink", ledSelection @ blink)
65 ,("blinkShare", treturn blinkShare)
66 ]