前言:

最近在複習我的 Python 語言,有個小小的發現,所以記錄一下到我的部落格裡面,

大家都知道, Python 假如要使用數學的三角函數,需要 import math 數學函數模組進來。這裡來個簡單的數學小挑戰,假如不用數學模組,也不准用級數展開,可以不可以直接算出數學上的 Sin(x), Cos(x) 函數呢 ?

 

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言:

一直覺得 C語言跟 FORTH 語言在對記憶體的使用用法上,觀念非常的類似。兩個語言的運作核心都是直接對電腦記憶體位址做存取,跟控制,來達到各種程式的目的。所以操作的觀念上非常的接近。所以一直想來篇簡短的心得比較,來比較兩種語言如何的操作記憶體,這樣的比較,可以大大地加深對兩種語言的了解,所以來留個紀錄吧,同時也可以清楚看到兩種語言的優劣性。基本上,我是覺得 FORTH 是略勝一籌的啦!

從歷史上來看, FORTH 是1960年代末期,由查理斯·摩爾 (Charles H. Moore) 所開發的語言,最早是為了控制巨大的電波天文望遠鏡所使用。 而C語言則是在1969年到1973年之間,由丹尼斯·里奇(Dennis Ritchie)為了在PDP-11電腦上運行的Unix系統所設計出來的程式語言。

也就是說其實兩個語言出現的時間非常的接近,而 FORTH 可能要比C語言早個幾年。也許年代接近吧,兩個語言的發明人不約而同的都有類似的思維,真的是非常的有趣,也許是英雄所見略同吧。只是兩個語言在操作逼近目標的方式迴異,而這方面我覺得 FORTH 高明許多,間單又漂亮的解決了問題。而C語言則將問題複雜化,反而產生了更多問題,使得C語言變得非常的反直覺跟難以學習。雖然 C語言已經是主流每個資訊科系必學的語言了,但我們來用個程式比較看看,看看C語言會有什麼問題吧!

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言

學 C/C++ 語言的,慢慢進階後大概就會開始學習所謂的資料結構跟演算法。資料結構這裡,一般除了靜態的陣列外,慢慢的會開始學習動態的記憶體配置的技術例如 malloc(), free()... 這些動態記憶體配置跟釋放的指令。再利用這些函數,跟系統要記憶體或用完後歸還記憶體。

老實說,其實最近不斷的在練習跟精進這些 C 語言的技巧。畢盡,這是主要吃飯的工具。但是,這個版是不準備放任何 C/C++ 語言的任何東西的,因為網路上 C/C++ 的素材真的太氾濫了,這種入門等級的,實在無需我們出來浪費網路的資源。

但是,來個 FORTH 語言版本的這種程式碼,倒是十分的樂意!除了讓我更熟悉外,也可以加減推廣 FORTH 語言囉。所以來篇這樣的部落格文吧!

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言:

最近幾天,被武漢肺炎攻進家裡囉,家裏有人中獎。然後自己也被迫關在家裡照顧他們。在家裏,還是不要浪費寶貴的時間,來寫寫並更新部落格吧。

最近因為操作一些高靈敏度感測器的關係,發現我們常會需要一種非常重要的應用:某些非常高靈敏度的感測器,因為非常的靈敏,所以相對的,通常會有大量的雜訊伴隨在真實訊號裡面。如何在一堆雜訊裡面抽出真實的感測器訊號,是常常會遇到且必須的重要技術。

這種情況,我們通常會分析雜訊的頻率狀況,假如頻率確定的話,適當引進高通濾波器 (High-Pass Filter),低通濾波器 (Low-Pass Filter)或是帶通濾波器 (Band-Pass Filter),即可有效的過濾雜訊的干擾。

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言:

拜 ESP32 本身內建 Wifi 之賜,所以 ESP32 可以很容易的就像一般的電腦一樣,透過 Wifi 登入家中的基地台,變成家中區域網路中的一個網路節點。

為此 ESP32FORTH 設計了非常酷的兩個模式:一個是 Web UI 終端機模式,另一個是 Telnet 模式

也就是説,一但登入變成家中區域網路中的一個網路節點後。你可以開啟 Web Server 的功能,將 FORTH 的交談環境透過 ESP32FORTH 內建的 WebServer 分享出去。這時候,只要有任何一台電腦或平板電腦 iPad 的網頁瀏覽器,都可以登入 ESP32FORTH ,透過網路終端機控制 ESP32FORTH 的交談環境,編譯或執行或編輯 FORTH 程式。

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言

玩 Arduino 的,第一個會接觸到的溫度跟濕度感測器十之八九,大概是 DHT 系列的感測器。

這一系列的感測器,因為已經一堆人幫它寫好底層溝通的函式囉,所以真的是使用上超級簡單的。真的不誇張,五分鐘搞定。所以當初筆者也用同樣的方法,很快的開發了一個露點溫度濕度計

但是,現在玩 ESP32FORTH  這種少數人口在玩的語言,自然就沒這麼好命囉,這種特殊協定,可是沒人會理你的。雖然說 ESP32FORTH 是以 C語言開發的,所以要把別人以C語言所開發的DHT系列底層的溝通函式「黏」進來 FORTH 系統裡面並不困難。

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言:

ESP32 MCU 本身,本來就內建硬體 SPI (Serial Peripheral Interface) 介面的,要測試 SPI 硬體,最簡單就是拿來控制 MAX7219 配合上8x8的 LED陣列,來做個迷你跑馬燈的。

所以本來要這樣來弄一篇 ESP32FORTH 對 ESP32 的 SPI 硬體介面的使用範例的。但是不知道什麼原因,找了半天,我很驚訝 ESP32FORTH 官方並沒有把 SPI 的硬體控制指令給黏進來。這樣我們就無法直接很快的使用 ESP32 的 SPI 硬體囉。

不過,對於以 C 撰寫的 ESP32FORTH ,真的要黏其實是不困難。就 ESP32FORTH 的 Sketch 草稿檔,手動再加指令,再重新編譯過整個系統就可以囉。

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言:

話說筆者的 FORTH,是在高中的時候,那時候好不容易弄到一台 Apple ][ ,然後弄到一片 MircoMotion FORTH-79 的磁碟片,就學起 FORTH 語言來囉。

印象深刻的是, FORTH 不只是語言而已,也是個類似 DOS 的作業系統。 FORTH 裡面有簡單的實作了磁片的驅動,所以可以任意的以 FORTH 的方式讀取磁片上的磁區。採用絕對定址的方式,它把磁片上的磁區每 1024 byte 分成一塊,叫做 Block 的。你可以透過這個指令,以絕對定址的方式存取磁片上的任何一個 Block。 (例如: 0 Block, 1 Block, 2 Block ...)

以 Block 為基礎,它也提供了 Block 編輯器。也就是說,程式碼不是用檔案的方式來儲存的,而是以明碼字串的方式,存在一塊塊的 Block 裡面。 FORTH 的發明人Chunk Moore 認為「Simple is the power」,用 Block 來取代作業系統中複雜的檔案結構,才是最簡單,最有效率,也最有威力的方法。

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言:

其實一直關注,發現 ESP32FORTH 的出現已經很久了!而且我還知道它是由丁陳漢蓀老師根據 eFORTH model 所開發出來的, 是 eFORTH 家族的另一個力作。

只是因為我對 ESP32 這顆 MCU 不熟悉,而且對於 Arduino 我一直覺得 FlashFORTH 已經蠻好用的了,所以沒時間再另闢戰場,再熟悉另一套系統,所以一直遲遲不願意動手去使用它。再來可能要對不起丁陳老師了,我對 eFORTH 還是有點偏見的。熟悉 eFORTH Model 的人應該都知道, eFORTH 系統是用 31個核心指令所建構起來的,也就是整個系統,只有31個低階指令是跟機器有關的。只要能搞定這31個指令, eFORTH 系統可以很快的在不同機器中轉移。

但相對的,也代表 eFORTH 相較其它的 FORTH 系統而言,效能較低。在 MCU 的這個領域,我們常需要的是即時控制,時脈跟反應都必須很精準,這個地方 eFORTH 的效能會是很大的致命傷。所以我會比較喜歡專為特定 MCU 所打造的 FORTH 系統,例如 Flash FORTH 之流的。所以,基本上基於效能因素,我是不喜歡使用 eFORTH 來做正事的。 (但,研究 FORTH系統而言,它是很棒的 Model)

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()

前言:

之前對雷達的運作跟如何得到待側物的目標是完全沒有概念的。後來因為工作上的需要,上網找了一下資料,才發現,這蠻簡單的嘛!只要透過地平線的座標系統,知道待側物的仰角 EL,方位角 Az,及雷達站所量測到的待側物跟雷達之間的距離 Range,這樣待側物的座標就立刻可以被計算出來了。(這其實是一種球座標系統轉直角座標系統的轉換)

NASA 利用這樣的方式,他們在美國加州的 Edwards 有個叫做 Dryden Flight Research Center (FRC) 的雷達站,透過這個雷達,他們可以隨時追蹤目前太空梭的位置,並立即的提供給太空梭的任務中心的 Flight Dynamics Officer (FDO) 來監控,並計算整個太空梭任務的飛行軌道。

來推導並瞭解一下,這整個座標轉換中,所需要的數學公式吧!

文章標籤

ohiyooo2 發表在 痞客邦 留言(0) 人氣()