diff --git a/Chapter05_Serial-IO/serialOrgan/autoPlay.py b/Chapter05_Serial-IO/serialOrgan/autoPlay.py index f1a4cb27..8b0caddc 100644 --- a/Chapter05_Serial-IO/serialOrgan/autoPlay.py +++ b/Chapter05_Serial-IO/serialOrgan/autoPlay.py @@ -8,16 +8,18 @@ def playString(noteString, serialPort): for letter in noteString: - print letter - serialPort.write(letter) + print(letter) + serialPort.write(letter.encode()) returnValue = serialPort.read(1) if __name__ == "__main__": - import time, urllib2 + import time + from urllib.request import urlopen ## Need to consider alternatives for Mac / Windows - PORT = "/dev/ttyUSB0" + ## list all serial ports being used: python -m serial.tools.list_ports + PORT = "/dev/ttyUSB0" # Change this to the current serial port being used BAUD = 9600 s = serial.Serial(PORT, BAUD) @@ -27,29 +29,22 @@ def playString(noteString, serialPort): ## An intentional example. You can use this for playing music on purpose. playString("f g h j k l ; ]'[", s) - raw_input("Press enter for next demo\n") + input("Press enter for next demo\n") ## A fun / stupid example. You can just type stuff and see what comes out. playString("hello there, this is a random string turned into 'music'", s) - raw_input("Press enter for next demo\n") + input("Press enter for next demo\n") + ## Website no longer alive... skipping: ## A really frivolous example. Play websites! ## Bonus points for first person to tweet themselves a song. - print ("Downloading song data from http://serialorgansongs.jottit.com/...") - import re - contentFilter = re.compile(r'
(.*?)
') - songSite = urllib2.urlopen("http://serialorgansongs.jottit.com/").read() - songText = contentFilter.findall(songSite)[0] - playString(songText, s) + #print ("Downloading song data from http://serialorgansongs.jottit.com/...") + #import re + #contentFilter = re.compile(r'(.*?)
') + #songSite = urlopen("http://serialorgansongs.jottit.com/").read() + #songText = contentFilter.findall(songSite)[0] + #playString(songText, s) ## Or interactive - mySong = raw_input("\nType in your own song: ") + mySong = input("\nType in your own song: ") playString(mySong, s) - - - - - - - - diff --git a/Chapter06_Digital-Input/bossButton/bossButton.py b/Chapter06_Digital-Input/bossButton/bossButton.py index e9892d87..c33409a4 100644 --- a/Chapter06_Digital-Input/bossButton/bossButton.py +++ b/Chapter06_Digital-Input/bossButton/bossButton.py @@ -21,11 +21,11 @@ while(1): # Sit and wait forever response = sp.read(1) # get one byte if response == "O": - print "Got OK Byte. Waiting for button press." - elif response == "X": - print "Got Boss Byte! Alarm!" + print ("Got OK Byte. Waiting for button press.") + elif response == b"X": + print ("Got Boss Byte! Alarm!") webbrowser.open(BOSS_SITE) else: - print "Got nothing. Still waiting." + print ("Got nothing. Still waiting.") diff --git a/Chapter07_Analog-to-Digital-Conversion-I/slowScope/serialScope.py b/Chapter07_Analog-to-Digital-Conversion-I/slowScope/serialScope.py index fd98580e..3f8828b2 100755 --- a/Chapter07_Analog-to-Digital-Conversion-I/slowScope/serialScope.py +++ b/Chapter07_Analog-to-Digital-Conversion-I/slowScope/serialScope.py @@ -5,18 +5,18 @@ def readValue(serialPort): def plotValue(value): """ Displays the value on a scaled scrolling bargraph""" - leadingSpaces = " " * (value*(SCREEN_WIDTH-3) / 255) - print "%s%3i" % (leadingSpaces, value) + leadingSpaces = "-" * int(value*(SCREEN_WIDTH-3) / 255) + print(f"{leadingSpaces} {value:03}") def cheapoScope(serialPort): while(1): - newValue = readValue(serialPort) - plotValue(newValue) + newValue = readValue(serialPort) + plotValue(newValue) if __name__ == "__main__": - - PORT = '/dev/ttyUSB0' + ## list all serial ports being used: python -m serial.tools.list_ports + PORT = '/dev/ttyUSB0' # update to whatever port is listed in serial.tools.list_ports BAUDRATE = 9600 TIMEOUT = None SCREEN_WIDTH = 80 @@ -27,18 +27,9 @@ def cheapoScope(serialPort): port = sys.argv[1] baudrate = int(sys.argv[2]) else: # nothing passed, use defaults - print ("Optional arguments port, baudrate set to defaults.") - port, baudrate = (PORT, BAUDRATE) + print ("Optional arguments port, baudrate set to defaults.") + port, baudrate = (PORT, BAUDRATE) serialPort = serial.Serial(port, baudrate, timeout=TIMEOUT) serialPort.flush() cheapoScope(serialPort) - - - - - - - - - diff --git a/Chapter08_Hardware-Interrupts/capSense/serialScope.py b/Chapter08_Hardware-Interrupts/capSense/serialScope.py index 64dd38cf..3f8828b2 100755 --- a/Chapter08_Hardware-Interrupts/capSense/serialScope.py +++ b/Chapter08_Hardware-Interrupts/capSense/serialScope.py @@ -1,49 +1,35 @@ -#!/usr/bin/env python - import serial def readValue(serialPort): return(ord(serialPort.read(1))) -def plotValue(value, dashes): - """ - Displays the value on a scaled scrolling bargraph - """ - value = int(value) - if dashes: - print "%s%3i" % (("-"*(value*77 / 255)), value) - else: - print "%s%3i" % ((" "*(value*77 / 255)), value) +def plotValue(value): + """ Displays the value on a scaled scrolling bargraph""" + leadingSpaces = "-" * int(value*(SCREEN_WIDTH-3) / 255) + print(f"{leadingSpaces} {value:03}") -def cheapoScope(serialPort, smoothing, dashes=True): - runningValue = 0.0 +def cheapoScope(serialPort): while(1): - runningValue = float(readValue(serialPort)) + smoothing*runningValue - plotValue(runningValue*(1.0 - smoothing), dashes) + newValue = readValue(serialPort) + plotValue(newValue) if __name__ == "__main__": - - PORT = '/dev/ttyUSB0' + ## list all serial ports being used: python -m serial.tools.list_ports + PORT = '/dev/ttyUSB0' # update to whatever port is listed in serial.tools.list_ports BAUDRATE = 9600 - SMOOTHING = 0 + TIMEOUT = None + SCREEN_WIDTH = 80 ## Take command-line arguments to override defaults above import sys if len(sys.argv) == 3: - baudrate, smoothing = [float(x) for x in sys.argv[1:3]] - else: - baudrate, smoothing = (BAUDRATE, SMOOTHING) + port = sys.argv[1] + baudrate = int(sys.argv[2]) + else: # nothing passed, use defaults + print ("Optional arguments port, baudrate set to defaults.") + port, baudrate = (PORT, BAUDRATE) - serialPort = serial.Serial(PORT, baudrate, timeout=10) + serialPort = serial.Serial(port, baudrate, timeout=TIMEOUT) serialPort.flush() - cheapoScope(serialPort, smoothing, dashes=False) - - - - - - - - - + cheapoScope(serialPort)