由 kenng001 發表的全部文章

Wubuntu

睇個名大家想到了什麼呢?

windows + ubuntu , 底層是 ubuntu linux , 個UI 做到 windows 11 咁樣

那個 linux 整合了 WINE 系統 , 即是可以運行一些 windows 軟件 某些 exe , msi

大家可以看看 youtube 看看個畫面

安裝完時 已經內建了 Copilot, Edge, Teams, PowerShell, Skype  等windows 軟件

同時可以運行 Android 軟件

大家可以用 virtulbox 玩吓 , 下載網址 https://www.wubuntu.org/index.php/get/wubuntu

用python每日更新追蹤香港covid-19確診或到訪大廈名單

過了農曆新年, 全港疫情大爆發, 好多香港人都會每日上網看看”衛生署”的確診名單 https://www.chp.gov.hk/files/pdf/building_list_chi.pdf

所以我寫了一個小程式來追蹤指定大廈是否在確診名單內, 尤其對做物管及做公司ADMIN朋友 , 某程度上有少許幫助 , 但間中最好抽查

本身我寫的程式在 LINUX 運行 , 每天會自動執行一次再電郵給我 , 但好多人公司或家用電腦都是行 windows 所以我修改程式適合在 windows 行及輸出檔案是 EXCEL FILE

設計該程式概念 : 先下載衛生署 PDF 名單 , 轉換成文字檔方便程式讀取 , 之後程式核對 自定名單同衛生署名單有沒有匹配 , 記錄你要找的數據 , 把文字檔轉換成 EXCEL FILE

步驟一:

先安裝 windows 版 OPENJDK 下載網址: https://docs.microsoft.com/zh-tw/java/openjdk/download

64bit windows 下載64bit版, 32bit windows 下載32bit版

下載完直接安裝

步驟二:

安裝 Python 程式語言 , 下載網址: https://www.python.org/downloads/release/python-3102/

下載完直接安裝

完成後要裝程序需要的python模組

按 “win key” + R , 執行 “CMD”

升級 python pip 下載器 , 在 “命令提示字元” 內 輸入 :

pip install –upgrade pip

注意: –upgrade 前是兩個 – 減號

安裝python模組, 在 “命令提示字元” 內 輸入 :

pip3 install requests tabula-py Workbook datetime openpyxl

步驟三:

如果你的電腦已經有軟件可以開啟 UTF8 FILE可以 忽略這個

安裝 notepad++ 軟件 , 免費好用 ! 下載網址: https://notepad-plus-plus.org/downloads/

步驟四:

我編寫的程式 : Download

解壓後內有3個FILE , “run.cmd” “main.py” “udata.csv”

值得注意的是 , 有些朋友會 “不經意” 把繁簡字混亂使用 , 例子: “厦” 及 “廈” 前者簡體 後者繁體 ! 對系統來說這是不同的字 , 如果你輸入的 “某某大厦” 是會找不到的, 應該”某某大廈”才能找到 , 所以我建議不要用全名, 用 “某某”

用 notepadd++ 修改 udata.csv , 編碼 utf-8

run.cmd 內容如下所示

double click “run.cmd” 會執行程式, 如下圖

同時會有5個FILE 產生 , “building_list_chi.pdf” 是從衛生署下載的名單 , “data.csv” 是從PDF轉換成文字檔, “email.csv” 是輸出文字備用EMAIL, “record.csv” 是記錄你找到的記錄, “checklist.xlsx” 是可以用 EXCEL 開啟的記錄

備註: 所有 CSV 檔案都是 UTF8 編碼, 用 EXCEL 開會亂碼 , 如果真的要開用 NOTEPAD++ 或者用 libreoffice 都可以正常顯示中文字

如有疑問可電郵至 [email protected]

ORANGEPI + “MOS場效應管” 控制風扇開關

我平時試程式或其他Linux service , 都會用 orange pi zore 安裝 armbian 作為 server , 但這板子有點燙 , 所以我就想用板上的 GPIO 上的 5V , 推動5V風扇用作散熱

把風扇直接接上 pin4 正極 及 pin6 接地 , 風扇就會轉動 , 但在家中安靜時風扇的噪音有點大

所以我就想用温度控制風扇的開關 , 減少噪音的時間, 但兩腳的風扇開關只能用通電及斷電來控制 .

我可以選擇 “三極管” 或 “MOS管” 來作開關 , 我手頭上有些 A2SHB N-MOS , 所以我今次用 MOS管 做示範 .

以我所理解 MOS管用電壓來控制開關 , 三極管用電流控制開關 . 如果想詳細了解可以上網找相關內容, 我提供一個給大家參考

URL = 用理论告诉你 三极管和MOS管的区别在哪-KIA MOS管 (kiaic.com)

今次我用的 MOS 是 SI2302 印有 A2SHB 字樣 (好細粒)

想了解一吓 MOS 管原理, 所以看看以下 youtube 視頻

我的構想圖如下:

不是每款MOS管的 vgs(th) 都是 1.2V , 我手上的 SI2302 的 vgs(th) 是1.2V 就能打開MOS管, 其他型號你要上網找找 vgs(th) 參數

好了我們開始實作吧 , 先把細小的 A2SHB 焊在電路板固定 , MOS管D極焊同風扇負極接上 , MOS管S極同 GPIO (GND) 焊上 , MOS管G極同GPIO控制端口接上(我用了pin7 作為控制端口)

記住 orangepi zero pin 4 正極 , pin 6 負極 , 我用 pin 7 控制風扇

把風扇控制板與 orangepi zero 連接後, 以下就來寫控制風扇的程序了 !

我的 orangepi 是行 armbian linux , 所以我的程序會用 python 3.x 所寫 , 先用 python 的安裝程式 pip , 裝上 OPi.GPIO library

https://pypi.org/project/OPi.GPIO/

下載 onoff_fan.zip 內有 onoff_fan.py 程序

稍微講解程序內一些段落

def get_temp():
         with open(‘/sys/class/thermal/thermal_zone0/temp’) as fp: 
                   return int(fp.read()) // 1000

這一段定義 get_temp()  function  , 內容是讀取系統內CPU溫度的數據 , 之後 result 時把數據   / 1000  , 就會得出我們平時多少  XX 度了

#循環開始
        while True: 

#CALL function 讀取溫度數據 
            cputemp = get_temp() 

#判斷溫度是否低於我們設定風扇停轉的數值, 如果 “TRUE” 就把 pin7 輸出設定為低電壓, MOS 管截止 , 風扇迴路成為開路, 沒有電流流過而停轉
            if cputemp < stop_temp_value:
                 GPIO.output(FAN_PIN, GPIO.LOW) 

#判斷溫度是否高於我們設定風扇開啟的數值, 如果 “TRUE” 就把 pin7 輸出設定為高電壓, MOS 管導通 , 風扇迴路成為閉路, 有電流流過而轉動
            elif cputemp > start_temp_value:
                GPIO.output(FAN_PIN, GPIO.HIGH)

#程序暫停10秒才進入下一個循環
             time.sleep(10) 

 

用Arduino 控制全彩LED(紅,綠,藍) 三原色調配顏色

我們先準備一些材料 , arduino nano , 紅綠藍LED各一, 一粒全彩LED, 3個按鈕,3粒10KΩ電阻(按鈕用) , 6粒150Ω(保護LED用) . 注意我的圖片是用了470Ω , 因為我找不到150Ω

先看看以下是我的材料圖片

我用了模擬器製作了一個接線圖給大家參考

首先我們先了解一下, 脈波寬度調變(英語:Pulse-width modulation,縮寫:PWM)參考網址 : https://zh.wikipedia.org/wiki/脈衝寬度調變 , https://a091234765.pixnet.net/blog/post/399625162-%5B筆記%5Darduino實驗五%3Apwm調控

我嚐試去表達一下自己的理解 , 如果不正確請不要駡我, 只是我個人的理解能力有限 !

首先我們假設10秒是一個周期 , 我們有個水桶 , 有一個水龍頭 . 例子1: 打開水龍頭, 水桶開始注水 , 10 秒周期水龍頭都是開著的,水桶就滿了 . 例子2 : 打開水龍頭, 10 秒周期裏水龍頭只開了9秒, 那水桶就只有90%滿 , 例子3 : 打開水龍頭, 10 秒周期裏水龍頭只開了8秒, 那水桶就只有80%滿 以此類推 .

PWM 用上述例子解釋 , 占空比= 水龍頭開 , 水龍頭開=5V , 水龍頭關=0V , 如果周期內占空比滿戴 , 結果就是 5V , 如果占空比只有75% , 那麼結果是3.75V , 如果占空比只20%, 那麼結果是1V 了 ! 說白了就是控制占空比 , 控制輸出的電壓來控制LED亮度 , 這就是我們今次的目的 , 得出三原色不同亮度的組合來合成各種顏色

講完構思, 現在實作吧 ! 開始 …… LED 燈加上限流電阻來保護

按鈕部分 , 一端接 GND , 一端接5V+10K電阻作為 Arduino 輸入訊號端. 平時不按下去 Arduino 輸入訊號端 會是高電壓 , 按下去的時候接地道通, Arduino 輸入訊號端 會是低壓 ! 高低電壓的輸入就會控制 Arduino 程序的流向

以下是 Arduino 的程序代碼 , 如有興趣的朋友可以下載來玩玩 下載

以下是本人寫的代碼 , 不是寫得好好 ! 請見諒 :

int redled = 15; // 紅色LED接腳
int greenled = 16; // 綠色LED接腳
int blueled = 17; // 藍色LED接腳
int rled = 3; // 全彩LED紅色接腳 PWM
int gled = 5; // 全彩LED綠色接腳 PWM
int bled = 6; // 全彩LED藍色接腳 PWM
int ranum =0; // 全彩LED紅色亮度參數 0 – 255
int ganum =0; // 全彩LED綠色亮度參數 0 – 255
int banum=0; // 全彩LED藍色亮度參數 0 – 255
int rgbbutt=14; // 轉換”紅綠藍”燈按鈕接腳
int upbutt=7; // 增加亮度按鈕接腳
int downbutt=8; // 減少亮度按鈕接腳
int val=0; // 儲存紅綠藍按鈕狀態
int valup=0; // 儲存增加亮度按鈕狀態
int valdown=0; // 儲存減少亮度按鈕狀態
int ledstat=0; // 儲存 “紅綠藍” 當前參數,全滅=0, 紅色=1 , 綠色=2, 藍色=3

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);

pinMode (redled, OUTPUT); // 設定為輸出狀態
pinMode (greenled, OUTPUT); // 設定為輸出狀態
pinMode (blueled, OUTPUT); // 設定為輸出狀態
pinMode (rled, OUTPUT); // 設定為輸出狀態
pinMode (gled, OUTPUT); // 設定為輸出狀態
pinMode (bled, OUTPUT); // 設定為輸出狀態
pinMode (rgbbutt, INPUT); // 設定為輸入狀態
pinMode (upbutt, INPUT); // 設定為輸入狀態
pinMode (downbutt, INPUT); // 設定為輸入狀態
}

void loop() {
// put your main code here, to run repeatedly:
val = digitalRead(rgbbutt);
delay(50);
// Serial.println (val);

if (val == LOW) {
val = digitalRead(rgbbutt);
if (val == HIGH){
ledstat=ledstat+1;

        if (ledstat == 1) {
          digitalWrite(redled,1);
          digitalWrite(greenled,0);
          digitalWrite(blueled,0);
        }
        else if (ledstat == 2) {
          digitalWrite(redled,0);
          digitalWrite(greenled,1);
          digitalWrite(blueled,0);  
        }
        else if (ledstat == 3) {
          digitalWrite(redled,0);
          digitalWrite(greenled,0);
          digitalWrite(blueled,1);  
        }
        else {
          digitalWrite(redled,0);
          digitalWrite(greenled,0);
          digitalWrite(blueled,0);
          ledstat=0;
        }
}

}

Serial.println (ledstat);
if (ledstat == 1 ) {
valup = digitalRead(upbutt);
valdown = digitalRead(downbutt);
delay(20);
if (valup == LOW) {
if (ranum < 255 ){ ranum = ranum+1; Serial.println (“紅色”+String(ranum)); } } if (valdown == LOW) { if (ranum > 0 ){
ranum = ranum-1;
}
}
analogWrite(rled,ranum);
}

else if (ledstat == 2) {
valup = digitalRead(upbutt);
valdown = digitalRead(downbutt);
delay(20);
if (valup == LOW) {
if (ganum < 255 ){ ganum = ganum+1; } } if (valdown == LOW) { if (ganum > 0 ){
ganum = ganum-1;
}
}
analogWrite(gled,ganum);
}
else if (ledstat == 3) {
valup = digitalRead(upbutt);
valdown = digitalRead(downbutt);
delay(20);
if (valup == LOW) {
if (banum < 255 ){ banum = banum+1; } } if (valdown == LOW) { if (banum > 0 ){
banum = banum-1;
}
}
analogWrite(bled,banum);
}

Serial.println (String(ranum)+”:”+String(ganum)+”:”+String(banum));
}

以下是我自己完成後做的 DEMO 視頻

理論上可以實現全彩 , 但因為 LED 各色的參數是不一樣 红2.1v,绿2.8v,蓝2.8v,白3.1v ! 我的 DEMO 不能完全的全彩

ARDUINO 模擬器

近期健伍試用一款模擬器 , 等我介紹一下比大家看看, 我都是初學不是太熟識

我用的是 AUTODESK TINKERCARD , 網圵 : https://www.tinkercad.com

我們來CREATE 一個新電路玩玩

新增了一個試驗板 , 加了 6 顆不同顏色 LED , 在每顆發光二極管加上一個150Ω 電阻(我自己會加大一點點, 我會用470Ω 電阻) , 為什麼要加上電阻? 因為可以防止LED承受過大電壓而燒壞

如何計算電阻阻值

LED限流電阻計算公式:限流電阻Ω = (電源電壓V – LED正向穩壓電壓V) / 限流電流A

設紅色LED正向穩壓電壓2V,電流20mA,電源電壓5V,代入公式就是(5V-2V) / 0.02A = 150Ω

你們可以參考以下網址 : https://www.gushiciku.cn/dc_news/digital_ZgNU

用圖塊的方式製作, 就好像積木一樣 , 一顆一顆的接著發亮又關燈

ARDUINO NANO 不能寫入 , 有什麼方法重設成出廠狀態呢?

應該有不少朋友會遇到玩死了 自己的 NANO , 原因例如有 : 寫 program 入NANO 時 arduino java error 跳出了 , 當機了都有可能使 arduino nano 出現錯誤不能再寫入 !

本來諗住要放進垃圾桶內, 但心想上網找找有沒有人同我一樣玩死了 NANO , 找了一會原來可以試吓重新燒錄 bootloader !

紅色麵包板 NANO 是用來當作燒錄器, 綠色麵包板是不能寫入程序的 NANO

我們今次會用 ICSP 來重新寫入 bootloader , ICSP 是什麼 ?

“ICSP 代表電路串行程式設計,這是可用於程式設計 Arduino 板的幾種方法之一。通常,Arduino 引導載入程式用於程式設計Arduino板,但如果引導載入器丟失或損壞,則可以使用ICSP。ICSP 可用於恢復遺失或損壞的引導載入器。”

用杜邦線連上 被燒錄NANO 的 ICSP , 被燒錄的 ICSP RST 腳連接燒錄器上的 D10 腳 , 如下圖 :

如果你用作燒錄器的板子不是 NANO , 那你找出 SPI 的引腳連接就是了 .

另一種接法就是用板子 SPI , 像以下圖片

完成了接線後, 我們先把作為燒錄器的 NANO 連接上 PC

打開 Arduino — > File —> Examples —> 11.ArduinoISP

然後到 Tools 選擇你自己用作 “燒錄器” 的板子 , 我的是 Board: “Arduino Nano” —> Processor: “ATmega328P (Old Bootloader)” —> 我的電腦連接是 Port: “COM12” ( 你的電腦可能是別的 COM PORT )

如果你用作燒錄器板子是別的型號 , 就要選上正確型號: 例如UNO , 就選UNO

按 “箭頭” 把 Arduino ISP 程序寫入燒錄器板子

成功寫入如下圖 :

凖備工作好了 , 現在開始重寫 bootloader 了 , 我們再次選擇要被燒 bootloader 的板子了 , “Arduino Nano” —> “ATmega328p (Old Bootlooder” , 如果要燒的是 UNO 就選 UNO 板子.

再選擇 Programmer : “Arduino as ISP”

之後就可以 Burn Bootloader

如果成功了, 就會出現 “Done burning bootloader. “

完成後可以找一些範例 , 寫一次入去重新燒錄bootloader 的板子了 !

健伍點解要租用 VPS 虛擬專用伺服器

健伍現在使用 SERVER 其實都是 VPS , 但這個 VPS 是自己買了一部二手電腦安裝了 proxmox 放在一個朋友租的 “數據中心” 櫃子內 .

但經濟下行的情況下 , 有可能不會再租用 , 所以要想想把伺服器搬回家中了 .

家中的寬頻 IP 會隨時轉變的 , 所以 “kenng.hk” 的 域名要如何對應 IP 的轉變 .

方法一 . 把 “域名” 放在有 “域名寄存” 的公司 , 把域名指向 Dynamic DNS ( 例子: 把 www.kenng.hk CNAME 到 noip , duckdns , dyndns , ddns 等公司 , 再用這些公司來 update 家中 隨時會變的 IP 地址 )

方法二. 自己建造一個能 dynamic update ip 的 DNS server

老實講 “方法一” 應該是最平的做法 ^_^ 當然我選用了 方法二 , 不然這編文章都不會出現

好了首先要找一間最平最平的 VPS 供應商了 , 我在網上找了一找 , 以下是我睇過的文章, 在這裏提供給大家參考一下

https://www.lifetat.com/vps-hosting-分享和比較/ , https://www.10besty.com/best-vps-hosting-services/#three , https://progressbar.tw/posts/131

我的目標要找最平又相對稳定的 VPS , 一般 1G RAM 的 VPS 大約要 5美元一個月 , 一年大約港幣 HKD480 左右吧 , 但我自己選了一個 15美元一年的 openvz server , 但這個 server ram 只有 128MB RAM , 如果只是運行 DNS server 就卓卓有餘了 .

我用的是 RAMNODE 公司提供的服務 https://www.ramnode.com/

買一個 128MB SVZ , 虛擬機有 1CPU , 12GB SSD , 1Gbps Port , 500GB Bandwidth , 1 IPv4 , 系統我就選用了 Ubuntu 20.04 , 選擇了 LA ( 洛杉磯 ) 本來想放在 NYC ( 紐約 ) 但沒有貨了

付了錢就可以開始使用了, 本身部機已經裝好了基本的軟件, bind9 , apache , exim , sshd

不知道是不是我用了 ubuntu os , 用不了 html 5 serial console

我用 putty ssh 去新 server , 我個人建議有興趣買個 VPS 試東西的朋友 , 最好修改一下 ssh port 會好一點 , 在 internet 世界有著很多 爬蟲 不斷試你的電腦 22 port

下一章會介紹下一設定 dynamic dns server 方法

用 EXCEL VBA 製作密碼產生器

我想很多 IT 的朋友都會遇過要大量產生密碼的時候 , 好多人都會設定同一密碼之後要求用戶再更改對嗎 ? 但好像存在某情度的風險對吧!

所以我今次要分享用 EXCEL VBA 製作產生隨機密碼的小程序 , 你想了解一下什麼是 VBA 可以參考以下網址 :

https://docs.microsoft.com/zh-tw/office/vba/api/overview/language-reference

首先一想起隨機產生數字, 好多朋友會想到 EXCEL 內置的 RANDBETWEEN , 但我們要的是更複習的密碼 !

例如 : 英文 + 數字+ 特殊字符 (kswdhn8772!@#$) 所以 randbetween 就不能滿足我了

我的 VBA 內產生隨機字元的部分來自於以下網址 :

https://www.thespreadsheetguru.com/the-code-vault/generate-string-random-characters-vba-codet?rq=Create%20a%20Randomized%20String%20of%20Characters

我在這些代碼內再作修改 , 增加了可設定密碼長度和密碼數量 !

但要提醒下載了我提供的 EXCEL 朋友不要立即啟用內含 『巨集』的程式 , 不論是我提供的程式或其他網站下載的程式 , 都不能立即啟用 , 先去看看程式內有沒有一些不對的代碼 !

下載 隨機密碼產生器_V1.7z , 要用 7 ZIP 解壓呀 !

如何開啟開發人員選項呢? 可以參考以下網址 : https://officeguide.cc/excel-show-developer-tab-tutorial/

以下是我的 VBA 代碼 :

Private Sub CommandButton1_Click()
'取用部分原始碼 網址如下
'PURPOSE: Create a Randomized String of Characters
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
'增加了密碼長度設定及可設定生成密碼數量 BY KEN NG
'www.kenng.hk
'還有我取消了" i, l, 1, " 等會使人唔會的字元 , 如果想要全字母及全數字可以自己修改 , 我留了那部分自己 uncommt
Dim CharacterBank As Variant
Dim x As Long
Dim str As String
Dim Length As Integer
Dim i As Integer
Dim j As Integer
Length = 工作表1.Range("C1").Value
If VarType(工作表1.Range("E1").Value) < 0 Then
j = 1
ElseIf VarType(工作表1.Range("E1").Value) > 1 Then
j = Val(工作表1.Range("E1").Value)
End If
For i = 1 To j
last111 = 工作表1.Cells(工作表1.Rows.Count, "A").End(xlUp).Row
'Test Length Input
If Length < 1 Then
MsgBox "密碼長度不可以設定為零"
Exit Sub
End If
CharacterBank = Array("a", "b", "c", "d", "e", "f", "g", "h", "j", _
"k", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", _
"y", "z", "0", "2", "3", "4", "5", "6", "7", "8", "9", "!", "@", _
"#", "$", "%", "^", "&", "*", "A", "B", "C", "D", "E", "F", "G", "H", _
"J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", _
"W", "X", "Y", "Z")
'CharacterBank = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", _
' "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", _
' "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "!", "@", _
' "#", "$", "%", "^", "&", "*", "A", "B", "C", "D", "E", "F", "G", "H", _
' "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", _
' "W", "X", "Y", "Z")
'Randomly Select Characters One-by-One
For x = 1 To Length
Randomize
str = str & CharacterBank(Int((UBound(CharacterBank) - LBound(CharacterBank) + 1) * Rnd + LBound(CharacterBank)))
Next x
'Output Randomly Generated String
工作表1.Range("A" & last111 + 1).Activate
工作表1.Range("A" & last111 + 1).Value = str
str = ""
Next i
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo 0 With Cells(Windows(1).ScrollRow, Windows(1).ScrollColumn) CommandButton1.Top = .Top + 10 CommandButton1.Left = .Left + 400 End With
End Sub

因為避免用戶看錯密碼, 所以我廢除了 ( i , l , 1 ) 等使人有機會看錯的字符

稍為解釋一下代碼 : Private Sub CommandButton1_Click() 是當你按下那按鈕時執行的程序 ! 讀取 C1 及 E1 的數值 , 決定產生密碼長度及數量 , 再由 FOR LOOP 隨機生成 密碼字符 , 再輸出至 A 列 最後一行

至於 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 內的代碼是把 “產生隨機密碼程序” 那按鈕固定位置 , 不會因為 A 列不斷增加而消失

使用 Arduino NANO V3.0 顯示二進制時間

今次要玩的是 arduino nano V3.0 這個版子是什麼東西呢?

Arduino Nano V3.0是一塊基與開放原始代碼的超小Simple i/o平台,與之前的USB版Arduino Diecimila相比較,Arduino Nano在體積上佔很大優勢,Arduino即可以用來開發出需要獨立運行,並且具有互動效果的電子用品;也可以用來開發出與電腦相連接,同 Flash,Processing,Max/Msp,PD,VVVV等軟件一同合作完成的互動作品。

之前用過 orange pi GPIO + python 做過 2 進制的時鐘 , 網址如下 :

今次就是用這版子做 2 進制時鐘 , 大家先要了解這版的引腳先

再來了解 1088BS 引腳代表什麼 ,  但要留意的是那是基於引腳從左至右看 !  

下列是 1088BS 官方引腳定義, 是基如引腳是從下至上看的 ! 

計時方面不同用 orangepi 讀取電腦時間,  Arduino Nano  要用計時模組 , 我今次用的是 DS1307 RTC 

DS1307 這模組同 MCU 用 I2C 連接的, 想了解更多 I2C 協定可以參考以下網址 : 

https://www.itread01.com/content/1545445450.html

https://zh.wikipedia.org/zh-tw/I%C2%B2C

Arduino Nano V3.0  的 I2C 引腳在 A4及A5 

連接 1088BS 的引腳 , 第一列開始分別是  ( 2,3,4,5,6,A1,8)  pin  , 因為我們第7列不使用的, 所以隨便用A1腳, A1不用插東西

第一行開始分別是 ( 13,13,13,9,13,10,11,12) ,   其中 1,2,3,5 行不使用的 , 所以隨便指派13腳代替, 都是不用插東西

如果你們有另一想法想用全部」「 自己相應找其他引腳代替連接 A1 及 13 

下載我編寫的 程式代碼  ( 當然有些是從別人的代碼借來用 , 例如 : 十進轉二進那一段)

這張圖用 RIGHT CLICK , OPEN WITH NEW WINDOWS 睇會清楚一點

更新一下我寫的程式先 , 上面我寫的那段程式碼有點缺陷, 就是不能手動UPDATE 時間, 要 DELETE CACHE 再編譯才能從電腦更新時間 , 所以 21年1月15日更新可以不用重新編譯, 手動更新時間程式碼 .

下載程式碼

下載了程式 , UPLOAD 上去 NANO , 以後要手動 UPDATE 時間, 就開 SERIAL MONITOR , 115200 baud , 按一下 ENTER 就會出現以下畫面 :

之後按 “Y” 設定時間 , 按照指示就可以了 .

ConvertZZ 軟件 (繁簡轉換開源軟件)

今次介紹的軟件, 或許有很多用家都不佰生 , 舊版本是十分好用, 我自己多數是用來轉換繁簡體字幕檔 ^_^ 用就是 CONVERZ 了, 但舊版已經不再更生了 ! 現在新版本 ConvertZZ 網址 : https://github.com/flier268/ConvertZZ

經常下載簡體文件的朋友們應該都有這個困擾吧,文件下載下來,常常看到的都是一堆亂碼 亂碼的原因是因為兩國的慣用編碼不同,簡體使用GBK,而繁體使用BIG5,當GBK的文字「直接」看做BIG5時,就會出現亂碼

一直以來,我慣用的簡繁轉換程式’ConvertZ’,但一直不太喜歡它的設計,為什麼上面總是要有一條Bar在那邊?為什麼開啟要等好幾秒?為什麼它有時候還會轉換失敗?為什麼作者好像都沒再更新了? 於是我開始計畫,意圖取代舊有的ConvertZ,改善這些問題。

由於是繼承自ConvertZ,因此取名ConvertZZ

下載連結 : https://github.com/flier268/ConvertZZ/releases