原文鏈接:http://www.shuaihuajun.com/article/ruff-beginner/
記得2016年大學(xué)剛畢業(yè)那個夏天吏夯,入手的Arduino開發(fā)板即横,由于對一些電路概念不熟悉在加上對Arduino開發(fā)使用的編程語言比較陌生,所以對Arduino的學(xué)習(xí)暫時擱置了跺嗽。2016年10月上旬页藻,開始在中科院信工所工作,閑暇時間比較多璃吧,有大量時間研究學(xué)習(xí)废境,于是入手Ruff開發(fā)板。
Ruff基于JavaScript語言噩凹,所以對于一個前端工程師來說學(xué)習(xí)Ruff更容易上手驮宴。Arduino的開發(fā)編程語言在C/C++的基礎(chǔ)上實(shí)現(xiàn),Arduino的開發(fā)環(huán)境和Processing的開發(fā)環(huán)境很類似堵泽,Processing編程是基于Java這款搶類型語言。
從我這個門外漢對Ruff和Arduino的使用體驗來講箩退,Ruff不論從生態(tài)還是硬件方面都不如Arduino優(yōu)秀佳谦。
最近對硬件編程又燃起了興趣,把Ruff板子重新拿出來啥刻,So Easy! Ruff的官網(wǎng)和社區(qū)已經(jīng)很久沒有更新了,估計是歇菜了娄涩。記錄一次Ruff的使用經(jīng)驗映跟,凡是走過必得留下痕跡的嘛。
首先到ruff官網(wǎng)ruff.io下載Ruff SDK努隙,我使用的蘋果系統(tǒng),因為本人不喜歡采用.dmg安裝包的一鍵安裝方式咽斧,總覺得安裝的不明不白的躬存,所以下載.zip格式的壓縮安裝包。將壓縮包解壓縮宛逗,放到家目錄盾剩,和我的NodeJS的壓縮包在一起,修改環(huán)境變量配置文件.bash_profile的配置侥锦,將解壓后的bin目錄加入環(huán)境變量中德挣,執(zhí)行source .bash_profile命令使配置環(huán)境變量生效快毛。
此時使用echo $PATH命令就能看到ruff的bin目錄已經(jīng)在環(huán)境變量中了。ruff的bin目錄只有兩個可執(zhí)行文件屯掖,一個是ruff另一個就是rap襟衰,更常用的是rap命令,至今也不知道ruff命令是做什么用的绍坝。
下面就是我覺得使用Ruff完成一次硬件編程應(yīng)該有的幾個步驟。
創(chuàng)意構(gòu)思
創(chuàng)意構(gòu)思這一步非常重要轩褐。如果沒有想法和切實(shí)可行的方案和預(yù)期想要達(dá)到的目的把介,就不可能一步步的解決問題,因為不知道自己在干什么拗踢。
由于現(xiàn)在是入門,目的非常簡單莫矗,就是通過按鈕的按下與釋放砂缩,在終端輸出一些字符。
創(chuàng)建項目
創(chuàng)建項目目錄 -> 進(jìn)入項目中 -> 初始化項目妹懒。終端一波輸出之后双吆,項目原型構(gòu)建完畢:
rap --versionruff -vmkdir hello-ruffcdhello-ruffrap init
初始化的項目目錄
添加驅(qū)動
外設(shè)就是外部設(shè)備好乐,可以是傳感器或者電子元件。我需要一個按鈕蔚万,從Ruff的盒子里找到一個大按鈕反璃,按鈕元件上有三個針,所以準(zhǔn)備三根導(dǎo)線統(tǒng)統(tǒng)插上淮蜈。這是一般思路梧田,電子元件上有幾根針就插幾根線侧蘸,但是有的元器件好像不是這樣鹉梨。
型號為ck002的大按鈕
從大按鈕的包裝上找到設(shè)備的名稱,我準(zhǔn)備的這個按鈕名稱是CK002析桥,大寫一律按小寫處理艰垂。此時記得cd到項目所在目錄內(nèi),然后rap device add ck002命令查詢可用的驅(qū)動娩怎,使用????按鍵選擇最近驅(qū)動(一般箭頭默認(rèn)會停留在最新驅(qū)動處)胰柑,一般情況下只需一路確定?即可。
可視化布局
Ruff比較人性化的一點(diǎn)是崩瓤,它提供可視化布局界面踩官,執(zhí)行rap layout --visual命令,ruff會自動打開瀏覽器颖系,出現(xiàn)類似下圖中的可視化布局界面辩越,你只要照著圖中的樣子,將導(dǎo)線連接起來即可黔攒。
把鼠標(biāo)放到某一根導(dǎo)線上亏钩,就能選中的這根導(dǎo)線欺旧,更清楚的顯示連接方式,我有時候會因為用到的電子元器件較多而看到眼花繚亂辞友。
ruff開發(fā)版與大按鈕布線方式
布線完畢
編寫人機(jī)交互邏輯程序
對于前端工程師,下面的代碼應(yīng)該不陌生戳晌。在代碼中痴柔,代表按鈕的元素是用類似jQuery的方式表示的,比如$('#ck002')即表示添加的按鈕豪嚎,這個#ck002作為按鈕的id在項目根目錄下的app.json文件中可以找到谈火。
編寫邏輯,按下按鈕紅色LED燈亮起扔字,松開按鈕紅色LED燈熄滅温技,這里提到的LED燈是Ruff開發(fā)板子上自帶的LED燈,當(dāng)然Ruff開發(fā)套件中也有LED燈篷角,不過這里只用到了一個按鈕元件系任。
'use strict'$.ready(function(error){if(error) {console.log(error)return}? $('#ck002').on('push',function(){console.log('Button pushed.');? ? $('#led-r').turnOn()? })? $('#ck002').on('release',function(){console.log('Button released.');? ? $('#led-r').turnOff()? })})$.end(function(){? $('#led-r').turnOff()})
部署
硬件連接完畢,軟件書寫完畢嘉蕾,下面將程序部署到開發(fā)板上上霜旧。執(zhí)行rap deploy -s命令,終端輸出正在部署的信息以清,如果沒有出現(xiàn)error崎逃,那就說明程序部署成功了。
我還需要打開一個新的終端界面个绍,用于輸出按鈕按下和松開時的輸出信息浪汪,就像是開發(fā)板與電腦之間的通信功能凛虽。在新的終端界面執(zhí)行rap log,提示開發(fā)板連接成功呀潭。此時連續(xù)按下至非、松開按鈕,終端上會連續(xù)輸出睡蟋,和程序想要實(shí)現(xiàn)的一致戳杀。
終端輸出