Quite content with it (Playing is not always working)

This commit is contained in:
Eric Teunis de Boone 2017-02-05 01:13:43 +01:00
parent c0ad31810f
commit ec91729896
5 changed files with 42 additions and 41 deletions

View File

@ -14,9 +14,10 @@ void layout(unsigned int tick) {
if ( playing || tick % 3 ) { if ( playing || tick % 3 ) {
display.setCursor(0, 0); display.setCursor(0, 0);
// First line (20) // First line (20)
display.print(F(" "));
if (volume < 100 ) display.print(' '); if (volume < 100 ) display.print(' ');
display.print(volume); display.print(volume);
display.print(F("% || ")); display.print(F("% |||| "));
if (repeat_bool) display.print('r'); if (repeat_bool) display.print('r');
else display.print(' '); else display.print(' ');
if (random_bool) display.print('x'); if (random_bool) display.print('x');
@ -29,9 +30,7 @@ void layout(unsigned int tick) {
else display.print(' '); else display.print(' ');
if (updating_bool) display.print('u'); if (updating_bool) display.print('u');
else display.print(' '); else display.print(' ');
display.print(" || "); display.print(" ");
display.print(progress);
display.print("% ");
} }
//line 2 //line 2
@ -60,7 +59,7 @@ String textscroll(String text, unsigned int tick) {
text = text + " - "; text = text + " - ";
for ( int i = 0; i < chars; i++ ) for ( int i = 0; i < chars; i++ )
newstring += text.charAt((tick + i) % (len+3)); newstring += text.charAt((2*tick + i) % (len+3));
return newstring; return newstring;
} }

View File

@ -55,7 +55,6 @@ boolean single_bool = true;
boolean playing = false; boolean playing = false;
int volume = 100; int volume = 100;
int progress = 51;
String title = " << << Title >> >> "; String title = " << << Title >> >> ";
String artist = " << << Artist >> >> "; String artist = " << << Artist >> >> ";
String album = " << << Album >> >> "; String album = " << << Album >> >> ";
@ -75,6 +74,7 @@ void setup() {
layout(tick); layout(tick);
calcMaxTicks(); calcMaxTicks();
while(!Serial); while(!Serial);
} }

View File

@ -38,7 +38,6 @@ void setFromSerial (String inputString) {
case 'c': string = consume_bool; break; case 'c': string = consume_bool; break;
case 'u': string = updating_bool; break; case 'u': string = updating_bool; break;
case 's': string = single_bool; break; case 's': string = single_bool; break;
case 'p': string = progress; break;
case 'P': string = playing; break; case 'P': string = playing; break;
default: string = "!"; break; default: string = "!"; break;
} }
@ -53,7 +52,6 @@ void setFromSerial (String inputString) {
case 'T': title = string; break; case 'T': title = string; break;
case 'A': artist = string; break; case 'A': artist = string; break;
case 'a': album = string; break; case 'a': album = string; break;
case 'p': progress = string.toInt(); break;
case 'P': playing = (string != 0); break; case 'P': playing = (string != 0); break;
case 'r': repeat_bool = (string != 0); break; case 'r': repeat_bool = (string != 0); break;
case 'z': shuffle_bool = (string != 0); break; case 'z': shuffle_bool = (string != 0); break;

View File

@ -16,9 +16,10 @@ class SerialMPCduino(object):
__single = None __single = None
__consume = None __consume = None
def __init__(self, tty, baud): def __init__(self, tty, baud, verbose):
self.tty = tty self.tty = tty
self.baud = baud self.baud = baud
self.verbose = verbose
self.serial = serial.Serial(tty, baud) self.serial = serial.Serial(tty, baud)
@ -27,27 +28,28 @@ class SerialMPCduino(object):
print(self.serial) print(self.serial)
print("------") print("------")
def check_serial(self): def vprint(self, string):
while not self.serial.inWaiting(): if self.verbose > 1:
pass print(string)
def check_serial(self):
if ( self.serial.inWaiting() > 0 ): if ( self.serial.inWaiting() > 0 ):
#if incoming bytes are waiting to be read from the serial input buffer #if incoming bytes are waiting to be read from the serial input buffer
#read the bytes and convert from binary array to ASCII #read the bytes and convert from binary array to ASCII
string = self.serial.readline().decode('ascii') string = self.serial.readline().decode('ascii')
print(string)
return string return string
def write_serial(self, string): def write_serial(self, string):
print("S"+string) self.vprint("S"+string)
wait_time = 0.3 + 10 * len(string) / float(self.baud) wait_time = 0.3 + 10 * len(string) / float(self.baud)
self.serial.write("S"+string+"\n") self.serial.write("S"+string+"\n")
time.sleep(wait_time) time.sleep(wait_time)
string = self.serial.readline().decode('ascii') string = self.serial.readline().decode('ascii')
time.sleep(0.2) time.sleep(0.2)
print(string) self.vprint(string)
print("Ready") self.vprint(self.check_serial())
self.vprint("Ready")
def read_serial(self, string): def read_serial(self, string):
self.serial.write("E"+string+"\n") self.serial.write("E"+string+"\n")
@ -62,14 +64,14 @@ class SerialMPCduino(object):
# Percentages # Percentages
@property #@property
def progress(self): #def progress(self):
return self.read_serial("p") # return self.read_serial("p")
@progress.setter #@progress.setter
def progress(self, new): #def progress(self, new):
if self.Checker(self.__progress, new, "p"+str(new)): # if self.Checker(self.__progress, new, "p"+str(new)):
print("Progress: {}".format(new)) # print("Progress: {}".format(new))
self.__progress = new # self.__progress = new
@property @property
def volume(self): def volume(self):
@ -114,7 +116,7 @@ class SerialMPCduino(object):
return self.write_serial("r") return self.write_serial("r")
@repeat.setter @repeat.setter
def repeat(self, new): def repeat(self, new):
if self.Checker(self.__repeat, new, "r"+str(new)): if self.Checker(self.__repeat, new, "r"+str(new*1)):
print("Repeat: {}".format(new)) print("Repeat: {}".format(new))
self.__repeat = new self.__repeat = new
@ -123,7 +125,7 @@ class SerialMPCduino(object):
return self.write_serial("z") return self.write_serial("z")
@shuffle.setter @shuffle.setter
def shuffle(self, new): def shuffle(self, new):
if self.Checker(self.__shuffle, new, "z"+str(new)): if self.Checker(self.__shuffle, new, "z"+str(new*1)):
print("Shuffle: {}".format(new)) print("Shuffle: {}".format(new))
self.__shuffle = new self.__shuffle = new
@ -132,7 +134,7 @@ class SerialMPCduino(object):
return self.read_serial("s") return self.read_serial("s")
@single.setter @single.setter
def single(self, single): def single(self, single):
if self.Checker(self.__single, new, "s"+str(new)): if self.Checker(self.__single, new, "s"+str(new*1)):
print("Single: {}".format(new)) print("Single: {}".format(new))
self.__single = new self.__single = new
@ -141,7 +143,7 @@ class SerialMPCduino(object):
return self.read_serial("x") return self.read_serial("x")
@random.setter @random.setter
def random(self, new): def random(self, new):
if self.Checker(self.__random, new, "x"+str(new)): if self.Checker(self.__random, new, "x"+str(new*1)):
print("Random: {}".format(new)) print("Random: {}".format(new))
self.__random = new self.__random = new
@ -150,24 +152,24 @@ class SerialMPCduino(object):
return self.read_serial("x") return self.read_serial("x")
@consume.setter @consume.setter
def consume(self, new): def consume(self, new):
if self.Checker(self.__consume, new, "c"+str(new)): if self.Checker(self.__consume, new, "c"+str(new*1)):
print("Consume: {}".format(new)) print("Consume: {}".format(new))
self.__consume = new self.__consume = new
@property #@property
def update(self): #def update(self):
return self.read_serial("u") # return self.read_serial("u")
@update.setter #@update.setter
def update(self, new): #def update(self, new):
if self.Checker(self.__update, new, "u"+str(new)): # if self.Checker(self.__update, new, "u"+str(new*1)):
print("Update: {}".format(new)) # print("Update: {}".format(new))
self.__update = new # self.__update = new
@property @property
def playing(self): def playing(self):
return self.read_serial("P") return self.read_serial("P")
@playing.setter @playing.setter
def playing(self, new): def playing(self, new):
if self.Checker(self.__playing, new, "P"+str(new)): if self.Checker(self.__playing, new, "P"+str(new*1)):
print("Playing: {}".format(new)) print("Playing: {}".format(new))
self.__playing = new self.__playing = new

View File

@ -5,6 +5,7 @@ import time
tty = '/dev/ttyACM0' tty = '/dev/ttyACM0'
baud = 9600 baud = 9600
verbose = 1
mpdhost = 'fatserf.thuis' mpdhost = 'fatserf.thuis'
mpcformat = "+%title%\t%artist%\t%album%" mpcformat = "+%title%\t%artist%\t%album%"
@ -22,10 +23,9 @@ consume = True
playing = True playing = True
#mpctext = subprocess.check_output(['mpc', 'current', '--wait', '-h', mpdhost, '-f', mpcformat])
if True: if True:
ser = SerialMPCduino(tty, baud) ser = SerialMPCduino(tty, baud, verbose)
time.sleep(0.5) time.sleep(0.5)
while True: while True:
mpctext = subprocess.check_output(['mpc', '-h', mpdhost, '-f', mpcformat]) mpctext = subprocess.check_output(['mpc', '-h', mpdhost, '-f', mpcformat])
@ -85,4 +85,6 @@ if True:
ser.album = album ser.album = album
ser.repeat =repeat ser.repeat =repeat
ser.shuffle = shuffle ser.shuffle = shuffle
time.sleep(0.8)
time.sleep(0.4)
subprocess.call(['mpc', '-h', mpdhost, 'idle'])# Waits for changes