今兒學堂裡歡聲一片,一因聽聞學長身體無礙,只需休息長養。更因明天是 飛 龍 祭,巧逢夏至節,連假三天。現今稱之端午節, 艾節, 蒲節。傳聞夏暑蒸炎之季,五 毒── 蛇、蠍、壁虎、蜈蚣、蟾蜍 ── 醒,以重五為 惡日,是為重午之五月節也。將 飛龍在天之際, 朱雀 舞於庭之時,反為五毒苦。恐怕物極必反,萬物生死有其《 》數。《 》典講︰河洛理數,各有其性。東方木三、八,南方火二、七,是為生長四季數。四季何謂也?三三,九;三九,【二】七;三七,【二】一。三一,三。二二,四;二四,八;二八,【一】六;二六,【一】二。四季循環也。西方金四、九,是為陰陽死生之數。陰陽死生何謂也?四四,【一】六;四六,【二】四 。九九,【八】一;九一,九。奇偶陰陽相依也。北方水一、六,是為不動數。不動何謂也?太一生水,天道也。一一,為一;六六 ,【三】是六。中央黃土五,五五相守,順天應時,不改其衷,是以萬物生生,各有其時。
,天何言哉!天何言哉!!低頭吟
,也難訴情懷。
大掃除,完成後,繼續上課。
△ 怎麼都沒『小豆豆』 DP 的身影,可能太小了,看不到吧!
已補足。
△ 藍四 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()
《韓愈‧師說》
古之學者必有師。師者,所以傳道、受業、解惑也。人非生而知之者,孰能無惑?惑而不從師,其為惑也,終不解矣。
,誠是難能!!