猴年到

靈根育孕源流出‧心性修持大道生

一朝天氣炎熱,與群猴避暑,都在松陰之下頑耍。你看他一個個:
跳樹攀枝,採花覓果;拋彈子,邷麼兒;跑沙窩,砌寶塔;趕蜻蜓 ,撲蜡;參老天,拜菩薩;扯葛籐,編草;捉虱子,咬又掐;理毛衣,剔指甲。挨的挨,擦的擦;推的推,壓的壓;扯的扯,拉的拉 :青松林下任他頑,綠水澗邊隨洗濯。

一群猴子耍了一會,卻去那山澗中洗澡。見那股澗水奔流,真個似滾瓜湧濺。古云:「禽有禽言,獸有獸語。」眾猴都道:「這股水不知是那裡的水。我們今日趕閑無事,順澗邊往上溜頭尋看源流,耍子去耶!」喊一聲,都拖男挈女,呼弟呼兄,一齊跑來,順澗爬山,直至源流之處,乃是一股瀑布飛泉。但見那:

一派白虹起,千尋雪浪飛。
海風吹不斷,江月照還依。
冷氣分青嶂,餘流潤翠微。
潺湲名瀑布,真似掛簾帷。

眾猴拍手稱揚道:「好水,好水!原來此處遠通山腳之下,直接大海之波。」又道:「那一個有本事的,鑽進去尋個源頭出來,不傷身體者,我等即拜他為王。」連呼了三聲,忽見叢雜中跳出一個石猴,應聲高叫道:「我進去,我進去。」好猴!也是他:

今日芳名顯,時來大運通。
有緣居此地,王遣入仙宮。

你看他瞑目蹲身,將身一縱,徑跳入瀑布泉中,忽睜睛擡頭觀看,那裡邊卻無水無波,明明朗朗的一架橋梁。他住了身,定了神,仔細再看,原來是座鐵板橋。橋下之水,沖貫於石竅之間,倒掛流出去,遮閉了橋門。卻又欠身上橋頭,再走再看,卻似有人家住處一般,真個好所在。但見那:

翠蘚堆藍,白雲浮玉,光搖片片煙霞。虛窗靜室,滑凳板生花。乳窟龍珠倚掛,縈迴滿地奇葩。鍋灶傍崖存火跡,樽罍靠案見殽渣。石座石床真可愛,石盆石碗更堪誇。又見那一竿兩竿修竹,三點五點梅花。幾樹青松常帶雨,渾然像個人家。

看罷多時,跳過橋中間,左右觀看。只見正當中有一石碣,碣上有一行楷書大字,鐫著「花果山福地,水簾洞洞天」。

 

孫悟空闖入水簾洞-月岡芳年繪

 

 

 

 

 

 

 

 

 

 

 

圍爐夜話

圍爐夜話寒夜圍爐,田家婦子之樂也。顧篝燈坐對,或默默然無一言,或嘻嘻然言非所宜言,皆無所謂樂,不將虛此良夜乎?餘識字農人也。歲晚務閑,家人聚處,相與燒.煨山芋,心有所得,輒述諸口,命兒輩繕寫存之,題曰圍爐夜話。但其中皆隨得隨錄,語無倫次且意淺辭蕪,多非信心之論,特以課家人消永夜耳,不足為外人道也。倘蒙有道君子惠而正之,則幸甚。

咸豐甲寅二月既望王永彬書於橋西館之一經堂

 

漢代分格鼎

 

博學篤志,切問近思,此八字,是收放心的工夫。
神閒氣靜,智深勇沉,此八字,是幹大事的本領。

 

※ 祈願一家團圓之時,大智已移山。

永康得安康,新化總無礙。

歸仁能為美,仁德永常駐。

 

 

 

 

 

 

 

 

 

 

 

 

 

W!o+ 的《小伶鼬工坊演義》︰ 一窺全豹之系統設計‧探索‧戊

己一

己二

己三

《説文解字》:己,中宮也。象萬物辟藏詘形也。己承戊,象人腹。凡己之屬皆从己。

造字本義:在繩子上繫圈、打結,用以記數和記事,或標明物品的歸屬者。

……

所謂『食色性也,人之大欲存焉。』本就自然而然,只不過

你是誰? Who are you ?

你是怎樣的人? What are you ?

指出了重點,求學中,常常會發現『問題』比『答案』重要!或者至少一樣『重要』!!

因此師法古今中外的『楷模典範』人物,通常容易『思路開闊』,要是還能有個自己的『座右銘』,或許更好的吧。

昭明文選‧崔瑗‧座右銘

崔子玉范曄後漢書曰:崔瑗,字子玉,涿郡人也。早孤,銳志好學,盡能傳其父業。舉茂才,為汲令,遷濟北相,疾卒。

無道人之短,無說己之長。施人慎勿念,受施慎勿忘。戰國策,唐雎謂信陵君曰:人之有德於我,不可忘也;吾之有德於人,不可不忘也。世譽不足慕,唯仁為紀綱。隱心而後動,謗議庸何傷?劉熙孟子注曰:隱,度也。周易曰:君子安其身而後動,易其心而後語。呂氏春秋曰:內反於心不慚,然後動也。無使名過實,守愚聖所臧。越絕書,范子曰:名過實者滅,聖人不使名過實。家語,孔子曰:聰明睿智,守之以愚;功被天下,守之以讓。在涅貴不淄,曖曖內含光。論語,子曰:不曰堅乎?磨而不磷;不曰白乎?涅而不淄。晏子春秋,仲尼曰:星之昭昭,不如月之曖曖。周易曰:含弘光大,品物咸亨。柔弱生之徒,老氏誡剛強。老子曰:人生也柔弱,其死也堅強;萬物草木生也柔脆,其死也枯槁。故堅強者死之徒,柔弱者生之徒也。又曰:柔弱勝剛強。河上公曰:柔弱者久長,剛強者先亡也。行行鄙夫志,悠悠故難量。論語曰:閔子侍側,誾誾如也。子路,行行如也。子曰:若由也不得其死然。鄭玄曰:行行,剛強貌。慎言節飲食,知足勝不祥。周易曰:君子以慎言語,節飲食。老子曰:知足不辱。行之苟有恆,久久自芬芳。郭璞三蒼曰:苟,誠也。

因為最終人成為了自己『習慣』作的那種人!這也就是『信念』的重要性!需知養成良好的『習慣』並非『教條』,而是一種『學習過程』的成果。

─── 摘自《《派生》 Python 作坊【己】楷模典範

 

歲末年終之時,喜聞『 Hexxeh/rpi-firmware 』更新,樹莓派將進入『 VC4/DRM 』顯示加速的時代︰

rpi-4.1.y pull: vc4: kernel-side fix for X rendering lag, plus 3D testing fix #1268

Next up I’ll send updates for userspace to be rebuilt, but this is a major bugfix for vc4 DRM.

Also note the /debug/dri/0/bo_stats and /gem_exec debugfs nodes, which may be useful to watch when bug reporting for issues like the rendering lag/OOM ones we’ve had.

……

# Overlay

Name:   vc4-kms-v3d
Info:   Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver. Running startx or
        booting to GUI while this overlay is in use will cause interesting
        lockups.
Load:   dtoverlay=vc4-kms-v3d
Params: <None>

 

此刻正進入

# rpi-update 主流版本

pi@retropie:~ cat /proc/version  Linux version 4.1.17-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #834 SMP Mon Feb 1 15:17:54 GMT 2016 pi@raspberrypi ~ 

 

隨著斗轉星移,過去曾經麻煩的事情

Bit-banged I²C kernel driver

by kadamski » Tue Apr 16, 2013 10:10 am

I’ve made a handy kernel module for everybody wanting to use bit-banged host instead (or in addition to) hardware one. It’s like a wrapper for i2c-gpio kernel built-in module that let you dynamically create and remove i2c hosts on different gpio pins. It can be handy if you experience problems with hardware i2c clock stretching or you need more i2c hosts for some reason.

The code and some instructions can be found on my github. You need a custom kernel (with CONFIG_I2C_GPIO enabled) in order to use it. It got some limited testing so it should work but of course I don’t guarantee anything.

Anybody interested in testing this?

……

也已經簡單了。

# Overlay

Name:   i2c-gpio
Info:   Adds support for software i2c controller on gpio pins
Load:   dtoverlay=i2c-gpio,<param>=<val>
Params: i2c_gpio_sda             GPIO used for I2C data (default "23")

        i2c_gpio_scl             GPIO used for I2C clock (default "24")

        i2c_gpio_delay_us        Clock delay in microseconds
                                 (default "2" = ~100kHz)

※請參考『 Linux/drivers/i2c/busses/i2c-gpio.c

 

或許我們也應從善如流,一探春花春景的耶!!

【 dtoverlay=i2c-gpio 】

使用 i2c-gpio 預設值︰ GPIO23 是 SDA , GPIO24 為 SCL ,串接回硬體 I2C : GPIO0 SDA , GPIO1 SCL 。因此樹莓派上有兩個 I2C Master 。

Bit-Banging-I2C

 

pi@raspberrypi ~ ls /dev/i2c* -l crw-rw---- 1 root i2c 89, 1  1月 29 14:52 /dev/i2c-1 crw-rw---- 1 root i2c 89, 3  1月 29 14:52 /dev/i2c-3 pi@raspberrypi ~ 

 

都可定址 GrovePi 也。

pi@raspberrypi ~ i2cdetect -y 3      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 00:          -- -- 05 -- -- -- -- -- -- -- -- -- --  10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  70: -- -- -- -- -- -- -- --                           pi@raspberrypi ~ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- 05 -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
pi@raspberrypi ~ </pre>    <span style="color: #808080;"><strong>【 Bit-banged I²C 嚐鮮 】</strong></span> <pre class="lang:default decode:true "># 修改 grovepi.py ,選用 bus = smbus.SMBus(3) 。  pi@raspberrypi ~/example python
Python 2.7.9 (default, Mar  8 2015, 00:52:26) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import grovepi
>>> addr = 0x05
>>> grovepi.debugEnable()
>>> potentiometer = 0
>>> grovepi.pinMode(potentiometer,"INPUT")
1
>>> grovepi.analogRead(potentiometer)
0
[11, 2, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
702
>>> ultrasonic_ranger = 2
>>> grovepi.ultrasonicRead(ultrasonic_ranger)
0
[11, 0, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
3
>>> power=7
>>> grovepi.pinMode(power,"OUTPUT")
1
>>> grovepi.digitalWrite(power,1)
1
>>> grovepi.digitalWrite(power,0)
1
>>> grovepi.bus.write_i2c_block_data(5, 1, [3] + [0, 0, 0])
>>> grovepi.bus.read_i2c_block_data(5, 1)
[0, 2, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
>>> grovepi.bus.write_i2c_block_data(5, 1, [3] + [0, 0, 0])
>>> grovepi.read_i2c_byte(addr)
0
>>> grovepi.bus.read_i2c_block_data(5, 1)
[0, 2, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
>>> grovepi.read_i2c_byte(addr)
0
>>> grovepi.read_i2c_block(addr)
[0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
>>> grovepi.read_i2c_block(addr)
[0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
>>> grovepi.read_i2c_block(addr)
[0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
>>> grovepi.read_i2c_block(addr)
[0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
>>> grovepi.read_i2c_block(addr)
[11, 2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
>>> 

 

pi@raspberrypi ~ $ cat /dev/ttyUSB0
CMD = 5, index =  4

CMD = 3, index =  4

DATA = 0, 2, 190

CMD = 3, index =  0

CMD = 7, index =  4

DATA = 0, 0, 3

CMD = 7, index =  0

CMD = 5, index =  4

CMD = 2, index =  4

CMD = 2, index =  4

CMD = 3, index =  4

CMD = 3, index =  0

DATA = 0, 2, 190

CMD = 3, index =  4

DATA = 0, 2, 190

CMD = 3, index =  0

DATA = 0, 2, 190

DATA = 0, 2, 190

CMD = 1, index =  1

DATA = 0, 2, 190

CMD = 1, index =  2

DATA = 0, 2, 190

CMD = 1, index =  3

DATA = 0, 2, 190

CMD = 1, index =  4

DATA = 0, 2, 190

CMD = 1, index =  0
#

 

 

 

 

 

 

 

 

 

 

 

 

 

W!o+ 的《小伶鼬工坊演義》︰ 一窺全豹之系統設計‧探索‧丁

戊一

戊二

戊三

說文解字》:戊,中宮也。象六甲五龍相拘絞也。戊承丁,象人脅。凡戊之屬皆从戊。

本義组合的威猛長柄武器

梁啟超‧《新民說

第七節   論進取冒險

二曰生於熱誠。吾讀史記李將軍列傳,至「廣出獵,見草中石,以為虎,射之,中石,沒羽;視之,石也。因復更射之,終不能復入石矣!」未嘗不嘆人生之能力,無一定界限,無一 定程度,而惟以其熱誠之界限程度為比例差。其動機也希微,其結果也殊絕,而深知夫天下古今之英雄豪傑、孝子烈婦、忠臣義士,以至熱心之宗教家、政治家、美 術家、探險家,所以能為驚天地,泣鬼神之事業,震宇宙而眧蘇之者,其所得皆有由也。西儒姚哥氏【雨果《九三年》】有言:「婦人弱也,而為母則強。」夫弱婦何以能為強母?唯其愛兒至誠之一念,則雖平生嬌不勝衣,情如小鳥,而以其兒之故,可以獨往獨來於千山萬壑中,虎狼吼咻,魍魎出沒,而無所於恐,無所於避。大矣哉!熱誠之愛之能易人度也。朱 壽昌之棄官行乞,跋涉風雪,愛其親也。豫讓之漆身為厲,披髮為奴,愛其君也 。諸葛武侯之扶病出師,洒一掬之淚於五丈原頭而不辭者,愛知己也。克林威爾冒弒君之大不韙,且兩度解散國會,受專制之嫌而無憚者,愛國民也。林肯不顧國內 之分裂,不恤戰爭之塗炭,而毅然布放奴令於南美者,愛公理也。十六七世紀之間,新教徒抵抗教皇者二百餘年,死者以千數百萬計,而未嘗悔者,愛上帝,愛自由 也 。十九世紀,革命風潮,遍於全歐,擲無量數之頭顱血肉,前者仆而後者繼,亦以其民之愛國而自愛也。彼男女之相悅,則固常背父母,犯輿論,千回百折以相從 矣,甚者乃相為死矣。夫人情孰不愛生而惡死,顧其所愛有甚於生者,故或可以得生而不用也。戰國策言,有攫金於齊市者,士官拘而鞫之,其人曰:「吾攫金時, 只見金,不見人。」彼夫英雄豪傑、孝子烈婦、忠臣義士,以至熱心之宗教家、政冶家、美術家、探險家。當其徇其主義,赴其目的,何一非見金不見人之類也?若是者,莫之為而為,莫之致而至,豈惟不見有人,並不見有我焉。無以名之,名之曰煙士披里純 (Inspiration) 。「煙士披里純」者,熱誠最高潮之一點,而感動人驅迫人,使上於冒險進取之途者也。而此熱誠又不惟於所愛者有之,乃至哀之極,怒之極,危險之極,亦常為驅 發熱誠之導線。處火宅者,弱女能運千鈞之笥;臨敵陣者,疲馬亦作突圍之想。故曰:不搏不躍,不激不行。可愛者而不知愛,可哀者而不知哀,可怒者而不知怒, 可危者而不知危;此所謂無人性也。吾乃知進取冒險之不可以已如此其甚也!

……

─── 見於《《派生》 Python 作坊【戊】為母則強

 

百年已過,梁先生之『新民』尚且難得。更遑論『煙士披里純』者幾稀。有時不禁使人納悶『讀歷史』者與『寫歷史』者差異之大!如今又將除夕,新的一年終始之時,或許是對 GrovePi 之系統設計略作總結的時候了。

概念始於『種子』,一個初版『程式』

i2c_cmd_start1.ino

#include <Wire.h>
#include <Servo.h>

Servo servo1;
#define SLAVE_ADDRESS 0x04
int number = 0;
int state = 0;

int cmd[5];
int index=0;
int flag=0;
int i;
byte val=0,b[3];
int aRead=0;

void setup() {
    pinMode(13, OUTPUT);
    //Serial.begin(9600);         // start serial for output

    Wire.begin(SLAVE_ADDRESS);

    Wire.onReceive(receiveData);
    Wire.onRequest(sendData);

    //Serial.println("Ready!");
    pinMode(4,OUTPUT);
}

void loop()
{
  if(index==4 && flag==0)
  {

    flag=1;
    //Digital Read
    if(cmd[0]==1)
      val=digitalRead(cmd[1]);

    //Digital Write
    if(cmd[0]==2)
      digitalWrite(cmd[1],cmd[2]);

    //Analog Read
     if(cmd[0]==3)
     {
      aRead=analogRead(cmd[1]);
      b[1]=aRead/256;
      b[2]=aRead%256;
     }

    //Set up Analog Write
    if(cmd[0]==4)
      analogWrite(cmd[1],cmd[2]);

    //Set up pinMode
    if(cmd[0]==5)
      pinMode(cmd[1],cmd[2]);

    //Attach Servo
    if(cmd[0]=6)
      servo1.attach(cmd[1]);

    //Rotate Servo
    if(cmd[0]=7)
      servo1.write(cmd[1]);
  }
}


void receiveData(int byteCount)
{
    while(Wire.available())
    {
      if(Wire.available()==4)
      {
        flag=0;
        index=0;
      }
        cmd[index++] = Wire.read();
    }
}

// callback for sending data
void sendData()
{
  if(cmd[0]==1)
    Wire.write(val);
  if(cmd[0]==3)
    Wire.write(b, 3);
}

 

道盡它之嬗變過程。若說那麼長的時間過去了,竟然乏人考究它的內容,當真叫人意外!?也許看來好好的,又有什麼修改的理由呢 ?只不過『堅固』、『可靠』、『防呆』、……種種性質卻是人們期望『聰明物件』必有的。否則當 IOT 進入家庭後,風險不可預期難以測知,這可就大大的不妙了。

故此特告之有志於此者『 安 安特第一』!!

派︰伏羲之時,已知太極陰陽,然而太極之非陰非陽與或陰或陽之陰陽不測的古意雖喪,大道源流依據不失。現今正負之理,始於『卡文迪什』親身體驗 ☿☹︰

鐵線』的電傳導性要比『蒸餾水』好上四億倍,『海水』又比『雨水』好一百倍,然而『飽和』的『海鹽溶液』要比『雨水』更好了七百二十倍……

;其後『歐姆』歸結為『因勢 VIR』 ☿☺︰

V = I \times R

。之後又有了『焦耳』的『熱功當量』︰

他將一段導線浸入定量的水中,然後量測上升的溫度,在實驗過各種材質的導體、多種電流大小與不同時間長短後發現

Q = I^2 \cdot R \cdot t

,此處 Q 是熱量【焦耳】、 I 是電流量【安培】、 R 是電阻值【歐姆】、 t 時間【秒】。

故說『熱焦』 ☿☺ 電路者常是瞬間『勢利』 V \times I 過大太久所致。

※註︰  ☿☹ 以及 ☿☺ 是 M♪o 筆記裡的特有符號,雖說推想是表達 M♪o 的『心情』,就其使用脈落而言,彷彿更像是種『聯想法』。

生 ︰『針太極』  ☿☺ Pin 出入者之電路特性︰

raspberry-pi-circuit-gpio-input-pins

☆ 編者言說明

因 選擇了『樹莓派』作為『實習』的計算機主體,故 M♪o 筆記裡的一切有關資料『改編』以『樹莓派』基金會官方的『說明』為主,不足時,補以其它來源。比方說,此『輸出入』『針』腳, M♪o 記之以『太極』者,蓋因為既可用作『輸出』,又可用於『輸入』。而且當作『輸入』時,若是不設定『 Pull-up 』或『 Pull-down 』,如《 An introduction to GPIO and physical computing on the Raspberry Pi 》所講︰

Input

GPIO outputs are easy; they are on or off, HIGH or LOW, 3v3 or 0v. Inputs are a bit trickier because of the way that digital devices work. Although it might seem reasonable just to connect a button across an input pin and a ground pin, the Pi can get confused as to whether the button is on or off. It might work properly, it might not. It’s a bit like floating about in deep space; without a reference it would be hard to tell if you were going up or down, or even what up or down meant!

This is why you will see phrases like “pull up” and “pull down” in Raspberry Pi GPIO tutorials. It’s a way of giving the input pin a reference so it knows for certain when an input is received.

If you’d like to have a go at using the GPIO as an input then have a look at our screaming jelly baby and quick reaction game tutorials for Python, or a reaction game for Scratch.

,果有類似 M♪o 所用之『物』的特性。雖想自然之理是一脈相通,有時確有偏勝之處,特以『☆ 編者言說明』符號表明此係編者之言,對錯真假與 M♪o 無涉。

△ 電工之行, 安 安特第一。【※ Tux 語言,專有詞法,請參考 Tux@rpi ︰《踏天之梯》,未免於失實失義,用古今字轉譯,存其會意。此處『安特』意指︰安全性重要的不得了!!】

─── 摘自《 M♪o 之學習筆記本《子》開關