Trong bài này, chúng ta sẽ cùng thực hành làm xe cấp cứu bằng Python cùng robot xBot.
Câu lệnh điều khiển loa (speaker) chơi nhạc sẽ nhận các tham số tune, wait, loop như sau:
speaker.play(tune, wait=False, loop=False)
Các bài hát thư viện hỗ trợ sẵn gồm BIRTHDAY, TWINKLE, JINGLE_BELLS, WHEEL_ON_BUS, FUR_ELISE, CHASE, JUMP_UP, JUMP_DOWN, POWER_UP, POWER_DOWN.
Các nốt nhạc được viết theo dạng [‘C4:1’],[‘D4:1’],[‘E4:1’],[‘F4:1’], [‘G4:1’],[‘A4:1’], [‘B4:1’],… Trong đó, C4, D4, E4… là kí hiệu của các nốt nhạc Đồ, Rê, Mi,…
Khi wait bằng True, chương trình sẽ đợi bài hát hoặc nốt nhạc được phát xong rồi mới thực hiện tiếp các câu lệnh khác.
wait là một tham số tùy chọn với giá trị mặc định là False (nếu không truyền tham số vào thì mặc định giá trị bằng False). Khi wait bằng False, chương trình sẽ thực hiện tiếp các câu lệnh khác phía dưới câu lệnh phát nhạc mà không cần chờ phát nhạc xong.
Bài hát hoặc nốt nhạc được phát lại khi loop bằng True và ngược lại.
loop cũng là một tham số tùy chọn với giá trị mặc định là False.
Như vậy, giả sử cần phát bài hát BIRTHDAY, ta có thể dùng:
speaker.play(BIRTHDAY)
Hoặc để lần lượt phát ra các nốt nhạc Đô Rê Mi, ta cần thêm tham số wait = True như sau:
speaker.play(['C4:1'], wait=True) speaker.play(['D4:1'], wait=True) speaker.play(['E4:1'], wait=True)
Ngoài ra còn có câu lệnh điều khiển loa (speaker) phát ra âm thanh với tần số tùy ý nhận vào 2 tham số frequency và time như sau:
speaker.pitch(frequency, time)
Chúng ta sẽ viết code Python như sau:
while True: wait_for(lambda: (btn_onboard.is_pressed())) for count in range(5): speaker.pitch(950, 600) speaker.pitch(700, 600)
Hiệu ứng âm thanh của xe cấp cứu sẽ bao gồm 2 âm thanh cao và thấp, có tần số là 950Hz và 700Hz, kéo dài 0.6 giây, được phát ra xen kẽ nhau như trong chương trình.
Nhưng, bạn cũng có thể sử dụng 2 nốt nhạc có tần số gần giống là A5 và E5:
while True: wait_for(lambda: (btn_onboard.is_pressed())) for count2 in range(5): speaker.play(['A5:2'], wait=True) speaker.play(['E5:2'], wait=True)