Hund humör detektor (Raspberry Pi) (3 / 5 steg)
Steg 3: programmering
Nedan är Python programmet jag använde för min hund. I nästa steg kommer jag förklara hur man ändra programmet för hundens beteende. Kör inte programmet ännu eftersom det inte kommer att fungera tills du gör nästa steg.
< p > #! / usr/bin/python < br > import pyaudio
importera sys
importera tråd
från att importera sömn
importera från matris matris
importera RPi.GPIO som GPIO < /p >< p > bark = 0
tjuta = False
Håll = 0
barkLength = 5
Delay = 0
vänta = 2
flagga = 0
röd = 7
grön = 5
exitFlag = False < /p >< p > def toggleLightRed(c):
GPIO.setmode (GPIO. STYRELSEN)
GPIO.setup (röd, GPIO. OUT)
GPIO.output(c,True)
Sleep(10)
GPIO.output(c,False)
skriva ut ("röd växlas") < /p >< p > def toggleLightGreen(c):
GPIO.setmode (GPIO. STYRELSEN)
GPIO.setup (grön, GPIO. OUT)
GPIO.output(c,True)
Sleep(10)
GPIO.output(c,False)
skriva ut ("grön växlas") < /p >< p > def main ():
globala bark
globala howl
globala håll
globala barkLength
globala dröjsmål
Global flagga
globala röd
Global green < /p >< p > chunk = 8192
FORMAT = pyaudio.paInt16
KANALER = 1
RÄNTA = 44100
tröskel = 3000
MAX_VALUE = 0
p = pyaudio. PyAudio()
ström = p.open (format = FORMAT,
kanaler = kanaler,
Rate = hastighet,
input = sant
output = sant
frames_per_buffer = bit)
GPIO.setmode (GPIO. STYRELSEN)
GPIO.setup (röd, GPIO. OUT)
GPIO.setup (grön, GPIO. OUT)
försök:
skriva ut "Detection initieras"
samtidigt sant:
försök:
data = stream.read(chunk)
utom IOError som ex:
om ex [1]! = pyaudio.paInputOverflowed:
höja
data = '\x00' * bit
as_ints = array ('h', data)
MAX_VALUE = max(as_ints)
medan max_value > tröskelvärde:
Delay = 0
Håll = håll + 1
försök:
data = stream.read(chunk)
utom IOError som ex:
om ex [1]! = pyaudio.paInputOverflowed:
höja
data = '\x00' * bit
as_ints = array ('h', data)
MAX_VALUE = max(as_ints)
om håll > = barkLength:
tjuta = sant
skriva ut "HOWL upptäckt"
toggleLightGreen(green)
GPIO.cleanup()
Elif håll > 0 och håll < barklength: = "" bark += "1" print = "" "bark =" "upptäckt"="" togglelightred(red) = "" gpio.cleanup() = "" Håll = "0" försening += "1" utom = "" (keyboardinterrupt, = "" systemexit): = "" "\rexiting"="" stream.stop_stream() = "" stream.close() = "" p.terminate() = "" gpio.cleanup() < = "" p = "" >< / barklength: >< /p >< p > om __name__ == "__main__":
Main () < /p >