Showing posts with label LabVIEW. Show all posts
Showing posts with label LabVIEW. Show all posts

Friday, July 31, 2015

Solved: error: 'TKD2' was not declared in this scope, LIFA_Base compile error

วันนี้ จะมาเล่าถึงปัญหาที่เจอในการเบิร์นโค๊ด LIFA_Base ที่เราใช้ในการทำให้ Arduino ของเราสามารถรับคำสั่งจาก LabVIEW ได้

ปัญหานี้ เริ่มเกิดขึ้นตอนที่ Arduino IDE เวอร์ชั่นใหม่ๆ ได้เพิ่ม Libraries ที่เกี่ยวกับ RobotIRremote แล้วไปประจวบเหมาะกับ LabVIEW interface for Arduino tool kit เข้าใจว่า น่าจะตั้งแต่เวอร์ชั่น 2.xx เป็นต้นไป จะมี libraries ที่เกี่ยวกับ IR ติดมาด้วย

ทีนี้ พอเราทำการ Compile LIFA_BASE ซึ่งมันได้ทำการเรียกหา IR libraries ที่อยู่ใน folder เดียวกับมันมา compile มันจะฟ้อง Error

“C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
^
Error compiling.”

C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope

ซึ่งเจ้า Arduino IDE นั้นไปเอา IR libraries ของมันมา compile แทน ซึ่งไม่น่าจะเป็นแบบนั้น มันก็เลย Error ขึ้นมา

วิธีทางแก้ไข ก็ไม่ยากครับ เราก็ทำการย้าย RobotIRremote libraries ของ Arduino ออกไปก่อน ไปไว้ที่ไหนก็ได้ อย่าให้ Arduino IDE มองเห็น จากนั้น ก็ทำการ compile LIFA_Base ใหม่ อีกครั้ง

move RobotIRremote to another folder

คนที่เจอปัญหานี้ น่าจะเข้าใจ ผมขอไม่อธิบายละเอียด เอาเป็นว่า แก้ไขตามนี้ ก็คิดว่าจะโอเคหล่ะ 

เอวังก็มีด้วยประการะฉะนี้

อ่านเพิ่มเติม...

Monday, March 25, 2013

รีวิวโปรแกรม In-sight กับ Smart Camera ของ Cognex

เมื่อวันที่ 22 มีนาคม 2556 ผมมีโอกาสได้ไปอบรมการใช้งานโปรแกรม In-Sight ซึ่งเป็นโปรแกรมประเภท Machine Vision คือสามารถเขียนโปรแกรมตรวจสอบงานในสายพานการผลิต (จริงๆ ก็แล้วแต่จะไปประยุกต์ใช้ แต่ ถ้านำมาใช้ในสายพานการผลิตจะเหมาะกว่า) เช่น การตรวจสอลสลาก การตรวจสอบหาจุดบกพร่องของงานที่ผลิตออกมา การนับจำนวนชิ้นงาน ซึ่งในอุตสาหกรรมการผลิตชิ้นส่วนต่างๆ แม้กระทั่งการผลิตยา และอาหาร ก็มีงานที่เกี่ยวกับ Machine Vision รวมอยู่ด้วย

ซึ่งเจ้าโปรแกรมนี้ หากใครเคยได้ใช้โปรแกรม VisionBuilder ของทางค่าย NI แล้วหล่ะก็ คงทำความคุ้นเคยกับมันได้ ไม่ยากนัก เพราะเค้าออกแบบมาแทบจะคล้ายกัน คือ เน้นให้สามารถเขียนโปรกรมผ่าน Graphic เลือกค่าต่างๆ ผ่านบล๊อกการทำงาน แต่ละขั้นตอน สุดท้ายก็ได้โปรแกรมตรวจสอบชิ้นงานอย่างที่ต้่องการ ในเวลาอันรวดเร็ว เพราะงานพวกนี้ จะว่าไปแล้ว ก็มีลักษณะที่ซ้ำกันไป ซ้ำกันมา ต่างกันตรง สภาพชิ้นงานและภาพที่ได้จากชิ้นงาน และตำแหน่งที่จะตรวจวัดชิ้น ซึ่งขึ้นอยู่กับว่า เรากำลังตรวจวัดอะไร เช่น ตรวจวัดระดับของเหลว การวัดว่ามี หรือไม่มีชิ้นส่วนชิ้นใดชิ้นหนึ่ง หรือวัดความถูกต้องของชิ้นงานเมื่อเทียบกับต้นแบบ

ดูภาพเปรียบเทียบหน้าตาของโปรแกรม

In-Sight

หน้าตาโปรแกรม In-Sight

VisionBuilder

หน้าตาโปรแกรม Vision Builder


แต่ วันนี้ผมไม่ได้มาพูดถึงโปรแกรม VisionBuilder ครับ ผมจะมาพูดถึงการทำงานคร่าวๆ ของโปรแกรม In-sight เจ้าโปรแกรม  In-sight โดยหน้าที่แล้ว เป็นโปรแกรมที่ช่วยให้งาน Machine vision ง่าย และเสร็จในเวลาอันรวดเร็ว หน้าที่ของโปรแกรมเมอร์ ก็คือ ทำการนำภาพที่ได้จากกล้องมาทำการประมวลผล โดยผ่านขั้นตอน ที่ทางโปรแกรมได้วางเอาไว้ แต่ละขั้นตอน และทำการกำหนดค่าต่างๆ ตามที่ต้องการ ซึ่งในโปรแกรม จะมี อัลกอริธึมในการประมวลผลภาพ ไม่ว่าจะเป็นการทำ Threshold การหาขอบภาพ การนำภาพมาเปรียบเทียบกับภาพต้นแบบ ซึ่งอัลกอริธึมเหล่านี้ มีพร้อมอยู๋แล้วในโปรแกรม In-Sight หน้าที่ของเรา คือใช้มันให้เป็น จัดลำดับเงื่อนไขอย่างถูกต้อง เราก็จะได้โปรแกรม Machine Vision ที่สามารถนำไปใช้ได้อย่างรวดเร็ว

ความแตกต่างของโปรแกรมนี้ กับโปรแกรมอื่นๆ ทั่วไป คือ โปรแกรม In-sight นี้ ให้ดาวน์โหลดไปใช้ฟรีๆ แค่ นำ key ที่ได้จากโปรแกรม ไปลงทะเบียนผ่านหน้าเว็บ เราก็จะได้ key ที่ถูก gen ออกมา แล้วนำกลับมาลงทะเบียนที่โปรแกรม เพียงเท่านี้้ เราก็สามารถนำโปรแกรมไปใช้ได้เลย อะไร มันจะดีขนาดนี้ แต่ เดี๋ยวก่อน เจ้าโปรแกรม In-sight นี้ ใช้ได้แต่เฉพาะกับกล้อง Smart Camera ของ Cognex เท่านั้น ไม่สามารถนำไปใช้กับกล้อง Smart Camera ของบริษัทอื่นๆ ได้ 

ขอย้อนกลับไปเรื่องกล้องสักเล็กน้อย ในตลาดของงาน Machine Vision เราแบ่งกล้องได้เป็นสองประเภทใหญ่ๆ (ณ ตอนนี้) คือ
1. กล้อง Industrial ทั่วๆ ไป ซึ่งต้องมีคอมพิวเตอร์ 1 เครื่องในการรันโปรแกรม และรับภาพที่ได้จากกล้องพวกนี้มาประมวลผล 
2. กล้อง Smart Camera ซึ่งกล้องพวกนี้ต่างจากล้องแบบแรก คือ มันสามารถทำงานได้ด้วยตัวของมันเอง พูดง่ายๆ ก็คือ ตัวมันเองมีคอมพิวเตอร์ขนาดเล็ก อยู่ภายใน จะบอกว่าเล็กมากๆ แต่ ก็สามารถทำงานได้ด้วยตัวของมันเอง

Smart Camera

พวกกล้อง Smart Camera เกี่ยวข้องอย่างไรกับโปรแกรม In-sight ?

คือมันเป็นอย่างนี้ครับ คือหลังจากเราได้ดาวน์โหลดโปรแกรม In-Sight และได้ทำการติดตั้งเสร็จแล้ว จากนั้น เรานำภาพที่ได้จากกล้อง Smart Camera มาทำการประมวลผลตามลำดับขั้นตอนจนเป็นที่น่าพอใจแล้ว เราก็จะทำการอัพโหลดโค๊ดที่เราเขียนทั้งหมดนี้ กลับเข้าไปที่กล้อง Smart Camera ครับ เจ้าตัวกล้องนี้ ก็จะเข้าใจโค๊ดที่ถูกอัพโหลดมาใส่ที่ตัวมัน และทำงานตามลำดับที่ถูกกำหดนดไว้แล้วในโค๊ด จากนั้น ที่ตัวกล้องจะมีช่องสัญญาณเอาท์พุต เอาไว้ให้เรา ส่งค่ากลับออกมาจากโปรแกรม เช่น หากกล้องตรวจพบเจอสิ่งผิดปกติ ให้ส่งสัญญาณ มาหยุดที่สายพานลำเลียงชิ้นงาน หรือส่งออกมาแสดงค่าที่ไฟสถานะของเครื่องจักร นอกจากนี้ มันยังมีช่องอินพุต เพื่อรับสถานะ เช่น จากเซนเซอร์ต่างๆ ได้อีกด้วย ยิ่งถ้ากล้องมีราคาแพง จะยิ่งมีลูกเล่นพวกนี้เยอะตามไปด้วย ซึ่งในการทำงาน เราสามารถปล่อยให้กล้องทำงานได้ตามลำพัง โดยไม่ต้องต่อคอมพิวเตอร์กับกลัองอีกต่อไป ซึ่งเจ้าตัวกล้อง Smart Camera พวกนี้จะประมวลผลบนตัวของมันเองเลย หากจะถามเรื่องความเร็วในการประมวลผล เท่าที่ผมถามจากผู้รู้ เค้าก็บอกว่า ถ้างานที่ต้องการวัด หรือตรวจจับนั้น วิ่งผ่านกล้องด้วยความเร็วไม่เกิน 600 ชิ้น ต่อ นาที ก็สามารถใช้กล้อง Smart Camera พวกนี้ ได้ ที่ต้องบอกว่า ไม่เกิน 600 ชิ้น ต่อ นาที นั้น ก็เพราะว่า ด้วยความที่มันมีคอมพิวเตอร์ขนาดเล็กอยู่ภายในนั้น มันก็ย่อมมีข้อจำกัดในการประมวลผล ซึ่งแน่นอน ย่อมสู้คอมพิวเตอร์ตั้งโต๊ะ ไม่ได้อย่างแน่นอน

แล้วถ้าถามว่า ข้อเสียของกล้อง Smart Camera นอกจากเรื่องความเร็วในการประมวลผลหล่ะ อีกประเด็นหนึ่งก็คือ เอาหล่ะ โปรแกรม  In-Sight หน่ะมันฟรี ก็จริงอยู่ แต่ ราคาโปรเจคทั้งหมด มันจะไปตกอยู่ที่กล้องครับ ซึ่งแพงมากๆ คือหลังจากผม ได้ยินเรื่องราคาแล้ว ผมเข้าใจเลยว่า งาน Machine Vision ทำไมราคา มันถึงได้มากขนาดนั้น

แต่ ถึงราคาจะแพงขนาดนั้น แต่ในแง่ การนำไปใช้งาน ก็ สะดวกสบายและคล่องตัวมากเลย นอกจากเรื่องโปรแกรมที่ง่าย และสร้างงานได้อย่างรวดเร็ว ผมขอยกตัวอย่างให้ฟัง สมมติว่า คุณไปติดตั้งระบบไว้ ณ ที่โรงงานแห่งหนึ่ง ซึ่งอยู่คนละจังหวัด เกิด วันดีคืนดี งานมีปัญหา คือ อาจจะด้วยสาเหตุอะไรก็แล้วแต่ ทำให้คุณจะต้องไปทำการแก้ไขโปรแกรมที่อยู่ในกล้อง คุณจะทำอย่างไร หากไม่ต้องเดินทางไปที่โรงงานแห่งนั้น ง่ายๆ ก็คือ คุณก็ให้คนหน้างานนั้น ทำการ capture ภาพที่ได้จากกล้อง Smart Camera ตัวนั้น ส่งกลับมาให้คุณ โดยที่คุณสามารถที่จะทำการปรับแต่งโปรแกรมที่คุณได้ Backup ไว้แล้ว กับภาพที่ได้ขณะนั้น คุณก็สามารถแก้ไขปัญหาได้ และสามารถทำการส่งไฟล์โค๊ดที่ได้รับการแก้ไขแล้วกลับไปที่หน้างาน และอัพโหลดใส่กลับไปที่ตัวกล้อง โดยที่คุณไม่ต้องเดินทางไปที่หน้างานเลย เห็นไหมหล่ะครับ ว่ามันสะดวกขนาดไหน เพราะเจ้ากล้อง Smart Camera พวกนี้ มันทำได้สบาย อยู่แล้ว บวกกับโปรแกรม In-Sight ที่โหลดมาได้ฟรีๆ มองการไกล ผมก็ว่ามันก็คุ้มอยู่นะ


ก็เป็นเรื่องที่จะมาเล่าสู่กันฟัง หลังจากที่ได้รับการอบรมมา จริงๆ ผมต้องการทราบว่าเจ้าโปรแกรม In-Sight มันต่างจากโปรแกรม VisionBuilder ที่ผมเคยใช้อยู่อย่างไร ซึ่งหลังจากที่ได้รับการอบรมแล้ว ก็มีความเข้าใจกับกล้อง Smart Camera และเจ้าตัวโปรแกรม In-Sight มากขึ้น ต้องขอขอบคุณทีมงาน Cognex Training Thailand เป็นอย่างยิ่งครับ ที่ให้ผมได้เข้ารับการอบรมในครั้งนี้

In-Sight Training

In-Sight Training

อ่านเพิ่มเติม...

Tuesday, October 16, 2012

LabVIEW Interface for Arduino ( Part II)

    จากตอนที่แล้ว (คลิกกลับไปอ่าน) เป็นการติดตั้งโปรแกรมเสริมทางฝั่ง Labview เพื่อทำให้ Labview ติดต่อกับ Arudino อย่างมีรูปแบบ เพื่อให้ง่ายต่อการพัฒนาโปรแกรมต่อไป และทำการโปรแกรมส่วนเฟิร์มแวร์ให้ Arudino เพื่อให้ Arduino ติดต่อกับ Labview ผ่านทาง Serial comm

หากเรามองที่ซอร์ฟแวร์ที่เป็นหัวใจหลัก ที่ทำให้ทั้งสองอย่างเข้าใจกัน เราสามารถพิจารณาได้ดังนี้

ทางฝั่งของ Labview
- Labview Interface for Arduino tool kit ซึ่งเป็นโปรแกรมเสริมให้กับ Labview เราจะต้องเลือก tool block ให้เหมาะสมกับหน้าที่การทำงานของ pin ของ arduino UNO  (ขึ้นอยู่กับการออกแบบ และการใช้งานโปรแกรม)

Labview Interface for Arduino tool kit Arduino Board

ทางฝั่งของ Arduino
- Firmware (โค๊ด) ซึ่งเขียนด้วยภาษา wiring ของทางฝั่งของ arduino ในที่นี้ผมจะเรียกตามโปรเจคของมัน ซึ่งก็คือ LVIFA_Base
  ซึ่งเราจะต้องทำการ burn ลงบนบอร์ด Arduino (ซึ่งจะทำการ burn ลงแค่ครั้งเดียวเท่านั้น)

LVIFA_Base

เมื่อเราติดตั้งโปรแกรมทั้งสอง ลงบน PC และบน Arduino board เรียบร้อยแล้ว ทีเหลือก็เหลือเพียงทำให้ทั้งสองรู้จัก และเข้าใจคำสั่งที่ต่างฝ่าย ต่างส่งมาให้กันและกัน ก็แค่นั้นเอง

คำถามก็คือ

Labview Interface for Arduino tool kit และ LVIFA_Base มันเข้าใจกันได้อย่างไร ?


คำตอบก็คือ ทั้งสองโปรแกรมนี้ รับส่ง ข้อมูล ซึ่งเป็น คำสั่ง และ ผลลัพธ์ผ่านทางการสื่อสาร Serial Communication ซึ่ง PC จะมองเห็นบอร์ด Arduino เป็นเหมือน Comport อนุกรม(เสมือน)  ซึ่งข้อมูลจะวิ่งเข้า ออก ณ จุดนี้ จาก PC ไป Arduino และจาก Arduino ไป PC

แล้วมันคุยกันอย่างไรหล่ะ?


คำถามนี้ ดูเหมือนจะไม่ต้องไปสาวลงไปลึกมากนัก เพราะผู้พัฒนาต้องการให้มองเจ้า Labview Interface for Arduino tool kit และ  LVIFA_Base เป็นเสมืองกล่องดำ (Black box) ที่เราไม่จำเป็นต้องไปรู้การทำงานภายในของมัน ขอแค่เพียงเรารู้แค่ว่า จะเอามันมาใช้งานได้อย่างไรก็พอ

แล้วเราจะเริ่มต้นใช้งานมันได้อย่างไร?


อันนี้สิ เป็นเรื่องสำคัญ หากไม่มีตัวอย่างโปรแกรม และ Help มาให้แล้วไซร้ เจ้า Black box ที่ว่า ก็ไม่มีความหมายเลย ก็เพราะ เราก็ยังนำมันมาใช้ไม่เป็นอยู่ดี ต่อให้โค๊ดที่เขียนอยู่ภายใน เลิศหรูอลังการเพียงใด มันก็คงเป็นการลำบากที่เราจะนำของที่ควรจะนำมาใช้ได้เลย แต่กลับต้องมานั่งไล่โค๊ดเพื่อให้เข้าใจการทำงานของมัน จึงจะเอามาใช้งานได้ ถ้าเป็นแบบนั้นจริง ก็คงไม่ดีแน่ๆ

เมื่อเรารู้แล้วว่า ตัวอย่าง และ help ที่ให้มานั้น เป็นจุดเริ่มต้นการนำมาใช้งาน เราก็เริ่มจากตัวอย่างของมันกันเลย ให้ไปที่
C:\Program Files\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Interface for Arduino\Palette Examples
(อาจจะไม่เหมือนกัน ขึ้นอยู่กับเวอร์ชั่นของ Labivew)

ซึ่งจะปรากฏตัวอย่างมากมาย ให้เราเริ่มต้น ในที่นี้ เราจะมาเริ่มต้นจาก Analog Read Pin Example.vi ถ้าเราดับเบิลคลิกที่ไฟล์นี้ ก็(ควร)ที่จะเข้าสู่โปรแกรม Labview  และเปิดหน้าต่างของโปรแกรมนี้เลยทันที

Palette Examples

จากรูป ( ผมกด Ctrl+T เพื่อให้แสดงผล Tile left and Right )  ซ้ายมือ เป็นการออกแบบหน้าต่าง GUI คือเป็นส่วนที่ให้ผู้ใช้งานไว้สำหรับทำงาน ส่วนขวามือ เป็นหน้าที่ของโปรแกรมเมอร์ที่จะต้องทำการเขียนโปรแกรมแนว Graphic Programming เพื่อให้โปรแกรมที่ออกแบบไว้ทำหน้าที่ได้อย่างที่ต้องการ ซึ่งส่วนใหญ่แล้ว โปรแกรมเมอร์ก็จะทำหน้าที่ผู้ใช้งานไปด้วยในตัว

Analog Read Pin Example.vi

ในทางด้านซ้ายมือ เราเรียนรู้ได้ไม่ยาก หากมีพื้นฐานเรื่องการเขียนโปรแกรมบน Labview มาก่อนแล้ว แต่ที่เป็นปัญหาตอนนี้ คือ การนำ Labview Interface for Arduino tool kit มาใช้  ซึ่งมันมีลำดับการทำงาน พอจะอธิบายคร่าวๆ ได้ดังนี้

ถ้าเราต่อวงจรในโลกแห่งความจริง หมายถึงต่อวงจรจริงๆ ตามวงจรนี้ โดยเราให้ แรงดันที่ถูกแบ่งจาก R ปรับค่าได้ ต่อเข้ากับขา Analog In ช่อง AN0 ของ Arduino 

Analog Read Pin Example circuit

แล้วทำการเขียนโปรแกรมบน Labview ด้าน Block Diagram ตามรูปภาพ

Analog Read Pin block diagram

ความหมายของมันก็คือ โปรแกรมจะเริ่มจากหมายเลข 1 tool block ส่วนนี้ จะทำหน้าที่เตรียมการสื่อสารทาง Serial Communication ซึ่งมีพารามิเตอร์ที่ถูกกำหนดเป็นค่าเริ่มต้นไว้เรียบร้อยแล้ว หากเราสนใจให้ดับเบิลคลิกที่ Init จะปรากฏหน้าต่างของโปรแกรมย่อยของ Labview ขึ้นมาอีกที

จากนั้นเมื่อโปรแกรมได้ถูกกำหนดค่าเริ่มต้นในการสื่อสารกับ arduino เรียบร้อยแล้ว ข้อมูลต่างๆ จะวิ่งไปตามสายสีชมพู ซึ่งจะเป็นข้อมูลที่ถูกผสมรวมกัน ทั้งข้อมูลที่เป็นตัวเลข ตัวอักษร ค่าอ้างอิง ข้อมูลอะเรย์ ตรงนี้ เราจะยังไม่ต้องรู้ว่ามันประกอบไปด้วยอะไรบ้าง ประเด็นของเราก็คือ ข้อมูลต้องเป็นชนิดเดียวกัน จึงจะนำมาต่อกันได้ ถ้าเป็นคนละชนิด คนละประเภท ต้องทำการแปลง ถอดออก หรือ รวมกันใหม่ เพื่อให้เป็นข้อมูลประเภทที่ตรงกับช่องที่จะต่อเข้า block ต่อไปเสียก่อน จึงจะต่อกันได้

จากเส้นสีชมพูที่เราเห็น ข้อมูลเหล่านี้ นี่แหละ ที่จะวิ่งเข้าสู่ Comport อนุกรม(เสมือน) ฉะนั้นไม่ว่า arduino board จะส่งอะไรเข้ามา หรือ รับข้อมูลอะไรออกไป มันจะใช้ข้อมูลในเส้นสีชมพูในการอ้างอิง

แต่เมื่อเข้ามาอยู่ใน loop while ของโปรแกรม (ส่วนที่ 2 ) โปรแกรมจะวนอยู่ในนี้จนกว่าจะมีกดปุ่ม stop หรือไม่ก็เกิดเหตุการณ์ Error จากเส้นสีเหลือง จึงจะหลุดออกจาก loop while แล้วคืนค่าอ้างอิงที่เคยจองไว้ กลับสู่ระบบต่อไป (ส่วนที่ 3)

กลับมาที่ส่วนที่ 2 อีกครั้ง เป็นส่วนที่โปรแกรมเราจะทำงานเป็นหลัก (หลังจากผ่านส่วนที่ 1 ในตอนเริ่มต้นมาแล้ว) ในส่วนนี้ เราเลือกใช้ tool block ที่เป็น Analog Read นั่นก็เพราะว่า ในวงจรจริงที่เราได้ต่อไว้นั้น มีการนำเข้าสัญญาณ Analog นั่นก็คือแรงดันไฟฟ้าไฟกระแสตรงที่ถูกแบ่งมาจาก ตัวต้านทานปรับค่าได้ เข้ามาที่ขา AN0 ของ Arduino ที่ทำหน้าที่เป็นขาอินพุต (เท่านั้น) จะเห็นได้ว่า tool block ที่ถูกเลือกไว้ จะต้องสัมพันธ์กันกับวงจรที่ต่อจริง โดยเลือกใช้ Analog Read ที่ถูกกำหนดค่า Analog Input Pin = 0  จะเห็นได้ว่าสัมพันธ์กันจริง ทั้งวงจรที่ต่อจริง กับ วงจรที่ต่อบน Labview

จากนั้น เราต้องการให้มันแสดงผลที่หน้าจอคอมพิวเตอร์ เราก็แค่หา Guage แสดงค่า มารับที่ช่อง Voltage ของ Analog Read Pin เพียงเท่านั้น เราก็จะได้โปรแกรมง่ายๆ ที่สามารถนำค่าจากโลกภายนอก เข้ามาแสดงผลในโลกของคอมพิวเตอร์ได้แล้ว 

Analog Read Pin setting and display

หมายเหตุ เอาเมาส์ชี้ที่ tool block แล้วกด Ctrl +H จะปรากฏหน้าต่างแสดงคำอธิบาย tool block นั้นๆ

analog read pin help

ถ้าจะมีคำถามว่า แล้วถ้าต้องการเอา arduino ไปวัดค่าจากเซ็นเซอร์ที่เป็นตัวอ่านค่าอุณหภูมิ หรือ ค่ากระแสไฟฟ้าได้ไหม ก็ต้องถามกลับไปว่า ตัวอ่านค่าอุณหภูมิกับตัวอ่านค่ากระแสไฟฟ้า ให้เอาท์พุตออกมาเป็น Analog ไหมหล่ะ ถ้าใช่ ตัวอย่างที่ได้นำเสนอไป ก็เกือบจะเอาไปใช้ได้เลย เพราะเรากำลังรับค่าที่เป็นแรงดันไฟฟ้า ที่แปรผันตามค่าตามที่มันกำลังวัดค่าอยู่นั่นเอง เพียงแต่ค่าที่เราต้องการให้มันแสดง มันไม่ใช่ค่าแรงดันไฟฟ้า เราต้องการอ่านค่าอุณหภูมิหรือค่ากระแสไฟฟ้า ฉะนั้นค่าที่รับมาได้จะเป็นค่าแรงดันไฟฟ้า เราก็ต้องนำค่าเหล่านั้นมาทำทางคณิตศาสตร์โดยใช้เครืองมือ + - x / ทาง labview ในการแปลงค่าแรงดันให้กลายเป็นค่าที่เราต้องการ โดยสมการในการแปลงมันก็อยู่ในดาต้าชีทของเซ็นเซอร์เบอร์นั้นๆ นั่นแหละ

ยังมีตัวอย่างที่อยู๋ในโฟวเดอร์ดังกล่าวอีกเยอะแยะ หากเราเข้าใจตัวอย่างนี้แล้ว เราก็สามารถที่จะเข้าใจตัวอย่างอื่นๆ ได้อย่างไม่ยากเย็นนะ ขอให้เรามีพื้นฐานของ Labview Programming + Circuit + หน้าที่การทำงานของแต่ละ pin ของ arduino เราก็น่าจะพอแก้ไข ปรับปรุง พัฒนาจากตัวอย่างที่เค้าให้มาได้อยู่แล้ว

หวังว่าพอจะได้แนวทางการนำไปประยุกต์นะครับ

อ่านเพิ่มเติม...

Wednesday, October 10, 2012

Legged Robotics

Legged Robotics ห้องทดลองเคลื่อนที่อัตโนมัติ (Autonomous System Lab) ได้พยายามที่จะค้นคว้าหารูปแบบการออกแบบกลไก ที่สามารถเคลือนไหวได้อย่างพลวัต ไม่ว่าสถานะการณ์จะเป็นอย่างไร เจ้าหุ่นยนต์ที่เค้าคิดจะออกแบบนั้น ก็ยังที่จะสามารถเคลื่อนที่ผ่านไปได้ และสามารถที่จะคิดและปรับตัวเองให้เข้ากับสภาพของเส้นทางที่พวกมันเคลื่อนที่ไปด้วย

เห็นหน้าตาหุ่นยนต์ตัวนี้ แล้ว รู้ได้เลยทันทีว่า “ขา” ของมันคือส่วนที่สำคัญที่สุด และเป็นพระเอกของการเคลือนไหวแบบพลวัต หลบหลีกสิ่งกีดขวาง ปรับสมดุลของจุดศูนย์ถ่วงของตัวมันเอง รับแรงกระแทก และส่งแรงกระแทกนั้นกลับไปประมวลผล เพื่อปรับระยะการยืดและหดตัวของสปริงได้อย่างพอเหมาะ นับว่า เป็นอัฉริยะภาพทางวิศวกรรมจริงๆ

เห็นสมการแล้ว ทึ่งเลยครับ มันคงไม่ใช่เรื่องง่าย ที่ใครที่คิดอยากทำ แล้วก็ลงมือทำไปเลย แล้วก็มานั่งปรับแต่งไปเรื่อยๆ หากเป็นอย่างนั้นจริงๆ ก็ไม่รู้เราจะเรียนวิศวะกันไปทำไม ให้มันยุ่งยาก 

control system model

ในส่วนของซอร์ฟแวร์ ทางทีมได้ใช้โปรแกรมทางวิศวกรรมที่ดังๆ เช่น MATLAB , LABVIEW และ C/C++ ซึ่งเจ้าตัว C/C++ นี้ ถูกนำไปเขียนกับ SL - The Simulation Laboratory ซึ่งก็ไม่น่าแปลกใจเลย ซอร์ฟแวร์พวกนี้ โดยเฉพาะ MATLAB และ LABVIEW ทำไมจึงเป็นที่นิยมในงานวิจัยพวกหุ่นยนต์นัก และยังมีราคาแพงอีกด้วย

ขอให้เพื่อนๆ ดูวีดีโอสาธิต แล้วกันครับ เห็นแล้วจะเกิดไฟแห่งความอยากรู้ อยากเห็นขึ้นมาอีกเยอะเลย ผมสาบานได้

ศึกษาข้อมูลเพิ่มเติม คลิก

อ่านเพิ่มเติม...

Saturday, December 24, 2011

LabVIEW Interface for Arduino

VISV Getting Started With the LabVIEW Interface for Arduino ช่วงนี้ ก็เป็นช่วงเด็กทำโปรเจคกัน เราก็มีโปรเจคที่ต้องทำเหมือนกัน ก็เพิ่งจะผ่านการพรีเซ้นต์ หัวข้อโปรเจคผ่านไป ก็สบายใจได้หน่อยนึง ที่เหลือก็ทำโปรเจคให้มันสำเร็จก็แล้วกัน

วันนี พอดีเพื่อนมาหาที่บ้าน มาปรึกษากันเรื่องโปรเจคของมัน ประมาณว่า ต้องการทำให้บอร์ด Arduino Freeduino ติดต่อกับ Labview เพื่อที่เราจะได้เอา NI Labview สร้างเป็นหน้ากาก GUI เพราะเห็นว่า เคยเรียนการใช้ NI LABVIEW มาแล้ว ก็ไม่น่าจะยากมาก ลองๆค้นหาข้อมูลในอินเตอร์เนต ก็เจอ ที่น่าสนใจดู ลิ้งค์ อืมน่าสนแหะ ลองติดตั้งดูสักหน่อยสิ บอร์ด Arduino เราก็มีแล้ว

  • อันดับแรก ก็ต้องมี NI LABVIEW เวอร์ชั่น 2009 ขึ้นไป เค้าแนะนำว่า งั้นนะ แต่ที่ผมทดลองใช้อยู่เป็น เวอร์ชั่น NI LABVIEW  2011
  • บอร์ด Arduino สักบอร์หนึ่ง ตระกูลไหนก็ได้ แล้วก็พวกอุปกรณ์อิเล็กทรอนิกส์ สักหน่อย
  • Arduino IDE แน่นอนหล่ะ มีบอร์ดแล้วไม่มีโปรแกรม ก็ชักจะยังงัยๆ อยู่

หวังว่า เพื่อนๆ มีทั้งสามอย่าง และติดตั้งเรียบร้อยแล้วนะ ต่อจากนี้ไป ก็เป็นการทำให้ Labview สามารถมองเห็น Serial Comport แล้วก็ทำให้ทั้งสองอย่าง Interface กันได้ ก็ทำตามขั้นตอนกันเลยครับ

  1. ติดตั้ง NI-VISA Drivers เพื่อทำให้ NI LABVIEW มองเห็น Serial Port กันก่อน
  2. ติดตั้ง VI Package Manager ตัวนี้ จะเป็นตัวสร้าง แชร์ และค้นหา LabVIEW add-ons และ  toolkits จาก LabVIEW Tools Network ในที่นี้ เราจะเอามาไว้สำหรับค้นหา และติดตั้ง
  3. เมื่อติดตั้ง VI Package Manager เสร็จแล้ว ที่หน้าต่างโปรแกรม ให้เราค้นหา Tool kit ที่ชื่อ Labview Interface for Arduino ตามรูป เลยครับVI Package Manager
  4. รีสตาร์ทเครื่องสักครั้ง เพื่อความเป็นสิริมงคล
  5. เปิดไฟล์โปรเจคของ Arduino (ในที่นี้ บอร์ด Arduino ของเราควรจะเชื่อมต่อ กับคอมพิวเตอร์เรียบร้อยแล้ว) ซึ่งจะอยู่ใน Folder C:\Program Files\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Interface for Arduino\Firmware\LVIFA_Base ชือไฟล์ LVIFA_Base.pde
  6. ทำการ Complie ซึ่งน่าจะผ่าน แล้วก็ให้อัพโหลดเข้าไปที่ตัวบอร์ด Arduino ถ้าจำไม่ได้ ให้ดูวิธีการจากโพสเก่าๆ ของผมครับ คลิก
  7. เปิดโปรแกรม Labview แล้วเปิดไฟล์ทดสอบ โหลดจาก ที่นี่ จากนั้นก็รีนโปรแกรม เลยครับ
  8. ลองปรับค่า แล้วดูผล

ถ้าอยากทราบว่า สองอันนี้ มันทำงานได้งัย ลองเข้าไปแกะโค๊ดของ Arduino แล้วก็ลองใช้ โปรแกรม Serial Port Monitor นั้งจับข้อมูลที่วิ่งบน Serial Port ดูครับ

อ่านเพิ่มเติม...

Tuesday, September 27, 2011

พื้นที่นี้ เพื่อแก (เพื่อนฉัน)

เดิมที ผมตั้งใจจะเขียนเรื่องงาน Image Processing ที่ทำส่ง อจ. กำลังเริ่มลงมือเขียนแล้วหล่ะ แต่ พอดีทางบ้านโทรมาบอกว่า ไอ้อิ๋ง หมาที่ป่วยไข้หัดอยู่ที่บ้าน ตายเสียแล้ว ก็เลยเอาเป็นว่า พื้นที่นี้ยกให้แก (เพื่อนฉัน) แล้วกัน

      ไม่ว่า เราหรือเค้าก็ต้องจากกันสักวัน อยู่ที่ใครจะไปก่อนกัน เท่านั้นเอง ผมได้สนุขตัวนี้ มาจากผู้ชายคนหนึ่ง เค้าเห็นว่า ที่บ้านยังไม่มีสุนัขเฝ้าบ้าน ก็เลยเอาลูกสุนัขสีดำ มาให้ เมื่อ 9 ปีที่แล้ว นับเป็นเวลาที่ผมเริ่มเข้าทำงานที่บริษัทนี้ด้วย วันแรกที่ได้มา ผมซื้อนมกล่องมาป้อนมัน แล้วก็หาข้าวหาน้ำให้มันกิน คงเป็นเพราะอย่างนี้ นี่เอง ทำให้สุนัขตัวนี้ คุ้นเคยกับผมมากที่สุดกว่าทุกคนในบ้าน

      แน่นอนว่า ทุกอย่างๆ ย่อมเป็นสิ่งสมมติ แม้กระทั่งชื่อ ด้วยความที่เราจำเป็นต้องมีชื่อเรียกให้มัน เพื่อให้ง่ายต่อการอ้างถึง และใช้เพื่อเป็นสัญญาความจำ เมื่อยามที่เราเรียกขาน สุนัขตัวนี้ เราตกลงตั้งชื่อให้มันล้อเลียนเสียงให้เหมือนกับชื่อของผู้ชายที่เอาสุนัขมาให้ เราตั้งชื่อมันว่า “อิ๋ง อิ๋ง” ชื่อเหมือนสุนัขตัวเมีย แต่แท้จริงแล้วมันเป็นตัวผู้

     ผมคงไม่ต้องบรรยายมาก ถ้าใครเคยเลี้ยงสุนัข จะเข้าใจดี ว่าความผูกพัน มันเป็นยังงัย ผมคิดว่าทุกคนคงรู้สึกไม่ต่างกัน เมื่อเวลาต้องสูญเสียเพื่อนที่ดีที่สุดของเราไป บางคนอาจจะมองว่ามันเว่อร์ แต่ถ้าคุณได้เลี้ยงมันมา จะเข้าใจได้ดี คงต้องทำใจอีกหลายวัน กว่าจะหายคิดถึงมัน

ลาก่อนเพื่อนรัก เกิดมาชาติหน้าขอให้ได้เป็นมนุษย์ เจอกัน ก็ทักทายกันบ้างนะ

 

Good_dog2

Good_dog

อ่านเพิ่มเติม...

Sunday, March 27, 2011

Labview : wire tutorial สายข้อมูล

    ในโหมดของ text base programming เราสามารถส่งข้อมูลเข้าไปประมวลผลในฟังก์ชัน ผ่านตัวแปร แต่ใน Labview Graphical programming แล้ว wire หรือสัญลักษณ์สายไฟ ทำหน้าที่ในการนำข้อมูลจาก block diagram หนึ่งไปอีก block diagram หนึ่ง

     จากรูปข้างล่าง สายไฟทำหน้าที่เชื่อมต่อระหว่าง control (ตัวควบคุม) และ indicator (ตัวแสดงผล) นอกจากนี้เรายังสามารถแยกข้อมูลที่ไหลผ่านสายไฟ ไปประมวลผลคู่ขนานกันก็ได้ เหมือนๆกับที่เราทำการ tab สายไฟออกไป เพื่อแบ่งกระแสไฟฟ้าไปใช้งาน คล้ายๆกันในแบบนั้น

    ในขณะที่ชนิดข้อมูลของโปรแกรมมีหลายประเภท (integer , charector , float, double , boolean ,….) การเรียกใช้และการประกาศตัวแปร เป็นสิ่งที่แยกแยะความแตกต่างของข้อมูลในการเขียนโปรแกรมแบบ text base แต่ใน Labview เราใช้ สี และ ขนาดของสายไฟ เป็นตัวบ่งบอกถึงความแตกต่างของข้อมูลนั้นๆ  

Labview : wire tutorial

     Labview จะมีการแจ้งให้ทราบว่าข้อมูลไม่ได้ถูกเชื่อมโยงกัน โดยจะแสดงลักษณะที่เรียกว่า broken wire เพื่อให้ผู้เขียนโปรแกรมทราบว่า ยังมีจุดที่สายไฟ ไม่ได้เชื่อมโยงกัน และจะไม่ยอมให้เราทำการ excute หรือ run โปรแกรม

Labview wire broken      การเกิด broken wire มีได้หลายสาเหตุ ตัวอย่างเช่น ระหว่าง object ที่มีความแตกต่างกันทางชนิดของข้อมูล ตัวอย่างเช่น เราไม่สามารถที่จะเอา out put ที่เป็น array จากบล๊อกไดอะแกรมหนึ่ง ไปต่อเข้ากับ input ที่เป็น numerical ของบล๊อกไดอะแกรมหนึ่ง ซึ่งแบบนี้จะทำให้เกิด broken wire ได้ ความแตกต่างของข้อมูลสามามารถแสดงได้ทั้งสี และขนาดของ wire ดังรูปต่อไปนี้

Labview data type

    สายไฟทุกๆเส้น มีความแตกต่างกัน ขึ้นอยู่กับประเภทของข้อมูลที่ทำการส่งไปในสายไฟ เราสามารถที่จะเชือมต่อข้อมูลจากแหล่งข้อมูลจากที่หนึ่งไปอีกที่หนึ่งได้อย่างถูกต้องได้ โดยดูจากสีของ object หรือไม่ก็ตรงที่ขั้วต่อสายไฟ ในกรณที่ object หรือ block นั้นๆ มีมากกว่า 1 อินพุท หรือ 1 เอาท์พุท โดยดูที่สีของขั้วต่อสายไฟ สังเกตจากรูป

good connect wire

แต่ถ้าหากชนิดข้อมูลไม่ตรงชนิดกัน เราก็จะพบปัญหา broken wire ดังเช่นที่ได้กล่าวไว้แล้ว

Broken wire in subVI

Tip: คุณสามารถลบสายไฟ broken wire ออกจาก block diagram ได้อย่างรวดเร็วด้วยการกดปุ่ม Ctrrl + B

เราสามารถตั้งค่าให้ทำการ wiring สายไฟเวลาที่เราเคลื่อนเม้าส์เข้าไปใกล้ object จะทำให้เม้าส์เราเปลี่ยนจากลูกศร กลายเป็น ม้วนสายไฟ เพื่อพร้อมที่จะทำการเดินสายไฟ ได้ตลอดเวลา โดยให้เราไปที่เมนู Tools –> Options ---> Block Diagram (ทางซ้ายมือ) แล้วติ๊กที่ช่อง Enable auto wiring

image

image

ในกรณที่เราทำการลากสายไฟไปแล้ว ไม่ต้องกลัวที่จะไม่สวยงามครับ ให้เราลากเชื่อมโยงไปก่อน แล้วทำการคลิกขวาบริเวณสายไฟ แล้วเลือก Clean Up Wire โปรแกรมจะทำการจัดสายไฟ ให้อย่างสวยงาม

image

เรียนรู้การใช้สายไฟ เพิ่มเติมได้จากตัวอย่างต่อไปนี้ เป็นการสร้าง control และ indicator ที่มีความแตกต่างกันทางชนิดของข้อมูล จะเห็นได้ว่า สีของ object และสีของสายไฟ เปลี่ยนแปลงตามชนิดของข้อมูล

wire block diagram

Labview example wire data

วีดีโอสาธิตการทำการ wire ข้อมูลของ Labview

ที่มา http://zone.ni.com/devzone/cda/tut/p/id/7567

อ่านเพิ่มเติม...

Thursday, February 17, 2011

Labview : Front Panel หน้ากาก VI

    ในตอนนี้ เราจะมาทำความรู้จักกับ Front Panel ว่ามันมีความสัมพันธ์กับ Block Diagram อย่างไร Front Panel Object แต่ละตัวแตกต่างกันอย่างไร แล้วเราจะหาอุปกรณ์ หรือว่า Front Panel Object ได้อย่างไร เราจะได้เรียนรู้กันในตอนนี้

    Front Panel เป็นส่วนของหน้าต่างที่ทำหน้าที่เป็นส่วนติดต่อกับ user หรือเป็นส่วนของ VI (Virtual Instrument ) นั่นเอง Front Panel ประกอบไปด้วย Control ทำหน้าที่เป็น input และ Indicator ทำหน้าที่เป็น output ซึ่งทำหน้าที่โต้ตอบก้บผู้ใช้งาน ในขณะที่เราวาง Indicator และ Control ลงบน Front Panel โปรแกรม Labview จะทำการสร้าง Control และ Indicator ลงบน Block Diagram อัตโนมัติ ซึ่งเราจะได้มาศึกษา Block Diagram กันต่อไป

หน้าต่าง Front Panel

Front Panel Labview

     หลังจากเราเปิดโปรแกรม Labview ขึ้นมาแล้ว เราสามารถที่จะสร้าง new VI ขึ้นมาได้ หน้าต่าง Front Panel จะปรากฏขึ้นมา โดยเราสามารถที่จะทำการสร้างหน้าต่าง User Interface หรือหน้าต่างโปรแกรมของเรา เพื่อให้ผู้ใช้ สามารถใช้งานได้ตามที่เราได้ออกแบบไว้แล้ว (ตรงนี้ ต้องใช้ประสบการณ์ และความคิดสร้างสรรค์ในการออกแบบสักหน่อย)

   ที่หน้าต่าง Front Panel ประกอบไปด้วยส่วนของ Toolbar ที่อยู่ด้านบน และส่วนของ Control Pallete ซึ่งเราสามารถที่จะเปิดตรงไหนก็ได้ที่หน้าต่าง Front Panel     โดยทำการคลิกขวาที่หน้าต่าง Front Panel หลังจากเราเปิดหน้าต่าง Control Pallete แล้วเราก็จะพบกับ Control และ Indicator แล้วสามารถที่จะลากพวกมันลงบนหน้าต่าง Front Panel ได้เลย

Control Pallete Control and Indicator

    Contrrol ได้แก่ Knobs , Push button , dial , และอุปกรณ์ที่ทำหน้าที่เป็น input อื่นๆ ทำหน้าที่เป็นตัวโต้ตอบ ทำหน้าที่เป็นตัวรับ ในขณะที่ Indicator ซึ่งได้แก่ graphic , LED ,หรืออุปกรณ์ที่ทำหน้าที่เป็นตัวแสดงผล ทำหน้าที่เป็นผลลัพธ์ ของหน้าต่าง VI

VI User Interface

จากรูปด้านบน เรามีตัว Control 2 ตัว ได้แก่ Number of Measurements และ Delay (sec) และ 1 ตัวสำหรับ indicator ในที่นี้คือตัว waveform graph ที่เราตั้งชี่อว่า Temperature Graph 

    ทุกๆ Control และ indicator จะมีชนิดของข้อมูลเป็นความสัมพันธ์ของตัวมัน ตัวอย่างเช่น Delay (sec) ทีเป็นตัวปุ่ม slide ในแนวนอน เป็นค่าตัวเลข เมื่อเรา Double Click ที่ตัว Control ในหน้า Front Panel โปรแกรมจะทำการเปิด Block Diagram ขึ้นมาให้ แล้วจะแสดงสัญลักษณ์ หรือไอคอน ของตัว Delay (sec) ที่หน้า Block Diagram โดยที่ตัวมันเองจะมีสีส้ม ซึ่งบ่งบอกว่า มันมีข้อมูลเป็นชนิดตัวเลขที่เป็น Double (DBL)

Slide Control

Numeric Control and Indicators

เราจะลองมาสร้าง Numeric control แล้วทดลองเปลี่ยนค่าของมัน

1. ทำการคลิกขวาที่  Front Panel แล้วทำการเปิด Control pallete จาก Pallete ย่อยให้เราไปที่ Numeric แล้วลาก Numeric control ลงบนที่ว่าง Front Panel

Numeric Pallete

2. เปลี่ยน ป้ายกำกับ Label ด้วยการดับเบิลคลิก ที่ป้าย label แล้วทำการพิมพ์คำว่า “input”

Numeric Input control

3. เราสามารถเปลี่ยนแปลงค่าของ control ได้ด้วยการกดปุ่ม เพิ่มหรือลดค่า หรือ ทำการดับเบิลคลิกไปที่บริเวณที่แสดงค่า แล้วทำการพิมพ์ค่าใหม่ ลงไปโดยตรง แล้วทำการกดปุ่ม ENTER ที่คีย์บอร์ด เพื่อทำการเปลี่ยนแปลงค่าใหม่ได้โดยครง

Numeric Input control

Boolean Controls and Indicators 

Control และ Indicator ที่เป็นชนิด Boolean จะรับและส่งข้อมูลได้เพียงสองสถานะเท่านั้น คือ TRUE และ FALSE เท่านั้น จากรูปข้างล่างจะเห็นว่า สวิทช์ในแนวตั้ง และ หลอด LED เป็น Control และ Indicator แบบ Boolean

toggle control Boolean Pallete

String Controls and Indicators

ข้อมูลชนิด ตัวอักษร เป็นข้อมูลแบบเรียงลำดับของ รหัส ASCII เรามักใช้ String Control และ String Indicator ทำหน้าที่รับข้อความจากผู้ใช้ ตัวอย่างเช่น password และ username ในขณะที่ String indicator จะทำหน้าที่แสดงผลที่เป็นข้อความ เราสามารถหา String Control และ String Indicator ได้จาก String and Path ใน pallete ย่อย

String Control and String Indicator

Front Panel Window Toolbar

เรามาดูสัญลักษณ์และการทำใช้งาน Toolbar กัน

Toolbar Labview

RUN

ทำหน้าที่สั่งให้ VI ที่เราเขียนทำงาน ; Labview จะทำหน้าที่ complie โค๊ดที่เราเขียนอัตโนมัติ

ERROR

เป็นตัวบอกว่า ณ ขณะนี้ เกิดความผิดพลาดขึ้น เนื่องไม่สามารถที่จะ conplie โปรแกรมได้ หากเราไม่แก้ไข เสียก่อน เราสามารถดูตำแหน่งที่ error ได้ ด้วยการคลิกที่ลูกศร นี้ แล้วจะเกิดหน้าต่างแสดงข้อความที่ error ให้เราคลิกที่ข้อความนั้น โปรแกรมก็จะพาเราไปยังตำแหน่งที่ error นั้น อย่างรวดเร็ว

RUN Continuously

เป็นการรันโปรแกรมแบบต่อเนื่อง วนลูปไม่รู้จบ จนกว่าเราจะกดปุ่ม abort หรือ ปุ่มหยุดโปรแกรม

Abort Execution ขณะหน้าต่าง VI กำลัง run อยู่ ปุ่มนี้ จะโชว์ขึ้นมา ถ้าเราคลิกที่ปุ่มนี้ โปรแกรม VI ของเราก็จะหยุดทำงานอย่างทันที

คำเตือน : โดยปกติแล้ว เรามักที่จะไม่นิยม หยุดโปรแกรมของเราด้วยปุ่มนี้ เพราะอาจจะทำให้เกิดอาการค้างของข้อมูล เรามักจะทำปุ่ม stop ขึ้นมาเอง

Pause

กดปุ่มหยุดชั่วคราว หากเราต้องการหยุดโปรแกรม VI ของเราชั่วคราว แล้วกดปุ่มนี้อีกครั้ง หากต้องการให้โปรแกรมของเราทำงานต่อ

Text Setting

คลิกเลือกที่ปุ่มนี้ หากต้องการปรับแต่งข้อความบนหน้าต่าง Front panel

Alignment - Resize - Order object

เป็นการจัดเรียง control และ indicator ให้เรียงตรงกัน ทั้งในแนวตั้ง และแนวนอน นอกจากนี้ ยังมีปุ่มสำหรับเรียงลำดับการซ้อนทับของหน้าต่าง และปุ่มปรับขนาดให้เท่าๆกันด้วย

Help Labview

ปุ่มขอความช่วยเหลือ หากต้องการคำอธิบาย ของ control หรือ indicator

 

Enter Text

ในการแก้ไขข้อความ หรือพิมพ์ตัวหนังสือ บนหน้า Front Panel เมื่อเราต้องการจบการทำงานของการพิมพ์หรือแก้ไข ข้อความ เราไม่สามารถที่จะใช้ปุ่ม ENTER บนคีย์บอร์ดได้ เพราะการเคาะ ENTER จะเป็นการขึ้นบรรทัดใหม่ หากเราต้องการจบการพิมพ์ ให้ทำการกดปุ่ม ลูกศรเครื่องหมายถูกแทน

Front Panel เป็นสิ่งแรกที่โปรแกรมเมอร์จะต้องทำการออกแบบ ในบางครั้งเราใช้เวลาในการออกแบบหน้าต่าง VI ของเราไปเกินกว่าครึ่งหนึ่งของโปรเจคของเรา ซึ่งหน้าต่าง VI ที่ดี ย่อมทำให้ผู้ใช้งานเกิดความรู้สึกอยากใช้งานโปรแกรมของเรา ไม่เกิดความสับสน บางครั้งโปรแกรมเมอร์อาจจะเรียนรู้เรื่องการออกแบบบ้าง

อ่านเพิ่มเติม...
 

แจกฟรี พื้นที่ฝากไฟล์ 15 GB

ติดตามข่าวสารผ่าน Twitter

Blog อื่นๆของฉัน

ผู้ติดตาม Blog นี้

เว็บเพื่อนบ้าน