Keresés

Új hozzászólás Aktív témák

  • tomas01

    aktív tag

    válasz UsagiYojimbo #5891 üzenetére

    Itt merre találom ?

    # Define some device constants
    LCD_WIDTH = 16 # Maximum characters per line
    LCD_CHR = True
    LCD_CMD = False

    LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
    LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line

    # Timing constants
    E_PULSE = 0.00005
    E_DELAY = 0.00005

    def main():
    # Main program block

    GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbers
    GPIO.setup(LCD_E, GPIO.OUT) # E
    GPIO.setup(LCD_RS, GPIO.OUT) # RS
    GPIO.setup(LCD_D4, GPIO.OUT) # DB4
    GPIO.setup(LCD_D5, GPIO.OUT) # DB5
    GPIO.setup(LCD_D6, GPIO.OUT) # DB6
    GPIO.setup(LCD_D7, GPIO.OUT) # DB7

    GPIO.setup(NEXT, GPIO.IN) # Next Channel button
    GPIO.setup(PREV, GPIO.IN) # Previous Channel button

    # Initialise display
    lcd_init()
    # Send some test
    lcd_byte(LCD_LINE_1, LCD_CMD)
    lcd_string("Internet Radio",2)
    lcd_byte(LCD_LINE_2, LCD_CMD)
    lcd_string("+Timo+",2)

    time.sleep(4)
    os.system("mpc play")
    currstation = "NOSTATION"
    StartTime = datetime.datetime.now()
    Now = datetime.datetime.now()
    CrawlTime = 0

    while 1:
    if ( GPIO.input(NEXT) == True):
    os.system("mpc next")
    time.sleep(2)
    os.system("mpc play")
    if ( GPIO.input(PREV) == True):
    os.system("mpc prev")
    time.sleep(2)
    os.system("mpc play")

    f=os.popen("mpc current")
    station = ""
    for i in f.readlines():
    station += i

    if currstation != station:
    print("Different Station")
    currstation = station
    StartTime = datetime.datetime.now()
    maxLength = len(station)
    CurrPos = 19

    Now = datetime.datetime.now()
    PlayTime = Now-StartTime
    # Send some text
    #print("Current: " + station)
    lcd_byte(LCD_LINE_1, LCD_CMD)
    lcd_string(station,1)
    lcd_byte(LCD_LINE_2, LCD_CMD)
    #lcd_string("",1)

    if CrawlTime==17:
    lcd_string(station[CurrPos:],1)
    CurrPos = CurrPos + 1
    CrawlTime=0
    if CurrPos == maxLength:
    CurrPos = 0

    CrawlTime = CrawlTime + 1
    time.sleep(20)

    def lcd_init():
    # Initialise display
    lcd_byte(0x33,LCD_CMD)
    lcd_byte(0x32,LCD_CMD)
    lcd_byte(0x28,LCD_CMD)
    lcd_byte(0x0C,LCD_CMD)
    lcd_byte(0x06,LCD_CMD)
    lcd_byte(0x01,LCD_CMD)

    def lcd_string(message,style):
    # Send string to display
    # style=1 Left justified
    # style=2 Centred
    # style=3 Right justified

    if style==1:
    message = message.ljust(LCD_WIDTH," ")
    elif style==2:
    message = message.center(LCD_WIDTH," ")
    elif style==3:
    message = message.rjust(LCD_WIDTH," ")

    for i in range(LCD_WIDTH):
    lcd_byte(ord(message),LCD_CHR)

    def lcd_byte(bits, mode):
    # Send byte to data pins
    # bits = data
    # mode = True for character
    # False for command

    GPIO.output(LCD_RS, mode) # RS

    # High bits
    GPIO.output(LCD_D4, False)
    GPIO.output(LCD_D5, False)
    GPIO.output(LCD_D6, False)
    GPIO.output(LCD_D7, False)
    if bits&0x10==0x10:
    GPIO.output(LCD_D4, True)
    if bits&0x20==0x20:
    GPIO.output(LCD_D5, True)
    if bits&0x40==0x40:
    GPIO.output(LCD_D6, True)
    if bits&0x80==0x80:
    GPIO.output(LCD_D7, True)

    # Toggle 'Enable' pin
    time.sleep(E_DELAY)
    GPIO.output(LCD_E, True)
    time.sleep(E_PULSE)
    GPIO.output(LCD_E, False)
    time.sleep(E_DELAY)

    # Low bits
    GPIO.output(LCD_D4, False)
    GPIO.output(LCD_D5, False)
    GPIO.output(LCD_D6, False)
    GPIO.output(LCD_D7, False)
    if bits&0x01==0x01:
    GPIO.output(LCD_D4, True)
    if bits&0x02==0x02:
    GPIO.output(LCD_D5, True)
    if bits&0x04==0x04:
    GPIO.output(LCD_D6, True)
    if bits&0x08==0x08:
    GPIO.output(LCD_D7, True)

    # Toggle 'Enable' pin
    time.sleep(E_DELAY)
    GPIO.output(LCD_E, True)
    time.sleep(E_PULSE)
    GPIO.output(LCD_E, False)
    time.sleep(E_DELAY)

    if __name__ == '__main__':
    main()

Új hozzászólás Aktív témák

Hirdetés