Untethered taligenkänning och syntes med MOVI med Rasberry PI (5 / 6 steg)
Steg 5: Programmering MOVI
Så för faktiskt programmering MOVI och bygga strömbrytare exemplet som visas i videon, låt oss använda Python. Följande Python kod visar hur du använder det seriella gränssnittet och GPIO biblioteket för att genomföra de en röst-baserade strömbrytare, identiska till exempel Arduino skiss.
Kopiera och klistra in följande kod i en editor och leka med det:
# LightSwitch.py
# LightSwitch exempel liknande till exempel Arduino skiss
# https://github.com/audeme/MOVIArduinoAPI/blob/master/examples/beginner/LightSwitch/LightSwitch.ino
# Import: Rasberry PI GPIO (för LED), seriell, tid
importera RPi.GPIO som GPIO
importera följetong
Importera tid
# Initiera serial line
ser = följetong. Serial ("/ dev/ttyAMA0")
ser.BaudRate = 9600
# Ändra denna metod för att bli mer intelligent.
# Just nu, bara söker efter meningen ett och två.
def process(line):
skriva ut # Debug linjeutgång
om "#0" i raden: # meningen 1
GPIO.output (18, GPIO. HÖG)
ser.write ("säga.. .och det var ljus! \n")
om "#1" i raden: # meningen 2
GPIO.output (18, GPIO. LÅG)
def main ():
# Initiera GPIO för LED
GPIO.setmode (GPIO. BCM)
GPIO.setup (18, GPIO. OUT)
# Initiera MOVI
ser.write("INIT\n") # INIT
### Följande kommandon utförs endast av MOVI om det behövs
ser.write ("CALLSIGN rasberrypie\n") # Set callsign till rasberrypi
ser.write("NEWSENTENCES\n") # tåg MOVI
ser.write ("ADDSENTENCE Varde light\n") # meningen 1
ser.write ("ADDSENTENCE gå dark\n") # meningen 2
ser.write ("TRAINSENTENCES \n") # gå tåg, om det behövs
### Slutet lata
ser.write ("säger Mohvee på Rasberry Pi \n") # säga vi är redo.
data = "" # lagrar en rad med data från MOVI
medan (sant): #loop enlessly som loop() på Arduino
om (ser.inWaiting() > 0): #if det är grejer på den seriella porten
serchar=ser.Read() # läsa den
om (serchar == "\n"): # om en linje var slut
process(data) # bearbeta den
data = "" # gör en ny rad
annat: # annars
data = data + serchar; # rättvis tillägga
Time.Delay(0.1) # inte upptagen spin
ser.Close() # kommer aldrig att uppnås
# Se: http://www.artima.com/weblogs/viewpost.jsp?thread=4829
om __name__ == "__main__":
Main)