2017-10-14 18 views
0

私は目覚まし時計プロジェクトを構築しています。他のすべてのスクリプトを呼び出すスクリプトを書く方法を教えてもらえますか?たとえば、ラズベリーのpiにはLCDTESTFORPI.pyという3つのスクリプトがあり、別のスクリプトは「ex_7segmentLED.py」、もう1つは「alarmpi.py」です。私が望むのは、 "alarmpi_init.py"というスクリプトを実行できるようにすることです。これは、他のすべてのスクリプトを実行し、起動時に実行するように設定できます。それを書く方法が分からない可能性があることは分かっています。Pythonで複数のスクリプトを実行するためのスクリプトを書く

以前は、これらのすべてを1つのスクリプトの機能に入れて正しい形式を使用するのではなく、これを行う方法がわからないことが示唆されています。以下は

言及したコードのコピーです:

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

は、残念ながら、私は、他の2つを取得することはできません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) 

のコピーです1つは.configファイルであり、もう1つは現在、国の異なる地域にあるデバイスから実行されているため、開くべきコードファイルです。しかし、表示されている2つのコードファイルは、私がこのポストで作業したい2つのファイルです。

+0

@downvoters: –

+0

@ Nashaナッシャさんにとても親切に感謝します - 前に申し訳ありません! –

答えて

0

すべてのファイルが同じディレクトリに存在する場合、これはalarmpi_init.pyの可能な実装が考えられます。

import LCDTESTFORPI 
LCDTESTFORPI.main() 

import ex_7segmentLED 
import alarmpi 

これは、そのために、すべての3つのスクリプトを実行します。 if __name__ == '__main__'のスクリプトでは、mainメソッドを明示的に呼び出す必要がありますが、このセクションのないスクリプトはスクリプトなしで動作することに注意してください。

#!/bin/bash 
cd /my/working/directory/ 
./script1.py # you can add arguments space separated. 
./script2.py 
./script3.py 
0

はあなたと alarm_init.shと呼ばれるファイルを作成するような何かをしようとしなかった最後に強くラズベリーパイSEからなるよう提案された後、ここに彼のメッセージを掲載しているマークスます。ですからもう一度制裁して助けてください!
関連する問題