目前分類:Arduino FlashFORTH (11)

瀏覽方式: 標題列表 簡短摘要

前言

其實是從零件盒翻到一顆一年前買的 BMP180,這個很普遍的大氣壓力感測器。想說,好吧,來玩玩這顆感測器吧,順便豐富一下我們 Flash FORTH 的函式庫吧。

利用人家已經寫好的函式庫,然後 #include 進來用,這太 Low 了啦。來練練功,試看看只靠 Data Sheet 裡的資料,能否順利寫出底層可以跟 BMP180 溝通的程式碼呢?就這樣抱著試看看的心態,(鍵盤)東敲敲,西打打的,最後還是順利寫出來囉,蠻有趣的。

其實,以前就對那種利用氣壓計來做天氣預測的電子晴雨計非常著迷。只要有機會出國的話,總是會買個帶回來,放在客廳。出門前總是會多看幾眼,瞧瞧它的預測,看是要下雨了,還是會是個大晴天來當個參考。當然,現在網路時代,即時氣象預測應該都比這種老古董準確多囉。但,客廳擺個電子溫度計晴雨計的個人小氣象台,瞬間質感就增加很多。☺️

文章標籤

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

前言

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

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

但是,現在玩 Flash FORTH 這種少數人口在玩的語言,自然就沒這麼好命囉,這種特殊協定,可是沒人會理你的。

文章標籤

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

前言

國中上物理課的時候,大家耳熟能詳的一個題目一定是:請問外面下雨打雷中,突然一道閃電劃空而過,然後你手上剛好有個碼錶開始計時。最後經過 4.7秒後你聽到雷的聲音了。今日室外的溫度計刻度是 23.7度C,請問跟估計一下閃電發生的距離離你多遠啊??

這時候老師會叫你背一下聲音在空氣中的速度公式,聲速 (m/sec) = 331 + 0.6 * T (攝氏溫度)

所以目前聲速為 331+ 0.6 * 23.7 = 345.22 m/s

文章標籤

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

前言

其實是今天請假在家,因為好不容易預約到可以打武漢肺癌的疫苗囉。在家等待的過程有點無聊,所以坐在電腦桌前玩起 ADXL345 的這個三軸加速度計囉!照著之前這篇部落格的經驗,很快的就完成 Flash FORTH 的版本。測試了一下,運作非常良好,所以做個小小的記錄囉。

 

ADXL345 三軸加速度計

文章標籤

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

前言,

前一篇部落格文章,談到了 Arduino 的看門狗 Watchdog。因為發現很少然談及這塊,所以程式碼採用 Arduino IDE 的 C/C++ 來撰寫。來熟悉一下 Atmel 原廠的 avr 函式庫的呼叫。

但這裡的部落格,是要盡可能來推廣 FORTH 語言的。所以同樣的主題跟程式,我們也來一篇 Flash FORTH 版本的吧。來熟悉一下 Flash FORTH 下, Arduino 的看門狗如何操作。

關於看門狗,搞不清楚這是什麼的,請看我的前一篇部落格文,有來龍去脈,應該蠻有助於暸解這是怎麼回事,這裡就不贅述了。這一篇,是上一篇的延伸,補充 Flash FORTH 的看門狗 Watchdog 的使用方式。

文章標籤

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

前言

最近在家裡讀到一本堪稱聖經等級的,由 Elliot Williams 所著,「Make:AVR程式設計」,驚為天人啊。這本主要是在教你如何使用Atmel AVR 系列的單晶片,來製作各式各樣的應用。

Ateml AVR 系列的晶片,最出名的應該是 Arduino Uno 所採用的 Atmega328p 這個單晶片微處理器囉。不過作者超強的,捨棄 Arduino 的硬體,教你如何只需要石英晶體振盪器就好,就可以讓MCU動作來控制東西囉。程式撰寫也不使用 Arduino IDE,而是採用 Atmel 原廠所推出的 Avr-gcc 的原廠標準 C/C++ 語言開發環境跟Atmel原廠所提供的 AVR 單晶片專屬的原廠函式庫,真的是開了眼界了。

其中一章,講如何控制 AVR 微處理上面的10位元解析度的類比數位轉換器ADC。真的有點驚嚇到的深入,次一個章節,作者提到一個我從未聽過,被稱作 Over-Sampling 過取樣的演算法。透過這個演算法,可以利用時間來換空間啊。透過多次的取樣跟適當的演算法,竟然可以把 AVR 內部廉價的 10 bits 解析度的ADC,輕易的提升至高價高品質的 12 bits 的解析度。

文章標籤

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

前言:

在數學上,關於帶符號整數的除法,大家一定不知道,其實有兩種的。第一種叫做 Symmetric Division,中文稱作「對稱除法」。第二種叫做 Floored Division,中文稱作「向下取整數除法」。

這兩種除法,當它們在正整數時沒什們分別。但用在負整數時,兩個就有一些差異囉。對稱除法常用在處理器上,而向下取整數除法則被廣泛的使用在各種不同的程式語言中。所以當接觸一個新的程式語言時,通常必須先搞清楚它們用的是對稱除法,還是向下取整數除法。否則會得到錯誤的結果。

然後是我們的Arduino的Flash FORTH,對於一些混合算術的計算指令,居然只提供了不帶符號的雙整數運算。一些 ANSI FORTH 標準所規定的指令都付之闕如。有一些筆者認為是還蠻常用且十分重要的,沒有了還蠻不方便的。所以來補上這塊空缺吧,讓我們把這些缺少的指令一一補上。同時也搞清楚何謂「對稱除法」(Symmetric Division) 跟「向下取整數除法」(Floored Division)。兩者的性質跟差異在哪裡,跟它們的邏輯到底是什麼。

文章標籤

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

前言

來替 Arduino Uno上面的 Flash Forth 打通 I2C 的任督二脈吧。這個 I2C Bus 真的很重要,一但打通後就會很方便用 Flash FORTH 來做跟任何 I2C 裝置的溝通跟控制的應用囉。所以把這些經驗跟程式碼完整放在這個部落文囉。

然後 I2C 裝置裡面,最容易操作的就是 DS1307 這個 RTC 即時時鐘模組囉。所以我們用它來測試我們的 I2C 程式碼,順便來實作一下 ANSI FORTH 裡面的一個用來取得系統日期跟時間的 FORTH 指令 time&date。

 

文章標籤

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

前言

上一篇是flash FORTH在Digital I/O 的應用,這一篇,來開始攻克 SPI 介面吧。一但搞定 SPI 介面,flash FORTH 就可以有很多豐富的應用惹!

說起 SPI 介面,大家最常拿 Max 7219這顆用 SPI 來溝通的 8x8 LED 矩陣控制器來測試囉。所以順便來用它做個迷你跑馬燈來做測試吧,放在書房裡面看到那字跑啊跑的,其實蠻療癒的呢!(之前有用過 Arduino IDE, 也有用過 Raspberry Pi 做過同樣的東西囉,有興趣也請參考)

 

文章標籤

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

前言

前一篇已經順利成功在 Arduino Uno 上安裝了 Flash FORTH 語言,這一篇可以開始來應用囉。所以我們先來搞定用 Flash FORTH 自由控制 Arduino Uno 上的 Digital I/O 埠吧!

大家對 Arduino Uno 的喜愛是因為它的開發環境 Ardunio IDE 的簡潔,好用。也因為如此, Arduino Uno 的 IDE 也隱藏了太多底層對硬體 Atmega328 微處理器控制的細節。透過利用 Flash FORTH 來一步步建構出所有的控制,可以讓我們在不用組合語言的情況下,利用 FORTH 語言的即時交談性的特性,讓我們更能掌握 AVR 系列微處理跟內部硬體的特性。同時完全100% 解放出 Arduino IDE 為了簡單易用所犧牲掉的硬體控制。

所以來開始好好玩一下吧,計畫來發一系列的文章。先是 Digital I/O,然後 SPI,I2C,最後是內建的 ADC,PWM ... 等等。

文章標籤

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

前言

其實一直有個心願,很想自己寫個迷你的 FORTH 系統在目前最通用的微處理器平台,採用 Atmel 的 AVR 系列微處理的 Arduino上。不過真的太忙了,AVR組合語言也只學了一點點,實在是沒有時間啊!我們還是乖乖地使用現有的平台好囉。

然後最重要的是最近無意中發現這個 Arduino FORTH 的網站,真是驚為天人啊。已經有一點社群的架勢囉,所以來加入他們吧!😬

Arduino 上面可以用的 FORTH 系統大概有三種,第一個是丁陳漢蓀老師的 eFORTH,再來是很老牌的 amFORTH,最後是後起之秀,專門為嵌入式系統所開發的 Flash FORTH。

文章標籤

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