Skip to content

Commit a225b32

Browse files
committed
2 parents 5da71d9 + 39152c2 commit a225b32

8 files changed

Lines changed: 132 additions & 97 deletions

File tree

10.microbit/button.py

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,30 @@
22

33
class Button:
44

5-
def __init__(self, pin):
5+
def __init__(self, pin_id):
66
from machine import Pin
7-
self.pin = Pin(pin, Pin.IN)
8-
9-
def get_presses(self, delay = 1):
10-
last_time, last_state, presses = time(), 0, 0
11-
while time() < last_time + delay:
12-
sleep_ms(50)
13-
if last_state == 0 and self.pin.value() == 1:
14-
last_state= 1
15-
if last_state == 1 and self.pin.value() == 0:
16-
last_state, presses = 0, presses + 1
17-
return presses
7+
self.pin = Pin(pin_id, Pin.IN)
8+
self.irq = self.pin.irq(trigger=Pin.IRQ_FALLING, handler=self.__irq_sc)
9+
self.presses = 0
10+
11+
def __irq_sc(self, p):
12+
# print(self, p)
13+
self.presses += 1
14+
15+
def close(self):
16+
self.irq.trigger(0)
17+
18+
def reset(self):
19+
self.presses = 0
20+
21+
def get_presses(self):
22+
return self.presses
1823

1924
def is_pressed(self):
2025
return self.pin.value() == 0
2126

22-
def was_pressed(self, delay = 1):
23-
last_time, last_state = time(), self.pin.value()
24-
while time() < last_time + delay:
25-
sleep_ms(50)
26-
if last_state != self.pin.value():
27-
return True
28-
return False
27+
def was_pressed(self):
28+
return self.presses != 0
2929

3030
def unit_test():
3131
print('The unit test code is as follows')
@@ -36,11 +36,15 @@ def unit_test():
3636
print(\'button_a is_pressed \', button_a.is_pressed())\n\
3737
print(\'button_a get_presses \', button_a.get_presses())\n\
3838
')
39-
button_a = Button(35)
40-
while True:
41-
print('button_a was_pressed ', button_a.was_pressed())
42-
print('button_a is_pressed ', button_a.is_pressed())
43-
print('button_a get_presses ', button_a.get_presses())
39+
try:
40+
button_a = Button(35)
41+
while True:
42+
sleep_ms(100)
43+
print('button_a was_pressed ', button_a.was_pressed())
44+
print('button_a is_pressed ', button_a.is_pressed())
45+
print('button_a get_presses ', button_a.get_presses())
46+
finally:
47+
button_a.close()
4448

4549
if __name__ == '__main__':
4650
unit_test()

10.microbit/display.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,7 @@ def _scroll(self, val, color=Red, delay=150):
360360
_thread.exit()
361361

362362
def clear(self):
363+
self.stop()
363364
self.Led.fill((0, 0, 0))
364365
self.Led.Show()
365366

10.microbit/pins.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ def read_digital(self):
1515

1616
def read_analog(self, ATTN = ADC.ATTN_0DB):
1717
if self.pin not in range(32,40):
18-
print("This pin feature is not supported")
19-
return 0
18+
# print("This pin feature is not supported")
19+
return None
2020
if self.adc is None:
2121
self.adc = ADC(Pin(self.pin, Pin.IN))
2222
self.adc.atten(ATTN)
2323
return self.adc.read()
2424

2525
def write_analog(self, value):
2626
if self.pin not in [25,26]:
27-
print("This pin feature is not supported")
28-
return 0
27+
# print("This pin feature is not supported")
28+
return None
2929
DAC(Pin(self.pin)).write(value)
3030

3131
def is_touched(self):

11.app/artec.py

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,42 +10,43 @@
1010

1111
music.play(music.POWER_UP)
1212

13-
import display
13+
import pins
1414

15-
Image = display.Image
16-
display = display.Display()
15+
led1 = pins.Pins(12)
16+
led2 = pins.Pins(14)
1717

18-
display.clear()
18+
led1.write_digital(1)
19+
led2.write_digital(1)
1920

20-
all_boats = [
21-
Image("00000:" "00000:" "00000:" "00000:" "00000"),
22-
Image("11111:" "00000:" "00000:" "00000:" "00000"),
23-
Image("11111:" "11111:" "00000:" "00000:" "00000"),
24-
Image("11111:" "11111:" "11111:" "00000:" "00000"),
25-
Image("11111:" "11111:" "11111:" "11111:" "00000"),
26-
Image("11111:" "11111:" "11111:" "11111:" "11111"),
27-
Image("00000:" "11111:" "11111:" "11111:" "11111"),
28-
Image("00000:" "00000:" "11111:" "11111:" "11111"),
29-
Image("00000:" "00000:" "00000:" "11111:" "11111"),
30-
Image("00000:" "00000:" "00000:" "00000:" "11111"),
31-
Image("00000:" "00000:" "00000:" "00000:" "00000"),
32-
]
33-
34-
display.show(all_boats, color=(10, 10, 10), delay=150)
21+
import display
22+
Image = display.Image
23+
display = display.Display()
3524

25+
time.sleep(0.5)
3626
music.play(music.JUMP_UP)
3727
display.show('A', color=(20, 0, 0))
3828
while 0 == button_a.was_pressed():
3929
time.sleep(0.1)
4030
time.sleep(0.5)
4131
display.show('O', color=(0, 20, 0))
4232

43-
music.play(music.JUMP_UP)
44-
display.show('B', color=(20, 0, 0))
45-
while 0 == button_b.was_pressed():
46-
time.sleep(0.1)
4733
time.sleep(0.5)
48-
display.show('O', color=(0, 20, 0))
34+
music.play(music.JUMP_UP)
35+
display.show('D', color=(20, 0, 0))
36+
display.clear()
37+
time.sleep(1)
38+
display.show(Image("33333:" "33333:" "33333:" "33333:" "33333"), color=(10, 0, 0), delay=150)
39+
time.sleep(1)
40+
display.show(Image("33333:" "33333:" "33333:" "33333:" "33333"), color=(0, 10, 0), delay=150)
41+
time.sleep(1)
42+
display.show(Image("33333:" "33333:" "33333:" "33333:" "33333"), color=(0, 0, 10), delay=150)
43+
time.sleep(1)
44+
display.show(Image("33333:" "33333:" "33333:" "33333:" "33333"), color=(10, 10, 10), delay=150)
45+
time.sleep(1)
46+
display.clear()
47+
48+
led1.write_digital(0)
49+
led2.write_digital(0)
4950

5051
music.play(music.JUMP_UP)
5152
display.show('T', color=(20, 0, 0))
@@ -86,6 +87,13 @@
8687
break
8788
display.show('O', color=(0, 20, 0))
8889

90+
music.play(music.JUMP_UP)
91+
display.show('B', color=(20, 0, 0))
92+
while 0 == button_b.was_pressed():
93+
time.sleep(0.1)
94+
time.sleep(0.5)
95+
display.show('O', color=(0, 20, 0))
96+
8997
music.play(music.POWER_DOWN)
9098
time.sleep(0.5)
9199
display.clear()

12.network/server_base.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@
99

1010
# in your code
1111

12+
while True:
13+
cl, addr = server.accept()
14+
print('client connected from', addr)
15+
16+
buf = cl.recv()
17+
18+
if b'open' in buf:
19+
print(b'open')
20+
21+
cl.send(buf)
22+
cl.close()
1223
finally:
1324
# it will throw error OSError: [Errno 12] ENOMEM if your dont exec the code.
1425
server.close()

12.network/zhiwu.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,19 @@ def core(self, pack):
5656

5757
def parse(self, pack):
5858
res = self.core(pack)
59-
if (pack[0] == TYPE_COLLECT):
60-
# return [TYPE_COLLECT, res[1:ord(res[0]) + 1], res[ord(res[0]) + 2:]]
61-
src = 1+res[0]
62-
dt = 1 + src
63-
return [TYPE_COLLECT, res[1:src], res[dt:dt+res[src]]]
64-
elif (pack[0] == TYPE_COMMAND):
65-
result = [TYPE_COMMAND, res[1:res[0] + 1]]
66-
# print(result)
67-
if (result[1] == b'TimeSysn'):
68-
# print(decode_parse(self.de))
69-
set_time(decode_parse(self.de)[0])
70-
return result
59+
if (res != None):
60+
if (pack[0] == TYPE_COLLECT):
61+
# return [TYPE_COLLECT, res[1:ord(res[0]) + 1], res[ord(res[0]) + 2:]]
62+
src = 1+res[0]
63+
dt = 1 + src
64+
return [TYPE_COLLECT, res[1:src], res[dt:dt+res[src]]]
65+
elif (pack[0] == TYPE_COMMAND):
66+
result = [TYPE_COMMAND, res[1:res[0] + 1]]
67+
# print(result)
68+
if (result[1] == b'TimeSysn'):
69+
# print(decode_parse(self.de))
70+
set_time(decode_parse(self.de)[0])
71+
return result
7172
return None
7273

7374
if __name__ == '__main__':

13.system/watchdog.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
import machine
3+
4+
t = machine.WDT(0, 5) # init wdt 0, timeout 5s
5+
6+
t.feed() # feed it
7+
8+
t.delete() # close it

15.algorithm/crc16.py

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,35 @@
1-
21
CRC_LENGTH = 0x02
32

43
CRC16_TABLE = (
5-
0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,0xC601,
6-
0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,0xCC01,0x0CC0,
7-
0x0D80,0xCD41,0x0F00,0xCFC1,0xCE81,0x0E40,0x0A00,0xCAC1,0xCB81,
8-
0x0B40,0xC901,0x09C0,0x0880,0xC841,0xD801,0x18C0,0x1980,0xD941,
9-
0x1B00,0xDBC1,0xDA81,0x1A40,0x1E00,0xDEC1,0xDF81,0x1F40,0xDD01,
10-
0x1DC0,0x1C80,0xDC41,0x1400,0xD4C1,0xD581,0x1540,0xD701,0x17C0,
11-
0x1680,0xD641,0xD201,0x12C0,0x1380,0xD341,0x1100,0xD1C1,0xD081,
12-
0x1040,0xF001,0x30C0,0x3180,0xF141,0x3300,0xF3C1,0xF281,0x3240,
13-
0x3600,0xF6C1,0xF781,0x3740,0xF501,0x35C0,0x3480,0xF441,0x3C00,
14-
0xFCC1,0xFD81,0x3D40,0xFF01,0x3FC0,0x3E80,0xFE41,0xFA01,0x3AC0,
15-
0x3B80,0xFB41,0x3900,0xF9C1,0xF881,0x3840,0x2800,0xE8C1,0xE981,
16-
0x2940,0xEB01,0x2BC0,0x2A80,0xEA41,0xEE01,0x2EC0,0x2F80,0xEF41,
17-
0x2D00,0xEDC1,0xEC81,0x2C40,0xE401,0x24C0,0x2580,0xE541,0x2700,
18-
0xE7C1,0xE681,0x2640,0x2200,0xE2C1,0xE381,0x2340,0xE101,0x21C0,
19-
0x2080,0xE041,0xA001,0x60C0,0x6180,0xA141,0x6300,0xA3C1,0xA281,
20-
0x6240,0x6600,0xA6C1,0xA781,0x6740,0xA501,0x65C0,0x6480,0xA441,
21-
0x6C00,0xACC1,0xAD81,0x6D40,0xAF01,0x6FC0,0x6E80,0xAE41,0xAA01,
22-
0x6AC0,0x6B80,0xAB41,0x6900,0xA9C1,0xA881,0x6840,0x7800,0xB8C1,
23-
0xB981,0x7940,0xBB01,0x7BC0,0x7A80,0xBA41,0xBE01,0x7EC0,0x7F80,
24-
0xBF41,0x7D00,0xBDC1,0xBC81,0x7C40,0xB401,0x74C0,0x7580,0xB541,
25-
0x7700,0xB7C1,0xB681,0x7640,0x7200,0xB2C1,0xB381,0x7340,0xB101,
26-
0x71C0,0x7080,0xB041,0x5000,0x90C1,0x9181,0x5140,0x9301,0x53C0,
27-
0x5280,0x9241,0x9601,0x56C0,0x5780,0x9741,0x5500,0x95C1,0x9481,
28-
0x5440,0x9C01,0x5CC0,0x5D80,0x9D41,0x5F00,0x9FC1,0x9E81,0x5E40,
29-
0x5A00,0x9AC1,0x9B81,0x5B40,0x9901,0x59C0,0x5880,0x9841,0x8801,
30-
0x48C0,0x4980,0x8941,0x4B00,0x8BC1,0x8A81,0x4A40,0x4E00,0x8EC1,
31-
0x8F81,0x4F40,0x8D01,0x4DC0,0x4C80,0x8C41,0x4400,0x84C1,0x8581,
32-
0x4540,0x8701,0x47C0,0x4680,0x8641,0x8201,0x42C0,0x4380,0x8341,
33-
0x4100,0x81C1,0x8081,0x4040
34-
)
35-
4+
0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601,
5+
0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0,
6+
0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81,
7+
0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941,
8+
0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01,
9+
0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0,
10+
0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081,
11+
0x1040, 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
12+
0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00,
13+
0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0,
14+
0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981,
15+
0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41,
16+
0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700,
17+
0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0,
18+
0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281,
19+
0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
20+
0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01,
21+
0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1,
22+
0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80,
23+
0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541,
24+
0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101,
25+
0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0,
26+
0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481,
27+
0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
28+
0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801,
29+
0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1,
30+
0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581,
31+
0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341,
32+
0x4100, 0x81C1, 0x8081, 0x4040)
3633
""" Code to generate the CRC-16 lookup table:
3734
def generate_crc16_table():
3835
crc_table = []
@@ -50,17 +47,21 @@ def generate_crc16_table():
5047

5148
import struct
5249

50+
5351
def crc16(data):
5452
crc = 0xFFFF
5553
for char in data:
5654
crc = (crc >> 8) ^ CRC16_TABLE[((crc) ^ char) & 0xFF]
5755
return struct.pack('<H', crc)
56+
57+
5858
#
5959
# test_bytes = b"\x01\x05\x00\x00\xFF\x00"
6060
# print(test_bytes)
6161
# crc = crc16(test_bytes)
6262
# print(hex(crc[0]), hex(crc[1]))
6363

64+
6465
def PrintHex(string):
6566
tmp = string.split(" ")
6667
data = bytearray()
@@ -72,6 +73,7 @@ def PrintHex(string):
7273
data.append(crc[1])
7374
return data
7475

76+
7577
test_strs = "01 05 00 00 FF 00"
7678

7779
print(test_strs)
@@ -80,7 +82,7 @@ def PrintHex(string):
8082

8183
print(b'\x01\x05\x00\x00\xff\x00\x8c\x3a')
8284

83-
test_strs = "01 05 00 0B FF 00" # FD F8
85+
test_strs = "01 05 00 0B FF 00" # FD F8
8486

8587
print(test_strs)
8688

0 commit comments

Comments
 (0)