M♪o 之學習筆記本《辰》組元︰【䷓】盥而不荐

派生碼訊

辰 龍

觀:盥而不荐,有孚顒若。

彖曰:大觀在上,順而巽,中正以觀天下。觀,盥而不荐,有孚顒若,下觀而化也。 觀天之神道,而四時不忒, 聖人以神道設教,而天下服矣。

象曰:風行地上,觀﹔先王以省方,觀民設教。

︰《 文 》文說︰ 盥 盥,澡手也。从 臼 水臨皿。《春秋傳》曰:奉匜沃盥。 荐 荐, 薦 薦蓆也。从艸,存聲。

觀 觀在上, 祭 祭天也。神道設教,下 觀 觀化民也。昔時孔子喜觀灌酒請神之 盥 盥禮,不欲觀獻牲之 薦 荐儀,此所謂 觀 觀之大者耶!

今兒學堂裡歡聲一片,一因聽聞學長身體無礙,只需休息長養。更因明天是 飛龍祭 祭,巧逢夏至節,連假三天。現今稱之端午節, 艾 艾節, 蒲蒲節。傳聞夏暑蒸炎之季,五 毒 毒── 蛇、蠍、壁虎、蜈蚣、蟾蜍 ── 醒,以重五為 惡 惡日,是為重午之五月節也。將 飛 龍 飛龍在天之際, 朱 雀 朱雀 舞 舞於庭之時,反為五毒苦。恐怕物極必反,萬物生死有其《 數 》數。《 典 》典講︰河洛理數,各有其性。東方木三、八,南方火二、七,是為生長四季數。四季何謂也?三三,九;三九,【二】七;三七,【二】一。三一,三。二二,四;二四,八;二八,【一】六;二六,【一】二。四季循環也。西方金四、九,是為陰陽死生之數。陰陽死生何謂也?四四,【一】六;四六,【二】四 。九九,【八】一;九一,九。奇偶陰陽相依也。北方水一、六,是為不動數。不動何謂也?太一生水,天道也。一一,為一;六六 ,【三】是六。中央黃土五,五五相守,順天應時,不改其衷,是以萬物生生,各有其時。

,天何言哉!天何言哉!!低頭吟

安石榴

咏鄰女東窗海石榴‧李白

魯女東窗下,海榴世所稀。

珊瑚映綠水,未足比光輝。

清香隨風發,落日好鳥歸。

願為東南枝,低舉拂羅衣。

無由共攀折,引領望金扉。

,也難訴情懷。

 

長 長︰同學們請安靜。為迎接明天的飛龍祭,早上舉行

大掃除,完成後,繼續上課。

 

派︰大掃除,休課。

 

生 ︰昨日會習摘要之資料準備與整理︰

△ 怎麼都沒『小豆豆』 DP 的身影,可能太小了,看不到吧!

已補足。

 

△ 藍四 LED 為什麼會亮?難道不能關掉嗎?

《 圖 》圖說︰

IMG_0633b

藍光LED

依圖將四顆藍光 LED 關掉。

 

△ 顯示的『符號』,應該編個『字典』才好。

需再議。有許多『無名』的符號之故。

 

△最好做成『模組』,才可以 import 進口。

請閱讀《 網 》網文︰

6. Modules

If you quit from the Python interpreter and enter it again, the definitions you have made (functions and variables) are lost. Therefore, if you want to write a somewhat longer program, you are better off using a text editor to prepare the input for the interpreter and running it with that file as input instead. This is known as creating a script. As your program gets longer, you may want to split it into several files for easier maintenance. You may also want to use a handy function that you’ve written in several programs without copying its definition into each program.

To support this, Python has a way to put definitions in a file and use them in a script or in an interactive instance of the interpreter. Such a file is called a module; definitions from a module can be imported into other modules or into the main module (the collection of variables that you have access to in a script executed at the top level and in calculator mode).

A module is a file containing Python definitions and statements. The file name is the module name with the suffix .py appended. Within a module, the module’s name (as a string) is available as the value of the global variable __name__. For instance, use your favorite text editor to create a file called fibo.py in the current directory with the following contents:

……

, 以及參考試作的例子,討論模組的規劃和內容。

 

△  數碼管的顯示應當使用『獨立』執行緒,比較好『應用』。

◎ 數碼管速度測試二(0.005),雖然視覺暫留『效果』很好,但是 5 毫秒『太耗時』,或許該研究『改善』辦法。

尚需一併集思廣益。若以略例觀之,恐會發生競奪,而且程式結束時不能停止執行緒。此處所用的隱藏功能『數碼緒._stop() 』實非善法。

 

碼 ︰會 習 。☿ 長 長︰沒想大掃除後,時後已這樣晚了 ,就請同學們參照會習摘要之資料,以及下面的參考程式,我們在連假之後繼續研習。還請大家記得,假後要交 TPG Calc.py 中文化的家習作業。最後,祝願同學們佳節快樂。下課。

 

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 加載所需程式庫
import RPi.GPIO as GPIO
from time import sleep
import random
import threading

# 選擇 BCM 編號制
GPIO.setmode(GPIO.BCM)

# 採用負邏輯

四位數碼管位選一 = 17
四位數碼管位選二 = 27
四位數碼管位選三 = 22
四位數碼管位選四 = 10

# 數碼管
LEDA = 21
LEDB = 16
LEDC = 19
LEDD = 6
LEDE = 5
LEDF = 20
LEDG = 26
LEDH = 13

滅 = 關 = GPIO.HIGH
亮 = 開 = GPIO.LOW

# 關閉藍色 LED

藍一LED = 5
藍二LED = 6
藍三LED = 13
藍四LED = 19

# 初始態

GPIO.setup(四位數碼管位選一, GPIO.OUT, initial=關)
GPIO.setup(四位數碼管位選二, GPIO.OUT, initial=關)
GPIO.setup(四位數碼管位選三, GPIO.OUT, initial=關)
GPIO.setup(四位數碼管位選四, GPIO.OUT, initial=關)

GPIO.setup(LEDA, GPIO.OUT, initial=滅)
GPIO.setup(LEDB, GPIO.OUT, initial=滅)
GPIO.setup(LEDC, GPIO.OUT, initial=滅)
GPIO.setup(LEDD, GPIO.OUT, initial=滅)
GPIO.setup(LEDE, GPIO.OUT, initial=滅)
GPIO.setup(LEDF, GPIO.OUT, initial=滅)
GPIO.setup(LEDG, GPIO.OUT, initial=滅)
GPIO.setup(LEDH, GPIO.OUT, initial=滅)

GPIO.setup(藍一LED, GPIO.OUT, initial=滅)
GPIO.setup(藍二LED, GPIO.OUT, initial=滅)
GPIO.setup(藍三LED, GPIO.OUT, initial=滅)
GPIO.setup(藍四LED, GPIO.OUT, initial=滅)

def 數碼管圖像測試():
    GPIO.output(四位數碼管位選一, 開)
    GPIO.output(四位數碼管位選二, 開)
    GPIO.output(四位數碼管位選三, 開)
    GPIO.output(四位數碼管位選四, 開)
    for 段一 in [亮, 滅]:
        for 段二 in [亮, 滅]:
            for 段三 in [亮, 滅]:
                for 段四 in [亮, 滅]:
                    for 段五 in [亮, 滅]:
                        for 段六 in [亮, 滅]:
                            for 段七 in [亮, 滅]:

                                GPIO.output(LEDA, 段一)
                                GPIO.output(LEDB, 段二)
                                GPIO.output(LEDC, 段三)
                                GPIO.output(LEDD, 段四)
                                GPIO.output(LEDE, 段五)
                                GPIO.output(LEDF, 段六)
                                GPIO.output(LEDG, 段七)
                                sleep(0.5)

    GPIO.output(四位數碼管位選一, 關)
    GPIO.output(四位數碼管位選二, 關)
    GPIO.output(四位數碼管位選三, 關)
    GPIO.output(四位數碼管位選四, 關)

# 

def 數碼管速度測試一():
    計次 = 0

    while 計次 < 500 :
        計次 += 1

        for 單元 in range(1,5):
            if 單元 == 1 :
                GPIO.output(四位數碼管位選一, 開)
                GPIO.output(LEDA, 滅)
                GPIO.output(LEDB, 亮)
                GPIO.output(LEDC, 亮)
                GPIO.output(LEDD, 滅)
                GPIO.output(LEDE, 滅)
                GPIO.output(LEDF, 滅)
                GPIO.output(LEDG, 滅)
                sleep(0.005)
                GPIO.output(四位數碼管位選一, 關)

            if 單元 == 2 :
                GPIO.output(四位數碼管位選二, 開)
                GPIO.output(LEDA, 亮)
                GPIO.output(LEDB, 亮)
                GPIO.output(LEDC, 滅)
                GPIO.output(LEDD, 亮)
                GPIO.output(LEDE, 亮)
                GPIO.output(LEDF, 滅)
                GPIO.output(LEDG, 亮)
                sleep(0.005)
                GPIO.output(四位數碼管位選二, 關)

            if 單元 == 3 :
                GPIO.output(四位數碼管位選三, 開)
                GPIO.output(LEDA, 亮)
                GPIO.output(LEDB, 亮)
                GPIO.output(LEDC, 亮)
                GPIO.output(LEDD, 亮)
                GPIO.output(LEDE, 滅)
                GPIO.output(LEDF, 滅)
                GPIO.output(LEDG, 亮)
                sleep(0.005)
                GPIO.output(四位數碼管位選三, 關)

            if 單元 == 4 :
                GPIO.output(四位數碼管位選四, 開)
                GPIO.output(LEDA, 滅)
                GPIO.output(LEDB, 亮)
                GPIO.output(LEDC, 亮)
                GPIO.output(LEDD, 滅)
                GPIO.output(LEDE, 滅)
                GPIO.output(LEDF, 亮)
                GPIO.output(LEDG, 亮)
                sleep(0.005)
                GPIO.output(四位數碼管位選四, 關)

        sleep(0.02)


def 數碼管速度測試二(遲延):
    計次 = 0
    數碼管 = [LEDA, LEDB, LEDC, LEDD, LEDE, LEDF, LEDG]
    while 計次 < 500 :
        計次 += 1

        for 單元 in range(1,5):
            if 單元 == 1 :
                GPIO.output(四位數碼管位選一, 開)
                GPIO.output(數碼管, (滅, 亮, 亮, 滅, 滅, 滅, 滅))
                sleep(0.005)
                GPIO.output(四位數碼管位選一, 關)

            if 單元 == 2 :
                GPIO.output(四位數碼管位選二, 開)
                GPIO.output(數碼管, (亮, 亮, 滅, 亮, 亮, 滅, 亮))
                sleep(0.005)
                GPIO.output(四位數碼管位選二, 關)

            if 單元 == 3 :
                GPIO.output(四位數碼管位選三, 開)
                GPIO.output(數碼管, (亮, 亮, 亮, 亮, 滅, 滅, 亮))
                sleep(0.005)
                GPIO.output(四位數碼管位選三, 關)

            if 單元 == 4 :
                GPIO.output(四位數碼管位選四, 開)
                GPIO.output(數碼管, (滅, 亮, 亮, 滅, 滅, 亮, 亮))
                sleep(0.005)
                GPIO.output(四位數碼管位選四, 關)

        sleep(遲延)

def 數碼管測試():
    數碼管 = [LEDA, LEDB, LEDC, LEDD, LEDE, LEDF, LEDG, LEDH]

    GPIO.output(四位數碼管位選一, 開)
    GPIO.output(四位數碼管位選二, 開)
    GPIO.output(四位數碼管位選三, 開)
    GPIO.output(四位數碼管位選四, 開)

    GPIO.output(數碼管, (亮, 亮, 亮, 亮, 亮, 亮, 亮, 亮))
    sleep(1)
    GPIO.output(數碼管, (滅, 滅, 滅, 滅, 滅, 滅, 滅, 滅))

    GPIO.output(四位數碼管位選一, 關)
    GPIO.output(四位數碼管位選二, 關)
    GPIO.output(四位數碼管位選三, 關)
    GPIO.output(四位數碼管位選四, 關)

數碼賦值 = [(滅, 亮, 亮, 滅, 滅, 滅, 滅, 滅), (亮, 亮, 滅, 亮, 亮, 滅, 亮, 滅), (亮, 亮, 亮, 亮, 滅, 滅, 亮, 滅),  (滅, 亮, 亮, 滅, 滅, 亮, 亮, 滅)

遲延 = 0.00

def 數碼管執行緒():
    global 數碼賦值
    global 遲延

    數碼管 = [LEDA, LEDB, LEDC, LEDD, LEDE, LEDF, LEDG, LEDH]

    while True :

        for 單元 in range(0,4):
            if 單元 == 0 :
                GPIO.output(四位數碼管位選一, 開)
                GPIO.output(數碼管, 數碼賦值[單元])
                sleep(0.005)
                GPIO.output(四位數碼管位選一, 關)

            if 單元 == 1 :
                GPIO.output(四位數碼管位選二, 開)
                GPIO.output(數碼管, 數碼賦值[單元])
                sleep(0.005)
                GPIO.output(四位數碼管位選二, 關)

            if 單元 == 2 :
                GPIO.output(四位數碼管位選三, 開)
                GPIO.output(數碼管, 數碼賦值[單元])
                sleep(0.005)
                GPIO.output(四位數碼管位選三, 關)

            if 單元 == 3 :
                GPIO.output(四位數碼管位選四, 開)
                GPIO.output(數碼管, 數碼賦值[單元])
                sleep(0.005)
                GPIO.output(四位數碼管位選四, 關)

        sleep(遲延)

if __name__ == "__main__":

    數碼管測試()

    數碼管速度測試一()

    sleep(3)

    數碼管速度測試二(0.02)

    sleep(3)

    數碼管速度測試二(0.01)

    sleep(3)

    數碼管速度測試二(0.005)

    數碼管圖像測試()


    數碼緒 = threading.Thread(name="數碼", target=數碼管執行緒)

    數碼緒.start()

    sleep(1)

    for i in range(100):
        print(i, end = " ")
    print()

    數碼賦值 = [(亮, 亮, 亮, 亮, 滅, 滅, 亮, 亮), (滅, 亮, 亮, 滅, 滅, 滅, 滅, 滅), (滅, 亮, 亮, 滅, 滅, 亮, 亮, 滅),  (亮, 亮, 滅, 亮, 亮, 滅, 亮, 滅)
]

    for i in range(100):
        print(i, end = " ")
    print()

    計數 = 0

    while 計數 < 1001 :
        計數 += 1
        print(計數, end=";")
        sleep(0.005)

    print()

    數碼緒._stop()

    GPIO.cleanup()


 

訊 ☿ 易地而處,乃今思之,

《韓愈‧師說

古之學者必有師。師者,所以傳道、受業、解惑也。人非生而知之者,孰能無惑?惑而不從師,其為惑也,終不解矣。

,誠是難能!!