Tag Archives: labview

[LabVIEW]XBOX手把控制樂高NXT馬達 – 按鈕控制馬達轉或停

延續上篇的[類比搖桿漸進加減速], 本篇要介紹使用XBOX手把上的任一個按鈕來控制馬達轉動或停止。
按我下載程式碼(LabVIEW 2009以上)
Acquire Input Device指令的 button info 產生一個顯示器(indicator)之後,再使用unbundle by name指令將各分項拆出。我們要使用按鈕來控制馬達是否轉動。
 
使用button 2 (或任意按鈕) 搭配 case structure 來控制馬達轉動或停止。

 

 

 

[LabVIEW]XBOX手把控制樂高NXT馬達 – 類比搖桿漸進加減速

按我下載程式碼(LabVIEW 2009以上)

使用 LabVIEW 的 NXT Module 需另外安裝 LabVIEW NXT Module (免費) 或直接使用 LabVIEW Education Edition 版本。
XBOX手把有三組類比搖桿(X,Y,Z)與非常多的按鈕,可以充分利用,或者您也可以購買較便宜的 USB 遊戲手把,只要 Windows抓得到裝置,LabVIEW 就能順利取得手把資訊。
   
在Connectivity / Input Device Control 中找到 Initialize Joystick, Acquire Input Device 以及 Close Input Device 等三個指令, 並如下圖組合。對Acquire Input Device指令的 axis info 產生一個顯示器(indicator)之後,再使用unbundle by name指令將各分項拆出。我們要使用的是左側類比搖桿的上下移動來控制馬達轉動的速度。
XBOX 類比搖桿的資料範圍為 -32768~32767 共 65536解析度,樂高NXT馬達電力範圍則是 -100~100,因此我們將 Y axis 的值乘以 -100 再除以32768就能順利將類比搖桿狀態轉換為馬達電力。

          



[按鈕控制馬達轉或停]

按我下載程式碼(LabVIEW 2009以上)

Acquire Input Device指令的 button info 產生一個顯示器(indicator)之後,再使用unbundle by name指令將各分項拆出。我們要使用按鈕來控制馬達是否轉動。

使用button 2 (或任意按鈕) 搭配 case structure 來控制馬達轉動或停止。



[LabVIEW]取得滑鼠坐標與按鈕狀態

按我下載程式碼(LabVIEW 2009以上)

在LabVIEW中要取得電腦上的各樣裝置資訊是很簡單的, 本範例來說明如何取得滑鼠坐標與按鈕狀態。 這樣一來我們就能把整個螢幕當作一個觸控板, 或是按下滑鼠左右鍵來執行某些動作等等。

在Connectivity / Input Device Control 中找到 Initialize Mouse, Acquire Input Device 以及 Close Input Device 等三個指令, 並如下圖組合:

我們在一個 while 無窮迴圈中來取得軸向資訊(axis info) 與 按鈕資訊(button info), 對這兩個端點點右鍵, 再選擇”Create Indicator” 就可以在 Front Panel 上直接產生顯示器, 非常方便。

執行程式之後, 移動滑鼠就可以看到數值變化, 或者按下滑鼠左鍵會使 button 1 這個燈號亮起。 是不是很簡單呢?

 

LabVIEW for Arduino 套件更新囉

LabVIEW for Arduino 套件更新囉, 請參考CAVE先前的文章來看看LabVIEW 結合 Arduino 可以做到哪些事情.

什麼是LabVIEW for Arduino開發套件

安裝LabVIEW for Ardinuo開發套件

[Arduino] LED Blink by LabVIEW

首先您當然必須合法取得LabVIEW 2009以上的版本, 接著請下載 VI Package Manager. http://jki.net/vipm

再從VI Package Manager中安裝LabVIEW for Arduino套件就可以了.

[LabVIEW]Case Structure 數值範圍設定

程式在撰寫的時候常常需要把得到的數值分成好幾個類別,依據不同的類別來做不同的對應
假如我們現在輸入的是數值,而我們要判斷輸入的數值是對應到哪個範圍裡,在Case Structure中我們可以在條件的地方設定為0..10、11..20、21..30

但如果我們的範圍是會隨著程式、時間而改變的,我們就無法在條件的地方隨時做改變,這時我們就必須要換個程式的寫法來滿足我們要的需求,而最直觀的方式就是透過大於、小於的比較來達成:


上圖程式中我們有兩個範圍值,我們就必須要在Case Structure再包一個Case Structure,這樣的程式應該已經達到一般使用者能夠理解的極限了吧,這時候如果我們有三個、四個甚至更多的範圍值,我們就必須要再Case Structure裡面好幾層的Case Structure,這樣的程式不僅撰寫困難,錯誤的機會也隨著範圍值的增加而遞增

這裡推薦一種比較容易撰寫且讓程式可以不要看起來這麼複雜的方法:


我們使用In Range and Coerce.vi、大於、小於來確認數值是在哪個範圍內,再將每個布林值組成一個陣列,最後轉成數值,因此最後就只會有幾個值出現,如圖有三個範圍值,則有四個範圍,最後出現四個值
8(1000)、4(0100)、2(0010)、1(0001)

[LabVIEW] 距離量測

撰文: 謝宗翰老師

最近在煩惱要怎麼量測一張圖上任意一條非直線的長度。也就是說,希望可以畫一條不規則的線,並得到總長度。要做到這件事,我們必須要會讀取圖檔、在圖上畫多條相連直線、計算線上各端點的座標並計算長度和。

試了半天,結果發現原來 LabVEIW 早就提供很好的工具了,那就是 ROI tools。ROI 是 region of interest 的意思,顧名思義,就是所謂「感興趣的區塊」,然而事實上它不一定要是個「區塊」,也可以是一條線段。我們可以直接在 Front Panel 上的 image control 叫出 ROI tools,也可以選擇要顯示那些工具:

因為我們是要畫不規則直線,再算各線段長度和,因此使用 Polyline tool。

接下來,只要透過 Property node 即可取出 使用者所畫的 ROI 之詳細資訊:

如上圖所示,最後出來的陣列即是我們所畫的 Polyline 各線段的端點座標,之後只要再經過簡單的計算即可得到長度和。

一個簡單的應用,使用此程式算出 google map 上兩個位置間的距離(要先校正過比例尺):

圖中是計算捷運公館站與台北車站間的路程,其中青綠色的線即是我們自己畫的 ROI。

[LabVIEW for Arduino] Digital Read基本介紹

ARDUINO 上提供了很多的數位 I/O 的PIN腳

在LabVIEW使用上其實非常簡單,只要拉出Arduino >> Low Level >> Digital Write Pin.vi 或 Digital Read Pin.vi,這兩個vi就可以做數位訊號的讀取或寫入。如果要連續讀取只需要在外面加個迴圈即可。


這個範例是接收開關的值,將開關的兩腳分別接到5V與Pin 22,此時將開關扳動,就可以在人機介面看到結果。

 

[LabVIEW for Arduino] Load the LabVIEW Interface for Arduino Firmware

在使用LabVIEW控制Arduino時,不曉得各位使用者有沒有遇過同樣的情形?就是當我們將LabVIEW程式撰寫好後,要將他upload到arduino時,卻發生錯誤?

這是因為有個很重要的步驟必須要先完成:要先將Arduino程式灌入Arduino版上

大家可以參考此網頁
http://digital.ni.com/public.nsf/allkb/8c07747189606d148625789c005c2dd6?openDocument

開啟Arduino主程式後,開啟下列路徑的檔案:
C:\Program Files\National Instruments\LabVIEW 2010\vi.lib\LabVIEW Interface for Arduino\Firmware\LVIFA_Base

將此檔案upload至Arduino上

此時再將執行看看LabVIEW的程式,是不是就不會出現Error了呢?

[LabVIEW for Arduino] LED Blink by LabVIEW

首先我們必須要先放個Ini.vi,並且設定VISA跟板子型號,接著在程式執行一開始使用Set Digital Pin Mode.vi來設定此Pin腳是要輸出還是輸入,拉出一個for loop設定程式要回圈幾次,並且使用shift register來記錄high/low及time delay設定閃燈週期,獎high/low輸入至digital write pin,並且設定其pin 腳,最後再放個close.vi釋放控制權。

我們可以在fornt panel 放一個燈泡,來對照arduino pin13旁的LED與front panel的燈泡是否同步。

[LabVIEW] 程式執行中開啟sub VI

程式下載請按我

當一個程式在執行時,不外乎會用到一些Sub VI,我們可以透過下面的方法,當程式執行到Sub VI時,開啟它的Front Panel,此時可以看到Sub VI的執行過程或者是透過它設定一些參數等。

首先我們對著程式裡的Sub VI點選右鍵,選擇”SubVI Node Setup…”

將中間兩項勾選起來

我們由下面這個程式當做範例,當程式一開始執行時,就會執行到Sub VI,其front panel就會跳出

這時我們就可以在這裡設定參數,點選enter後將參數輸出,並且SubVI視窗會自動關閉

此時參數就會在Numeric2的indicator看到啦~~

範例檔案請從此下載

[LabVIEW 酷專題] Leg-Wheel Hybrid Mobile Robot @ NTU ME

台大機械林沛群教授帶領學生做的專題Leg-Wheel Hybrid Mobile Robot

使用NI Compact RIO + LabVIEW進行控制。亮點在於輪子折半之後就變成腿,如此一來在平坦地面就能以輪子高速前進,到了障礙環境就能改為以腿前進。相當實用的設計唷!


安裝LabVIEW for ardinuo

Arduino 也有為LabVIEW 撰寫toolkit,如果習慣使用圖形化介面來撰寫程式的朋友可以試看看~

首先我們先到下面網址點選下載:
http://sine.ni.com/nips/cds/view/p/lang/zht/nid/209835

我們需要先安裝JKI ,他是專門在撰寫LabVIEW第三方外掛的公司,必須要透過這個平台才能安裝 ardinuo toolkit

安裝完JKI後就可以點選下載toolkit啦~

在左上角點選你LabVIEW的版本及安裝

下載後我們就可以在function裡面看到Ardinuo toolkit了~

LabVIEW的Arduino開發套件

http://sine.ni.com/nips/cds/view/p/lang/zht/nid/209835


NI針對Arduino套件的LabVIEW介面可讓您以簡單的LabVIEW操作介面來與Arduino微控制器進行互動。

 

藉由這個toolkitLabVIEW您可以控制或從Arduino微控制器取得資料,進而透過LabVIEW內建數以百計的函式庫進行資料分析或是開發控制Arduino硬體的演算法並將您的成果以優雅的介面呈現

 

Arduino的開發環境在此變成了一個以序列通訊埠與LabVIEW程式互動的I/O引擎。這可讓您快速地將Arduino上的資訊移到LabVIEW中,而不需要繁瑣的通訊調整,同步甚至要透過C語言來處理。您只要使用LabIVIEW中的開檔,讀寫檔案與關檔功能就可以存取Arduino上的數位/類比, PWM, I2CSPI等訊號。如果要進一步了解底層是如何運作好進一步修改並擴充功能,您只要將LabVIEWsubVI展開或是進到Arduino開發環境就可以了。

 

Arduino微控制器必須以USB序列通訊埠藍牙或XBee連接到已安裝LabVIEW的電腦Toolkit不提供離線操作

 

支援資訊

更多支援資訊與常見問題請參考 ni.com/arduino.

如何在Remote mode下使用mindsensors產品

 mindsensors是一家第三方的樂高感應器與控制器製造商,他們的產品豐富,從NXT專用的攝影機NXTCam到專業的微型線性致動器都有,而他們的產品也都可以與所有樂高相關的程式語言相容,如NXT-G、NXC、LeJOS、LabVIEW、RobotC…等。

然而,在mindsnesors的官方說明文件上,只有說明如何在LabVIEW的Direct mode(target to computer)下使用他們的產品(說明下載請點我),也就是說傳輸線一定要連在NXT上,並讓電腦執行所有運算,NXT只是電腦的延伸而已。

 如上所述,mindsensors的說明文件只教我們如何在Direct Mode下匯入他們的.mnu檔(細節請參閱上段的說明連結),而至於要如何在Remote Mode(target to NXT)下使用他們的產品則沒有多做說明,其實,方法是一樣的,您可以在所下載的mindsensors.com LVEE Toolkit資料夾裡找到一個名為Remote的資料夾,裡面及有另一個dir.mnu檔,要匯入它,首先將LabVIEW設為Remote Mode,再匯入這個dir.mnu檔,您就可以在Remote mode下使用mindsensors的產品了。