Stap 5: Programmering MOVI
Dus voor eigenlijk MOVI programmeren en het bouwen van de lichtschakelaar voorbeeld weergegeven in de video, laten we het gebruik van Python. De volgende Python code laat zien hoe met de seriële interface en de GPIO bibliotheek om het een stem gebaseerde lichtschakelaar, identiek aan de Arduino voorbeeld schets.
Kopieer en plak de volgende code in een editor en spelen rond met het:
# LightSwitch.py# LightSwitch example similar to the Arduino example sketch # https://github.com/audeme/MOVIArduinoAPI/blob/master/examples/beginner/LightSwitch/LightSwitch.ino# Imports: Rasberry PI GPIO (for LED), serial, time import RPi.GPIO as GPIO import serial import time# Initialize serial line ser = serial.Serial ("/dev/ttyAMA0") ser.baudrate = 9600# Change this method to be more intelligent. # Right now, it only checks for sentence one and two. def process(line): print line # Debug output if "#0" in line: # Sentence 1 GPIO.output(18,GPIO.HIGH) ser.write("SAY ...and there was light!\n") if "#1" in line: # Sentence 2 GPIO.output(18,GPIO.LOW)def main(): # Initialize GPIO for LED GPIO.setmode(GPIO.BCM) GPIO.setup(18,GPIO.OUT) # Initialize MOVI ser.write("INIT\n") # INIT #### The following commands are only executed by MOVI if needed ser.write("CALLSIGN rasberrypie\n") # Set callsign to rasberrypi ser.write("NEWSENTENCES\n") # Train MOVI ser.write("ADDSENTENCE Let there be light\n") # Sentence 1 ser.write("ADDSENTENCE Go dark\n") # Sentence 2 ser.write("TRAINSENTENCES \n") # Go train, if needed #### End lazy ser.write("SAY Mohvee on Rasberry Pi \n") # Say we are ready. data="" # stores one line of data from MOVI while (True): #loop enlessly like loop() on Arduino if (ser.inWaiting()>0): #if there is stuff on the serial port serchar=ser.read() # read it if (serchar=="\n"): # if a line was ending process(data) # process it data="" # make a new line else: # otherwise data=data+serchar; # just append time.delay(0.1) # Don't busy spin ser.close() # Will never be reached# See: http://www.artima.com/weblogs/viewpost.jsp?thread=4829 if __name__ == "__main__": main()