RuneAudio volume show by 7 segment LED

Raspberry Pi related support

RuneAudio volume show by 7 segment LED

Postby sagit » 08 Feb 2018, 07:10

Hi, I am a new member to this forum. This is my first post. See from Mr. pez’s post:

rpi-3-hifiberry-amp2-rotary-encoder-on-off-switch-t6100.html

Thanks to his post, his post trigger me to build up the LED volume part. In order to display every volume value from 0 to 100. I change the LEDs to a 2 digi 7 segment LED.

The one I use is common anode. The decimal place was not use. I use python for this. Between Raspberry Pi GPIOs and 2 digi 7 segment LED. I use 220 ohm resistors for com pin (5, 10). Pin 5 control the right 7 segment LED while pin 10 control the left 7 segment LED. Segments ‘a-g’ I use 330 ohm. The aim of those resistors was limit the current from Raspberry Pi’s GPIO to 2 digi 7 segment LED. This method has a disadvantage that the 2 digi 7 segment LED was turn on by quick scanning between right and left digi. So, there will be some flicker but the connection was simple. To distinguish between 0 and 100, I use ‘FF’ to represent 100. Since I am also new to python. So, this python file may be too ‘bulky’. Feel free to make it slim.

In order to run this python file, a service need to be create and enable. For detail how to create service and use this python and start up when boot. Please take Mr. pez’s post for details.

Please forgive for my bad presentation.
Code: Select all
#!/usr/bin/env python2
# LED_volume.py
import sys
import time
import sys
import RPi.GPIO as GPIO
from mpd import MPDClient

VCC1=27
VCC2=22
LED_A = 21
LED_B = 20
LED_C = 16
LED_D = 26
LED_E = 19
LED_F = 13
LED_G = 6

client = MPDClient()
client.connect('127.0.0.1', 6600)

def init():
   GPIO.setwarnings(False)
   GPIO.setmode(GPIO.BCM)
   GPIO.setup(VCC1, GPIO.OUT)
   GPIO.setup(VCC2, GPIO.OUT)
   GPIO.setup(LED_A, GPIO.OUT)
   GPIO.setup(LED_B, GPIO.OUT)
   GPIO.setup(LED_C, GPIO.OUT)
   GPIO.setup(LED_D, GPIO.OUT)
   GPIO.setup(LED_E, GPIO.OUT)
   GPIO.setup(LED_F, GPIO.OUT)
   GPIO.setup(LED_G, GPIO.OUT)

def reset():
   GPIO.output(VCC1, False)
   GPIO.output(VCC2, False)
   GPIO.output(LED_A, True)
   GPIO.output(LED_B, True)
   GPIO.output(LED_C, True)
   GPIO.output(LED_D, True)
   GPIO.output(LED_E, True)
   GPIO.output(LED_F, True)
   GPIO.output(LED_G, True)

def showvcc(flag):
   if flag==1:
      GPIO.output(VCC1, True)
      GPIO.output(VCC2, False)
   else:
      GPIO.output(VCC2, True)
      GPIO.output(VCC1, False)
      
def shownum0():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, False)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, False)
   GPIO.output(LED_E, False)
   GPIO.output(LED_F, False)
   GPIO.output(LED_G, True)
   
def shownum1():
   GPIO.output(LED_A, True)
   GPIO.output(LED_B, False)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, True)
   GPIO.output(LED_E, True)
   GPIO.output(LED_F, True)
   GPIO.output(LED_G, True)
   
def shownum2():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, False)
   GPIO.output(LED_C, True)
   GPIO.output(LED_D, False)
   GPIO.output(LED_E, False)
   GPIO.output(LED_F, True)
   GPIO.output(LED_G, False)
   
def shownum3():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, False)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, False)
   GPIO.output(LED_E, True)
   GPIO.output(LED_F, True)
   GPIO.output(LED_G, False)
   
def shownum4():
   GPIO.output(LED_A, True)
   GPIO.output(LED_B, False)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, True)
   GPIO.output(LED_E, True)
   GPIO.output(LED_F, False)
   GPIO.output(LED_G, False)
   
def shownum5():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, True)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, False)
   GPIO.output(LED_E, True)
   GPIO.output(LED_F, False)
   GPIO.output(LED_G, False)
   
def shownum6():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, True)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, False)
   GPIO.output(LED_E, False)
   GPIO.output(LED_F, False)
   GPIO.output(LED_G, False)
   
def shownum7():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, False)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, True)
   GPIO.output(LED_E, True)
   GPIO.output(LED_F, True)
   GPIO.output(LED_G, True)
   
def shownum8():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, False)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, False)
   GPIO.output(LED_E, False)
   GPIO.output(LED_F, False)
   GPIO.output(LED_G, False)
   
def shownum9():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, False)
   GPIO.output(LED_C, False)
   GPIO.output(LED_D, False)
   GPIO.output(LED_E, True)
   GPIO.output(LED_F, False)
   GPIO.output(LED_G, False)
   
def shownumf():
   GPIO.output(LED_A, False)
   GPIO.output(LED_B, True)
   GPIO.output(LED_C, True)
   GPIO.output(LED_D, True)
   GPIO.output(LED_E, False)
   GPIO.output(LED_F, False)
   GPIO.output(LED_G, False)
      
def showonenum(flag,num):
   if num==0:
      shownum0()
   elif num==1:
      shownum1()
   elif num==2:
      shownum2()
   elif num==3:
      shownum3()
   elif num==4:
      shownum4()
   elif num==5:
      shownum5()
   elif num==6:
      shownum6()
   elif num==7:
      shownum7()
   elif num==8:
      shownum8()
   elif num==9:
      shownum9()
   showvcc(flag)
   #7 segment refresh time. 1ms to 2ms will also do
   time.sleep(0.001)
   
init()
reset()
while True:
   status = client.status()
   volume = int(status['volume'])
   # show actual volume value from 0 - 99
   if volume >= 0 and volume <100:
      #right volume value digi
      numright=volume % 10
      #left volume value digi
      numleft=volume / 10
      showonenum(1,numleft)
      showonenum(2,numright)
      
   # show 'FF' when volume value is 100
   if volume == 100:
      numleft=shownumf()
      numright=shownumf()
      showonenum(1,numleft)
      showonenum(2,numright)
   
GPIO.cleanup()
Attachments
common_anode_7s.jpg
common_anode_7s.jpg (30.26 KiB) Viewed 2604 times
sagit
 
Posts: 1
Joined: 07 Feb 2018, 15:16

support RuneAudio Donate with PayPal

Return to Raspberry Pi

Who is online

Users browsing this forum: Bing [Bot] and 9 guests