-6

I am a beginner with raspberry pi and python, and I’m building an alarm clock project. Can anyone tell me how to write a script to call on all of the other scripts. For example, I have three scripts on my raspberry pi called LCDTESTFORPI.py, another called “ex_7segmentLED.py” and a third called “alarmpi.py”. What I would like is to be able to run a script called “alarmpi_init.py” which would run all of the other scripts, and could then be set to run on startup. I know it is possible I just don’t know how to write it. Just to clarify this is designed to run on a raspberry pi 3 model B Thanks

Again to clarify, I am a beginner here, and whilst some might think this is not the right place, I'm just asking for help. If you do have any comments about this being in the wrong place, please hold off for this one comment, after that I am sure your universe will be returned to stability. I apologise for causing so much upset.

Below is a copy of the codes mentioned:

LCDTESTFORPI.py

    #!/usr/bin/python
#
# HD44780 20x4 RGB LCD Test Script for
# Raspberry Pi
# 
# Adapted by: Kyle Prier
# Site: http://wwww.youtube.com/meistervision
# 
# Original Author : Matt Hawkins
# Site   : http://www.raspberrypi-spy.co.uk/
# 
# Date   : 09/08/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

# Define GPIO to LCD mapping
LCD_RS = 25
LCD_E  = 24
LCD_D4 = 23
LCD_D5 = 17
LCD_D6 = 27
LCD_D7 = 22


# 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.0005
E_DELAY = 0.0005

daynames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

def ordinal(value):
    try:
        value = int(value)
    except ValueError:
        return value

    if value % 100//10 != 1:
        remainder = value % 10
        if remainder == 1:
            ordval = u"%d%s" % (value, "st")
        elif remainder == 2:
            ordval = u"%d%s" % (value, "nd")
        elif remainder  == 3:
            ordval = u"%s%s" % (value, "rd")
        else:
            ordval = u"%d%s" % (value, "th")
    else:
        ordval = u"%d%s" % (value, "th")
    return ordval

def main():
  # Main program block
  GPIO.setwarnings(False)
  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

  # Initialise display
  lcd_init()


  # Send some centred test
  lcd_byte(LCD_LINE_1, LCD_CMD)
  lcd_string("--------------------",2) 
  lcd_byte(LCD_LINE_2, LCD_CMD)
  lcd_string("AlarmPi Mk2",2)
  lcd_byte(LCD_LINE_3, LCD_CMD)
  lcd_string("Starting up...",2)
  lcd_byte(LCD_LINE_4, LCD_CMD)
  lcd_string("--------------------",2)    

  time.sleep(5) # 5 second delay 

  while True:
    lcd_byte(LCD_LINE_1, LCD_CMD)
    lcd_string("Wakey Wakey!",2)
    lcd_byte(LCD_LINE_2, LCD_CMD)
    lcd_string(time.strftime("%H:%M:%S"),2)  
    lcd_byte(LCD_LINE_3, LCD_CMD)
    day_index = int(time.strftime("%w"))
    lcd_string(daynames[day_index],2) 
    lcd_byte(LCD_LINE_4, LCD_CMD)
    mon_index = int(time.strftime("%m"))
    lcd_string(ordinal(int(time.strftime("%d"))) + " " + monthnames[mon_index] + " " + time.strftime("%Y"),2)
    time.sleep(1)

  time.sleep(30) # 30 second delay 

  # Clear display
  lcd_byte(LCD_LINE_1, LCD_CMD)
  lcd_string("",3)
  lcd_byte(LCD_LINE_2, LCD_CMD)
  lcd_string("",3)  
  lcd_byte(LCD_LINE_3, LCD_CMD)
  lcd_string("",2) 
  lcd_byte(LCD_LINE_4, LCD_CMD)
  lcd_string("",2)    

  time.sleep(3) # 3 second delay  


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()

GPIO.cleanup()

Here is a copy of the ex_7segmentclock.py

#!/usr/bin/python

import time
import datetime

from Adafruit_LED_Backpack import SevenSegment

# ===========================================================================
# Clock Example
# ===========================================================================
segment = SevenSegment.SevenSegment(address=0x70)

# Initialize the display. Must be called once before using the display.
segment.begin()

print "Press CTRL+Z to exit"

# Continually update the time on a 4 char, 7-segment display
while(True):
  now = datetime.datetime.now()
  hour = now.hour
  minute = now.minute
  second = now.second

  segment.clear()
  # Set hours
  segment.set_digit(0, int(hour / 10))     # Tens
  segment.set_digit(1, hour % 10)          # Ones
  # Set minutes
  segment.set_digit(2, int(minute / 10))   # Tens
  segment.set_digit(3, minute % 10)        # Ones
  # Toggle colon
  segment.set_colon(second % 2)              # Toggle colon at 1Hz

  # Write the display buffer to the hardware.  This must be called to
  # update the actual display LEDs.
  segment.write_display()

  # Wait a quarter second (less than 1 second to prevent colon blinking getting$
  time.sleep(0.25)

Unfortunately I cannot get the other two code files to open as one is a .config file and the other is currently running from a device in a different part of the country. But the two code files shown are the two I would like to work with for this post.

Again thank you very much to all who have helped with this, you are wonderful people!

Will

closed as off-topic by Steve Robillard, joan, Ghanima Oct 15 '17 at 8:46

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "This question does not appear to be specific to the Raspberry Pi within the scope defined in the help center." – Steve Robillard, joan, Ghanima
If this question can be reworded to fit the rules in the help center, please edit the question.

  • Comments are not for extended discussion; this conversation has been moved to chat. The post is now closed as it has been cross-posted on StackOverflow. – Ghanima Oct 15 '17 at 8:46
0

Not good practice, you should write them all together as functions ect but if your other scripts have not functions ect...then..

#!/usr/bin/python

import os
os.system("./another_script.py")

Read up on os.system

  • Thanks for your quick response! If I show you the codes I have, could you give me an example of how to do it in a "good practice" way. I will however also look into os.system thanks! @Dr.Rabbit – Will Marks Oct 14 '17 at 9:55
  • Below is a link to a dropbox file with the codes dropbox.com/sh/gsx60a5snfkrhmk/AAAK2WexdMg_h8isxmWnKi7Ga?dl=0 – Will Marks Oct 14 '17 at 10:48
  • 1
    @WillMarks these details belong in your question, not in the comments (as external links). The site has features to include and properly format your code. – Steve Robillard Oct 14 '17 at 11:23
  • @SteveRobillard thanks for the advice Steve I’ll edit to fix – Will Marks Oct 14 '17 at 11:25

Not the answer you're looking for? Browse other questions tagged or ask your own question.