-
Notifications
You must be signed in to change notification settings - Fork 0
/
ledblink.tnsl
70 lines (65 loc) · 1.87 KB
/
ledblink.tnsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*--
*-- blinks a dual LED (or two leds) Red and Geeen when a button is pressed
*-- blink sequence:
*-- red 1 sec
*-- green 300 msec
*-- green 300 msec
*-- red 1 sec
*/
program blinkled
var IN:int = 0,
OUT:int = 1,
BUTTON:int = 2,
RED:int = 3,
GREEN:int = 4,
OFF:int = 0,
ON:int = 1
var UNIT_SEC: int = 2,
UNIT_MILLISEC: int = 1
fun gpio_init() @external:int
fun gpio_get_pin_mode(pin: int) @external:int
fun gpio_get_pin(pin: int) @external:int
fun gpio_set_pin_mode(pin: int, node :int) @external:int
fun gpio_set_pin(pin: int, value: int) @external:int
fun timeout(duration: int, unit: int) @external:void
main {
println "LED blink program using 1 button and 2 LEDs via GPIO pins 2, 3 and 4\n"
println "GPIO pin status"
if (gpio_init() < 0) {
println "could not initialise GPIO - exiting"
exit
}
gpio_set_pin_mode(RED, OUT)
gpio_set_pin_mode(GREEN, OUT)
gpio_set_pin_mode(BUTTON, IN)
gpio_set_pin(RED, OFF)
gpio_set_pin(GREEN, OFF)
for (i = 2 to 4) {
println "gpio pin mode ", i, ": ", gpio_get_pin_mode(i)
}
for (i = 3 to 4) {
println "gpio pin value ", i, ": ", gpio_get_pin(i)
}
println "\nStart of loop"
while (1) {
if (gpio_get_pin(BUTTON) == 0) {
println "blink LED"
gpio_set_pin(RED, ON)
timeout(1, UNIT_SEC) // 1 sec timeout
gpio_set_pin(RED, OFF)
timeout(200, UNIT_MILLISEC)
gpio_set_pin(GREEN, ON)
timeout(500, UNIT_MILLISEC)
gpio_set_pin(GREEN, OFF)
timeout(200, UNIT_MILLISEC)
gpio_set_pin(GREEN, ON)
timeout(500, UNIT_MILLISEC)
gpio_set_pin(GREEN, OFF)
timeout(200, UNIT_MILLISEC)
gpio_set_pin(RED, ON)
timeout(1, UNIT_SEC)
gpio_set_pin(RED, OFF)
}
}
}
endprogram