-
Notifications
You must be signed in to change notification settings - Fork 19
/
rover20shout.py
65 lines (44 loc) · 1.52 KB
/
rover20shout.py
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
#!/usr/bin/env python
'''
rovershout20.py Shout at the Brookstone Rover 2.0 to make it turn and run.
Copyright (C) 2014 Simon D. Levy
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
'''
# Noise samples are in +/- 2^15
NOISETHRESH = 10000
TURNSEC = 1.25
FLEESEC = 2.0
from rover import Rover20
import time
# Handler passed to Rover constructor
class AudioRover(Rover20):
def __init__(self):
Rover20.__init__(self)
self.heard = False
def processAudio(self, pcmsamples, _):
avg = 0
for sample in pcmsamples:
avg += abs(sample)
if avg/len(pcmsamples) > NOISETHRESH:
self.heard = True
# Create a Rover object that can process audio
rover = AudioRover()
# Loop till a loud noise is heard
while not rover.heard:
pass
# Turn around for a specified duration
rover.setTreads(-1,+1)
time.sleep(TURNSEC)
# Flee for a specified duration
rover.setTreads(1,1)
time.sleep(FLEESEC)
rover.setTreads(0,0)
# Shut down Rover
rover.close()