Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Internet radio script
#1
Halo to all you good people.
I got a raspberry pi Zero and i am trying to make an internet radio, following a tutorial but i am stuck with the python code. when i try to run it i get the following message:

"pi@raspberrypi:~/Projects/Radio $ sudo python radio.py
File "radio.py", line 96
time.sleep(1)
^
IndentationError: unexpected indent"


here is the code from the tutorial:

	
#!/usr/bin/python
#
# Script for Raspberry Pi Internet Radio
# 
# Author: Kyle Prier
# Site: http://wwww.youtube.com/meistervision
# 
# LCD author : Matt Hawkins
# Site   : http://www.raspberrypi-spy.co.uk/
# 
# Date   : 10/01/2012
#
 
# The wiring for the LCD is as follows:
# 1 : GND
# 2 : 5V
# 3 : Contrast (0-5V)*
# 4 : RS (Register Select)
# 5 : R/W (Read Write)       - GROUND THIS PIN! We do not want the LCD to send anything to the Pi @ 5v
# 6 : Enable or Strobe
# 7 : Data Bit 0             - NOT USED
# 8 : Data Bit 1             - NOT USED
# 9 : Data Bit 2             - NOT USED
# 10: Data Bit 3             - NOT USED
# 11: Data Bit 4
# 12: Data Bit 5
# 13: Data Bit 6
# 14: Data Bit 7
# 15: LCD Backlight +5V
# 16: LCD Backlight GND (Red)
# 17: LCD Backlight GND (Green)
# 18: LCD Backlight GND (Blue)
 
#import
import RPi.GPIO as GPIO
import time
import os
 
# Define GPIO to LCD mapping
LCD_RS = 26
LCD_E  = 19
LCD_D4 = 13
LCD_D5 = 6
LCD_D6 = 5
LCD_D7 = 11
 
# Defomte GPIO for Radio Controls
NEXT = 24
PREV = 4
 
# Define some device constants
LCD_WIDTH = 20    # 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
LCD_LINE_3 = 0x94 # LCD RAM address for the 3rd line
LCD_LINE_4 = 0xD4 # LCD RAM address for the 4th 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("Raspberry Pi",2)
  lcd_byte(LCD_LINE_2, LCD_CMD)
  lcd_string("Internet Radio",2)
  lcd_byte(LCD_LINE_3, LCD_CMD)
  lcd_string("by",2)
  lcd_byte(LCD_LINE_4, LCD_CMD)
  lcd_string("Meister Vision", 2)    
  time.sleep(4) 
  os.system("mpc play")
  while 1:
      if ( GPIO.input(NEXT) == True):    
        os.system("mpc next")
            time.sleep(1)
        os.system("mpc play")
             
      if ( GPIO.input(PREV) == True):
        os.system("mpc prev")
            time.sleep(1)
        os.system("mpc play")
       
 
      f=os.popen("mpc current")
      station = ""
      for i in f.readlines():
        station += i
      # Send some text
      lcd_byte(LCD_LINE_1, LCD_CMD)
      lcd_string(station,1)
      lcd_byte(LCD_LINE_2, LCD_CMD)
      lcd_string("",1)
          lcd_byte(LCD_LINE_3, LCD_CMD)
      lcd_string("",1)
      lcd_byte(LCD_LINE_4, LCD_CMD)
          lcd_string("",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[i]),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()


i am a total new to python and i would appreciate your help.

thank you all and best regards
Reply
#2
you have unwanted spaces on lines (96, 101, 114, 117)

is this better?

     
#!/usr/bin/python
#
# Script for Raspberry Pi Internet Radio
# 
# Author: Kyle Prier
# Site: http://wwww.youtube.com/meistervision
# 
# LCD author : Matt Hawkins
# Site   : http://www.raspberrypi-spy.co.uk/
# 
# Date   : 10/01/2012
#
  
# The wiring for the LCD is as follows:
# 1 : GND
# 2 : 5V
# 3 : Contrast (0-5V)*
# 4 : RS (Register Select)
# 5 : R/W (Read Write)       - GROUND THIS PIN! We do not want the LCD to send anything to the Pi @ 5v
# 6 : Enable or Strobe
# 7 : Data Bit 0             - NOT USED
# 8 : Data Bit 1             - NOT USED
# 9 : Data Bit 2             - NOT USED
# 10: Data Bit 3             - NOT USED
# 11: Data Bit 4
# 12: Data Bit 5
# 13: Data Bit 6
# 14: Data Bit 7
# 15: LCD Backlight +5V
# 16: LCD Backlight GND (Red)
# 17: LCD Backlight GND (Green)
# 18: LCD Backlight GND (Blue)
  
#import
import RPi.GPIO as GPIO
import time
import os
  
# Define GPIO to LCD mapping
LCD_RS = 26
LCD_E  = 19
LCD_D4 = 13
LCD_D5 = 6
LCD_D6 = 5
LCD_D7 = 11
  
# Defomte GPIO for Radio Controls
NEXT = 24
PREV = 4
  
# Define some device constants
LCD_WIDTH = 20    # 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
LCD_LINE_3 = 0x94 # LCD RAM address for the 3rd line
LCD_LINE_4 = 0xD4 # LCD RAM address for the 4th 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("Raspberry Pi",2)
  lcd_byte(LCD_LINE_2, LCD_CMD)
  lcd_string("Internet Radio",2)
  lcd_byte(LCD_LINE_3, LCD_CMD)
  lcd_string("by",2)
  lcd_byte(LCD_LINE_4, LCD_CMD)
  lcd_string("Meister Vision", 2)    
  time.sleep(4) 
  os.system("mpc play")
  while 1:
      if ( GPIO.input(NEXT) == True):    
        os.system("mpc next")
        time.sleep(1)
        os.system("mpc play")
              
      if ( GPIO.input(PREV) == True):
        os.system("mpc prev")
        time.sleep(1)
        os.system("mpc play")
        
  
      f=os.popen("mpc current")
      station = ""
      for i in f.readlines():
        station += i
      # Send some text
      lcd_byte(LCD_LINE_1, LCD_CMD)
      lcd_string(station,1)
      lcd_byte(LCD_LINE_2, LCD_CMD)
      lcd_string("",1)
      lcd_byte(LCD_LINE_3, LCD_CMD)
      lcd_string("",1)
      lcd_byte(LCD_LINE_4, LCD_CMD)
      lcd_string("",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[i]),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()
Reply
#3
do you have the original code? was it required to edit this code or did you choose to do so on your own?
Tradition is peer pressure from dead people

What do you call someone who speaks three languages? Trilingual. Two languages? Bilingual. One language? American.
Reply
#4
(Jul-13-2018, 08:08 PM)Axel_Erfurt Wrote: you have unwanted spaces on lines (96, 101, 114, 117)

is this better?

well i don't get the error code anymore and when i run the program it starts playing my added internet radio stations (3 stations added so far) but it plays every station for 2 sec and then skips to the next and then loops them...

(Jul-13-2018, 08:51 PM)Skaperen Wrote: do you have the original code? was it required to edit this code or did you choose to do so on your own?
i have the original code but the only changes made are in the gpio used for lcd and 2 buttons
Code from tutorial

# Define GPIO to LCD mapping
LCD_RS = 25
LCD_E  = 24
LCD_D4 = 23
LCD_D5 = 17
LCD_D6 = 21
LCD_D7 = 22
 
# Defomte GPIO for Radio Controls
NEXT = 18
PREV = 4

changed to

# Define GPIO to LCD mapping
LCD_RS = 26
LCD_E  = 19
LCD_D4 = 13
LCD_D5 = 6
LCD_D6 = 5
LCD_D7 = 11
   
# Defomte GPIO for Radio Controls
NEXT = 24
PREV = 4
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  No Internet connection when running a Python script basil_555 8 581 Mar-11-2024, 11:02 AM
Last Post: snippsat
  Looping over radio buttons garynewport 8 2,269 Jan-10-2023, 10:56 AM
Last Post: garynewport
  check if a file exist on the internet and get the size kucingkembar 6 1,760 Apr-16-2022, 05:09 PM
Last Post: kucingkembar
  Check internet speed ebolisa 1 1,768 Oct-29-2020, 08:09 PM
Last Post: Larz60+
  packet radio communication EmpireAndrew 1 2,185 Nov-01-2019, 06:35 PM
Last Post: micseydel
  twisted.internet.error.ConnectionLost phob0s 0 3,765 May-23-2018, 12:57 PM
Last Post: phob0s
  Need help in Python script to BIND with OID(Oracle Internet Directory) Server kiran_j 0 3,228 Nov-30-2017, 06:23 AM
Last Post: kiran_j
  Download file from Internet Tribunal 1 2,771 Oct-11-2017, 06:03 PM
Last Post: Larz60+
  tkinter - Make circle for radio button bigger Raptor88 5 14,173 Mar-07-2017, 12:13 PM
Last Post: metulburr

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020