M♪o 之學習筆記本《辰》組元︰【䷋】有命無咎

派生碼訊

辰 龍

否:否之匪人,不利君子貞,大往小來。

彖曰:否之匪人,不利君子貞。 大往小來, 則是天地不交,而萬物不通也﹔上下不交,而天下無邦也。內陰而外陽,內柔而外剛,內小人而外君子。 小人道長,君子道消也。

象曰:天地不交,否﹔君子以儉德辟難,不可榮以祿。

︰今天學堂氣氛低迷,停課之傳聞不斷。一時學堂先生來了,說道︰昨兒突然停課,只因學長自登南極冰山,不幸遇上了冰崩,滑落冰谷,現已獲救。然而兩地言語障礙,昨兒特派了另一名學長前往關心了解實況,或許稍晚將會有新的消息。同學們不要胡亂臆測,議論紛紛。雖然現下人力吃緊,又將臨暑休,這課還是要上的。學長的建議,以及徵詢了 M♪o 的同意,今後的課堂, M♪o 將協助教學。此事甚好, M♪o 既已通過了大學堂的應試,正好能 教學 學相長,實在是美事一樁,兩相得宜。……

乾 ䷀ 陽純陽,氣動直上,坤 ䷁ 陰純陰,質聚往下。在上者直上,聚下者往下,豈又能 交 交!何能可『休否』?終能見『其亡其亡,系于苞桑。』??當是時也,

《 易 》易曰︰

九四:有命無咎,疇離祉。

象曰:有命無咎,志行也。

,或許可有命無咎的吧!!

 

長 長︰同學們請安靜。由於事發突然,臨時授命,惟恐力不能勝任,故徵得學堂先生首肯,將『實作』部份改為『會習』,大家一塊參與,互相學習,如是方敢應命。還請同學們幫忙,…【一時掌聲四起】

 

派︰視覺暫留是什麼?《 網 》網上講︰

視覺暫留(英文:Persistence of vision)是光對視網膜所產生的視覺,在光停止作用後,仍保留一段時間的現象,其具體應用是電影的拍攝和放映。原因是由視神經的反應速度造成的,其時值約是1/16秒,對於不同頻率的光有不同的暫留時間。是動畫、電影等視覺媒體形成和傳播的根據。比如:直視太陽數秒後,人眼將殘留一個強光源的影像。我們日常使用的日光燈每秒大約熄滅100餘次,但我們基本感覺不到日光燈的閃動。這都是因為視覺暫留的作用。所以,要達成最基本的視覺暫留效果至少需要10fps(參考視頻的幀率)。

220px-Animhorse

馬不停蹄

窮究者理當知《時間是什麼??》︰

 

300px-GeraniumFlowerUnfurl2

古柏高士

唐‧杜甫古柏行

孔明廟前有老柏,柯如青銅根如石。
霜皮溜雨四十圍,黛色参天二千尺。
君臣已與時際會,樹木猶為人愛惜。
雲来氣接巫峽長,月出寒通雪山白。
憶昨路繞錦亭東,先主武侯同閟宫。
崔嵬枝干郊原古,窈窕丹青户牖空。
落落盤踞雖得地,冥冥孤高多烈風。
扶持自是神明力,正直原因造化功。
大厦如傾要梁棟,萬牛回首丘山重。
不露文章世已惊,未辭翦伐誰能送。
苦心豈免容螻蟻,香葉終經宿鸞鳳。
志士幽人莫怨嗟,古來材大難為用。

時光流影是能夠回頭的嗎?

如果透過『縮時攝影』 Time-lapse photography 來觀看花開日落的世界,是否會覺得時間『如夢似幻』的呢?

那麼『植物的發芽』與『生命的誕生』又該是用著怎麼樣的心情去看待的呢??

論語‧子罕

子在川上曰:逝者如斯夫!不舍晝夜。

 古希臘的哲學家赫拉克利特 Ἡράκλειτος 認為︰

萬物流變
人不能兩次走進同一條河流。

所謂的古典力學是以牛頓三大運動定律為基礎︰

第一定律:假使沒有外力作用,靜者恆靜,動者作等速直線運動。又稱作慣性定律,定義了『慣性座標系』是什麼,以及慣性座標系裡的觀察者

第二定律:在慣性座標系中,物體的加速度,與所受的淨外力成正比。即是 \vec{F} = m \cdot \vec{a} 運動定律,式中的 m 是物體的慣性質量。

第三定律:當兩個物體有交互作用時,彼此間的作用力與反作用力同時發生,大小相等方向相反。\vec{F_{12}} = - \vec{F_{21}}

從古典力學的『時空觀』來看,是物體在時空中產生運動,所以『時間』是運動的『第一義』。 曾經有人以為『第一運動定律』是多餘的,它可以從『第二運動定律』中給定 \vec{F} = 0 就推導出來。其實這是錯誤的觀點,『第一運動定律』的主旨在於定義一類稱作『慣性座標系』中的『觀察者』,而『第二運動定律』是這種『觀察者』實驗中發現 的『自然律』,當然彼此符合。事實上這個觀察者的時空觀,就是古典力學的『時空觀』,一個對所有的『慣性座標系』中的『觀察者』恆定恆速的『時間之流』。由此一個物體的運動軌跡所描述的『事件之流』E_{t_1},E_{t_2},E_{t_3}, \dots, E_{t_n}, \dots, \ t_i < t_j,可由三大運動定律所確定,如果從『相空間』──  位置與動量構成的狀態空間 ──的描述來看,這個物體是擁有當下『狀態記憶』的,所以不論是過去、現在與未來的狀態,才能被『初始狀態』所決定。因為古典力學的運動方程式中時間之流並沒有『方向性』,所以如果讓時間『逆流』── 從當下往過去回朔 ──,就相空間的操作講,就是將 t \mapsto -t。此時彷彿『倒退播放』的影片,那個『打碎的杯子』回到『完好如初』的過去。然而『熱力學』的『』Entropy 卻打破了這個可能的『逆流之夢』,給時間帶來了明確的『方向』── 向前走,永不回頭── 。那麼『』不會和三大運動定律『矛盾』的嗎?由於『』是什麼的研究,以及想解釋『溫度』和『壓力』又是什麼?科學家發現對於一個有大量粒子的系統,那張『相圖』將不但會是密密麻麻的分不清之軌跡,而且那些粒子也將『狀態失憶』,無法記得來時軌跡,此時只能用著『統計』的辦法計算那些平均值。並且假設所有符合『巨觀條件』的『微觀可能狀態』的『機率』是如何如何的,來符合已知的實驗觀測數據。在『理想氣體』的力學研究中,波茲曼 Boltzmann 給出了著名的『假設』︰

S = k (\ln \Omega)

,此處 k 是波茲曼常數,而 \Omega 是『巨觀狀態』下所有可能的『微觀狀態』總數。這將一八六五年德國物理學家克勞修斯 Rudolf Julius Emanuel Clausius 提出的熵的概念︰

在一個可逆性程序裡: \Delta S = \int_L \frac{\delta Q}{T},此處 L 是程序之熱力過程。

解釋的更明白了,『』就是一個系統『混亂程度』的『度量』,它是一個『有增無減』的狀態函數,也開啟了今天的『統計熱力學 』之大門。

 

生 ︰『七段數碼管』因藉七個發光二極體以不同組合來顯示數字而得名,又叫作『七段顯示器』,簡稱『數碼管』。

Seven-segment display

A seven-segment display (SSD), or seven-segment indicator, is a form of electronic display device for displaying decimal numerals that is an alternative to the more complex dot matrix displays.

Seven-segment displays are widely used in digital clocks, electronic meters, basic calculators, and other electronic devices that display numerical information.[1]

Concept and visual structure

85px-Seven_segment_display-animated 220px-7_segment_display_labeled.svg

960px-7-segment.svg

The seven elements of the display can be lit in different combinations to represent the arabic numerals. Often the seven segments are arranged in an oblique (slanted) arrangement, which aids readability. In most applications, the seven segments are of nearly uniform shape and size (usually elongated hexagons, though trapezoids and rectangles can also be used), though in the case of adding machines, the vertical segments are longer and more oddly shaped at the ends in an effort to further enhance readability.

The numerals 6, 7 and 9 may be represented by two or more different glyphs on seven-segment displays, with or without a ‘tail’.

The seven segments are arranged as a rectangle of two vertical segments on each side with one horizontal segment on the top, middle, and bottom. Additionally, the seventh segment bisects the rectangle horizontally. There are also fourteen-segment displays and sixteen-segment displays (for full alphanumerics); however, these have mostly been replaced by dot matrix displays.

The segments of a 7-segment display are referred to by the letters A to G, where the optional DP decimal point (an “eighth segment”) is used for the display of non-integer numbers.[2]

 

△ 詳細介紹可讀《 網 》網文︰

7-segment Display

△ 實習 機 機板的原理 《 圖 》圖︰

數碼管

採用『板子』 Board 編號制。

 

碼 ︰會 習 。☿ 長 長︰同學們,今兒我們就一同研習『數碼管』的控制與顯示問題,下面參考程式,雖倉促而為,不假修飾,就當成討論之起始點。

 

#!/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(藍一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(遲延)


數碼管速度測試一()

sleep(3)

數碼管速度測試二(0.02)

sleep(3)

數碼管速度測試二(0.01)

sleep(3)

數碼管速度測試二(0.005)





GPIO.cleanup()

 

沒想到,竟然是熱鬧的不得了,摘記其要︰

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

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

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

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

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

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

‧……

長 長︰同學們,現已做成摘要,請大家放學後一同思考,下堂課一起動手參與改善,嘗試找出解決方案。

 

訊   禮記‧學記》:

是故學然後知不足,教然後知困。知不足然後能自反也,知困然後能自強也。故曰教學相長也。