Skip to content

Commit b6a7325

Browse files
committed
mod: impr demo and touch_move example
1 parent a508f3d commit b6a7325

File tree

2 files changed

+86
-43
lines changed

2 files changed

+86
-43
lines changed

examples/demo/demo.py

Lines changed: 83 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,101 @@
11
from arduino_alvik import ArduinoAlvik
22
from time import sleep_ms
33

4-
from line_follower import run_line_follower
5-
from touch_move import run_touch_move
6-
from hand_follower import run_hand_follower
74

5+
def blink(alvik):
6+
alvik.left_led.set_color(1, 0, 1)
7+
alvik.right_led.set_color(1, 0, 1)
8+
sleep_ms(200)
9+
alvik.left_led.set_color(1, 0, 0)
10+
alvik.right_led.set_color(1, 0, 0)
811

9-
alvik = ArduinoAlvik()
10-
alvik.begin()
1112

12-
menu_status = 0
13+
def add_movement(alvik, movements):
14+
if alvik.get_touch_up():
15+
movements.append('forward')
16+
blink(alvik)
17+
while alvik.get_touch_up():
18+
sleep_ms(100)
19+
if alvik.get_touch_down():
20+
movements.append('backward')
21+
blink(alvik)
22+
while alvik.get_touch_down():
23+
sleep_ms(100)
24+
if alvik.get_touch_left():
25+
movements.append('left')
26+
blink(alvik)
27+
while alvik.get_touch_left():
28+
sleep_ms(100)
29+
if alvik.get_touch_right():
30+
movements.append('right')
31+
blink(alvik)
32+
while alvik.get_touch_right():
33+
sleep_ms(100)
34+
if alvik.get_touch_cancel():
35+
movements = []
36+
for i in range(0, 3):
37+
val = i % 2
38+
alvik.left_led.set_color(val, 0, 0)
39+
alvik.right_led.set_color(val, 0, 0)
40+
sleep_ms(200)
41+
while alvik.get_touch_cancel():
42+
sleep_ms(100)
1343

1444

15-
def update_led_status(val):
16-
if val == 0:
17-
alvik.left_led.set_color(0, 0, 1)
18-
alvik.right_led.set_color(0, 0, 1)
19-
elif val == 1:
20-
alvik.left_led.set_color(0, 1, 0)
21-
alvik.right_led.set_color(0, 1, 0)
22-
elif val == -1:
45+
def run_movement(alvik, movement):
46+
if movement == 'forward':
47+
alvik.move(10, blocking=False)
48+
if movement == 'backward':
49+
alvik.move(-10, blocking=False)
50+
if movement == 'left':
51+
alvik.rotate(90, blocking=False)
52+
if movement == 'right':
53+
alvik.rotate(-90, blocking=False)
54+
while not alvik.get_touch_cancel() and not alvik.is_target_reached():
2355
alvik.left_led.set_color(1, 0, 0)
2456
alvik.right_led.set_color(1, 0, 0)
57+
sleep_ms(100)
58+
alvik.left_led.set_color(0, 0, 0)
59+
alvik.right_led.set_color(0, 0, 0)
60+
sleep_ms(100)
2561

2662

27-
while True:
63+
def run_touch_move(alvik) -> int:
64+
movements = []
65+
while not (alvik.get_touch_ok() and len(movements) != 0):
66+
if alvik.get_touch_cancel():
67+
movements.clear()
68+
blink(alvik)
69+
return -1
70+
alvik.left_led.set_color(1, 0, 0)
71+
alvik.right_led.set_color(1, 0, 0)
72+
alvik.brake()
73+
add_movement(alvik, movements)
74+
sleep_ms(100)
2875

29-
update_led_status(menu_status)
76+
alvik.left_led.set_color(0, 0, 0)
77+
alvik.right_led.set_color(0, 0, 0)
78+
for move in movements:
79+
run_movement(alvik, move)
80+
if alvik.get_touch_cancel():
81+
blink(alvik)
82+
return -1
83+
return 1
3084

31-
try:
3285

33-
if alvik.get_touch_ok():
34-
if menu_status == 0:
35-
while not alvik.get_touch_cancel():
36-
run_line_follower(alvik)
37-
elif menu_status == 1:
38-
while not alvik.get_touch_cancel():
39-
run_hand_follower(alvik)
40-
elif menu_status == -1:
41-
while not alvik.get_touch_cancel():
42-
run_touch_move(alvik)
43-
alvik.brake()
86+
if __name__ == "__main__":
87+
alvik = ArduinoAlvik()
88+
alvik.begin()
4489

45-
if alvik.get_touch_up() and menu_status < 1:
46-
menu_status += 1
47-
update_led_status(menu_status)
48-
while alvik.get_touch_up():
49-
sleep_ms(100)
50-
if alvik.get_touch_down() and menu_status > -1:
51-
menu_status -= 1
52-
update_led_status(menu_status)
53-
while alvik.get_touch_down():
54-
sleep_ms(100)
90+
alvik.left_led.set_color(1, 0, 0)
91+
alvik.right_led.set_color(1, 0, 0)
5592

56-
sleep_ms(100)
93+
while True:
94+
try:
95+
96+
run_touch_move(alvik)
5797

58-
except KeyboardInterrupt as e:
59-
print('over')
60-
alvik.stop()
61-
break
98+
except KeyboardInterrupt as e:
99+
print('over')
100+
alvik.stop()
101+
break

examples/demo/touch_move.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ def run_movement(movement):
6363
def run_touch_move(alvik):
6464
movements = []
6565
while not (alvik.get_touch_ok() and len(movements) != 0):
66+
if alvik.get_touch_cancel():
67+
movements.clear()
68+
return
6669
alvik.left_led.set_color(1, 0, 0)
6770
alvik.right_led.set_color(1, 0, 0)
6871
alvik.brake()

0 commit comments

Comments
 (0)