Showing posts with label Microcontroller. Show all posts
Showing posts with label Microcontroller. 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

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

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

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

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 เราก็น่าจะพอแก้ไข ปรับปรุง พัฒนาจากตัวอย่างที่เค้าให้มาได้อยู่แล้ว

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

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

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 ดูครับ

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

Sunday, May 1, 2011

ไปอบรม VHDL มาได้ไรมาเยอะเลย

พอดี วันลาพักร้อนเยอะเกิ๊น ก็เลยต้อง plan ลาพักร้อนสักสองวัน เพื่อเป็นไปตามนโยบายเบื้องบน ไม่ได้คิดจะไปเที่ยวไหนหรอก อยากอยู่บ้านเล่นไมโครคอนโทรลเลอร์มากกว่า พอดีไปเห็นเค้าประกาศไว้ในเว็บ ว่า มีคอร์สอบรม VHDL สำหรับผู้สอน 28-29 มีค., 28-29 เมย.และ 23-24 พค พอดีเลย สองวัน ว่าแต่ มันเป็นคอร์สสำหรับผู้สอนนี่หว่า เราจะไปได้ไหม อย่ารอช้าเมล์ไปถามเค้าดีกว่า

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

BookVHDL2009

CX1A Design Kit

จริงๆ ในหนังสือ “ออกแบบไอซีดิจิตอลด้วย FPGA และ CPLD ภาคปฏิบัติ โดยใช้ภาษา VHDL ” ผู้แต่งทั้งสองท่าน คือ ท่าน ณรงค์ ทองฉิม และ ท่านเจริญ วงษ์ชุ่มเย็น ท่านแต่งไว้ดีมากๆ อธิบายได้ค่อนข้างละเอียดแล้ว แต่ถ้าไม่ได้ฟัง หรือเข้าอบรมก่อน ก็อาจจะเป็นการลำบากในการเริ่มศึกษาด้วยตนเองเป็นอย่างมาก

บรรยากาศการอบรมครั้งนี้ ไม่เหมือนที่อื่น ไม่มีพิธีรีตองใดๆ จัดโต๊ะเสร็จ ก็นั่งอบรมกันเลย ทุกคนหันหน้าเข้าหากัน แต่ระหว่างที่ท่านอาจารย์ ณรงค์ ท่านบรรยายทุกคนต้องหันหน้าไปที่กำแพง เพื่อดูสไลด์ ที่ท่านอาจารย์กำลังแสดงให้ดู (ท่านอาจารย์เป็นคนค่อนข้างจริงจังมาก) ในระหว่างนั้น ต้องตั้งใจฟัง ห้ามทำการใดๆ โดยที่ท่านอาจารย์ยังไม่ได้สั่งให้ทำ ทุกคนต้องทำตามอย่างเคร่งครัด เพราะท่านอาจารย์ท่านมีความมุ่งมั่นที่จะถ่ายทอดความรู้ และท่านก็หวังให้เราทุกคนตั้งใจรับฟังกันด้วย

มีกาแฟเสิร์ฟตลอด ไม่ต้องห่วงว่าจะง่วงนอน (ความจริง ผมก็ทานมาแล้วหล่ะ) สรุปว่าวันนั้น ล่อไปสามแก้ว ไม่ต้องนอนกันหล่ะ ช่วงเช้าก็ปูพื้นฐานภาษา VHDL แล้วก็ทำความรู้จักกับ FPGA/CPLD กันก่อน พอหลังจากทานมื้อกลางวัน (ไก่ย่าง ที่ท่านอาจารย์บอกว่า อร่อยกว่า ไก่ห้าดาว) เราก็เริ่มทำการลง Lab โดยท่านอาจารย์พาทำตาม Lab ในหนังสือ แล้วใช้โปรแกรม Xilinx ISE 8.1i ในการเขียนภาษา VHDL โดยท่านอาจารย์ได้ยกตัวอย่างให้เห็นในหลายๆ รูปแบบ แต่ให้ผลลัพธ์เหมือนๆกัน เพื่อให้เกิดความรู้ ความเข้าใจ เวลาที่เราไปอ่านโค๊ดของคนอื่น เราจะได้เข้าใจ ว่ามันมีสไตล์การเขียนหลายแบบ แล้วแต่ใครถนัด

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

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

ถ้าผมมีเวลาผมก็อยากจะนำความรู้ที่ได้รับมาไปถ่ายทอดต่อไป อาจจะเป็นในรูปแบบการนำ CPLD ไปใช้งานมากกว่า  (อาจจะเป็นที่เว็บ 123Microcontroller)

เช่นเคย เมื่อเราได้เรียนรู้มาแล้วว่า VHDL เขียนอย่างไร เราก็ต้องมาทดลองกับบอร์ด CPLD ที่เรามีอยู่ เพื่อพิสูจน์ว่าเราสามารถที่จะเขียนโปรแกรมสั่งงานมันได้จริง

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

Saturday, March 19, 2011

มาเล่น Arduino กันเถอะ

Freeduino_Arduino

ก่อนหน้านี้ ผมเคยไปเทรน ARM7 ที่ขอนแก่น ตั้งหลายชั่วโมง เป็นเวลาหลายสัปดาห์ในช่วงปิดเทอมฤดูร้อน ประมาณเดือนเมษา พอกลับมาทำงาน ไม่ค่อยได้ใช้ ARM7 เพราะที่ทำงานมีแต่ PIC16F877 , PIC18F458 ไปๆมาๆ ก็ชักจะลืมๆ แล้ว ว่า ARM7 มันเซ็ทค่า Register ยังงัย

แต่เมื่อไม่นานมานี้ เกิดการปฏิวัติไมโครคอนโทรลเลอร์กับตระกูล AVR โดยชาวอิตาลี สองท่าน ด้วยความที่ต้องการให้นักเรียน นักศึกษา มีบอร์ดไมโครคอนโทรลเลอร์ใช้ และทำได้ง่าย ราคาถูก และศึกษาได้อย่างไม่ยากเย็นนัก จึงได้สร้างบอร์ดไมโครคอนโทรลเลอร์ที่ชื่อว่า Arduino ขึ้นมา

โดยที่บอร์ด Arduino ใช้ไมโครคอนโทรลเลอร์หลักเป็น AVR ตระกูล 8 บิต โดยถูกออกแบบให้มีการต่อใช้งานเป็นขา Digital I/O จำนวน 13 ขา และเป็นขารับสัญญาณ Analog จำนวน 6 ขา ซึ่งการกำหนดจำนวนขาแบบนี้ ได้กลายเป็นมาตรฐานของบอร์ด Arduino ไปแล้ว ถึงว่า Arduino เองจะถูกผลิตออกมาหลายแบบ แต่ที่เหมือนกัน ก็ยังคงเป็นขาที่เอาไว้ใช้งาน แต่แตกต่างกันตรงที่แต่ละรุ่น ที่ทำออกมามี memory ที่ไม่เท่ากันนั่นเอง (แต่ปัจจุบัน บอร์ด Arduino มีจำนวนขาให้ใช้  มากกว่าที่ได้กล่าวไว้แล้ว แตกต่างกันออกไปในแต่ละรุ่น)

Arduino table model

นอกจากลายวงจรที่เค้าแจกฟรีเป็น Open source ให้เราสามารถนำไปสร้างเองได้แล้ว ตัวโปรแกรมที่เป็น IDE ที่เอาไว้เขียนโค๊ดภาษา C/C++ ก็ยังสามารถให้เราสามารถโหลดเอาไปใช้งานฟรีได้อีกด้วย (โหลด IDE Arduino)  ซึ่งในตัว IDE ที่เราติดตั้งไปนี้ ประกอบไปด้วย Example มากมายที่ทำให้เรา เรียนรู้ไมโครคอนโทรลเลอร์ได้อย่างไม่น่าเบื่อหน่าย

ในการใช้งาน ถ้าหากเป็นการเรียนรู้แล้ว เราสามารถที่จะต่อสาย USB จากคอมพิวเตอร์ขของเราเข้ากับบอร์ก Arduino แล้วก็สามารถที่จะใช้งานได้เลย เพราะเค้าออกแบบให้เราใช้ไฟจากสาย USB เป็นไฟเลี้ยงของบอร์ดได้เลย สะดวกมากๆ (ในกรณีที่โหลดไม่กินกระแสมากนัก) นับว่าเป็นการออกแบบที่เหมาะให้นักเรียนนักศึกษา ได้ใช้และเล่นไมโครคอนโทรลเลอร์ อย่างที่ตั้งใจเอาไว้เลยทีเดียว

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

ขั้นตอน ง่ายๆ ในการทดลอง Arduino

  • หาบอร์ด Arduino สักบอร์ด ในที่นี้ ผมแนะนำของป๋าช้าง Ayarafun.com ราคาถูกมากๆ (ถูกกว่าค่าเหล้า เบียร์ซะอีก)
  • โหลด IDE สำหรับเขียนโค๊ด ดาวน์โหลด
  • ต่อสาย USB เข้าบอร์ด Arduino
  • เปิดโปรแกรม Arduino เลือกบอร์ด และพอร์ตให้ตรงกับบอร์ดของเรา
  • เปืด Example Blink ทดลองทำไฟกระพริบกันก่อน (ถือเป็นโปรแกรมไหว้บอร์ด)
  • สังเกตไฟ LED ที่พอร์ด Digital 13 ต้องติด ดับ สลับกัน

ศึกษาเพิ่มเติม

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

Monday, January 17, 2011

Beginning with PIC เริมต้นที่ไหนดี

พอดี วันนี้ เพื่อนเมล์มาถามว่าถ้าจะเล่น PIC microcontroller จะเริ่มตรงไหนดี ใช้ภาษาอะไรในการคอมไพล์ แล้วใช้บอร์ดรุ่นไหนในการเริ่มต้นดี คุณเชื่อหรือไม่ คำถามแบบนี้ มันสุดจะคลาสสิคจริงๆ คือเป็นคำถามที่ถามกันมาทุกรุ่นทุกสมัยเลยก็ว่าได้ แต่ก็ไม่ได้มีคำตอบที่ชี้ชัดลงไปได้หรอกว่า แบบไหนดีที่สุด เหมาะที่สุด เพราะถ้ามันมีคำตอบที่ดีที่สุดอยู่แล้ว มันจะมีคนมาถามแบบนี้ทำไม ทำไมเราไม่บรรจุลงในหลักสูตรมัธยมให้มันรู้แล้ว รู้รอดไปเลยหล่ะ จะมาให้งงกันอยู่ทำไม จริงไหม

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

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

ลองคลิกเข้าไปดูที่รูป PIC แต่ละตระกูล มันก็ยังประกอบไปด้วยแต่ละเบอร์ คิดแล้วน่าปวดหัวไหมหล่ะ ถ้าจะถามว่าจะต้องใช้เบอร์ไหนหล่ะ มันก็ต้องถามกลับไปว่า แล้วงานของคุณมันต้องการอะไรมั่งหล่ะ ช่องการแปลงสัญญาณ A/D , จำนวนพอร์ตดิจิตอล , memory หรือว่า ฟังก์ชั่นที่เกี่ยวข้องกับ   DSP อะไรจำพวกนี้ ล้วนเป็นสิ่งที่ต้องเอามาพิจารณาทั้งนั้น

PIC Microcontroller 

แล้วถ้าเราไม่รู้หล่ะ ถ้าเป็นพวกมือใหม่ อยากเอาไปศึกษาหล่ะ ถ้าเป็นมือใหม่จริงๆ ขอแนะนำ PIC ตระกูล 18F ก็แล้วกัน เพราะเบอร์นี้ มันกำลังคาบเกี่ยวกันระหว่าง 8 บิต และ 16 บิต อยู่ สามารถทำอะไรได้หลายอย่าง น่าจะเพียงพอสำหรับการเรียนรู้ได้นานพอสมควร ลองดูจาก Application Note ของทางไมโครซิฟ ว่าเค้าทำไรได้มั่ง

PIC18 Architecture

PIC18 Block Diagram

  • 83 (16-bit wide) powerful C-optimized instruction
  • Up to 2 MB addressable program memory
  • 4K Bytes RAM (max)
  • 32 level hardware stack
  • 1 (8-bit) File Select Register
  • Integrated 8x8 hardware multiply
  • Highest performance 8-bit architecture

ซึ่งในตระกูลของ PIC 18F เองก็ยังมีตั้งมากมายหลายเบอร์ คลิก

แต่ถ้าถามว่าจะเอาเบอร์ไหนมาเล่นก่อน ก็อยากจะบอกว่า เอาเบอร์ที่มีขายในบ้านเราเหอะ อย่าไปเพิ่งไปแอดวานซ์มากนัก เดี๋ยวให้เก่งกว่านี้ก่อน

ที่นี้ ก็มาถึงปัญหาย่อยของปัญหาหลักเรื่องเบอร์ไมโครคอลโทรลเลอร์ ว่าเราจะซื้อแบบบอร์ดทดลองแบบไหนดี  เท่าที่เห็นในบ้านเรา ก็มีให้เลือก สองแบบหลักๆ ก็คือ บอร์ดที่มีแต่ไมโครคอลโทรลเลอร์แล้วก็ช่อง I/O ของไมโครคอลโทรลเลอร์ กับแบบ บอร์ดที่มีทั้ง I/O และวงจรทดลองสำเร็จรูป ที่ต่อไว้ให้อยู่แล้ว เหลือแค่เพียงต่อสายไฟเชื่อมเข้าหากันเท่านั้น

แบบแรก ข้อดี คือว่า ราคาถูกกว่าแบบที่สอง ข้อเสีย คือต้องหาอุปกรณ์ต่อทดลองเอาเอง

บอร์ดไมโครคอลโทรลเลอร์ PIC18F

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

บอร์ดทดลองไมโครคอลโทรลเลอร์สำเร็จรูป แต่ทั้งคู่ก็มีข้อเสียเหมือนกันอยู่อย่างหนึ่งก็คือ มันไม่สามารถที่จะเปลี่ยนเบอร์ไมโครคอลโทรลเลอร์ได้มากนัก อาจจะได้อยู่เบอร์หรือสองเบอร์ หรืออาจจะเปลี่ยนไม่ได้เลยก็ได้

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

ET-PGM PIC USB V2

ซึ่งเจ้าตัว ET-PGM PIC USB V2 ผมก็ซื้อมาเหมือนกัน เพราะขี้เกียจทำเอง หลังจากได้ตัวโปรแกรมไมโครคอลโทรลเลอร์มาแล้ว เราก็สามารถที่จะไปโปรแกรมลงบนคอนโทรลเลอร์เบอร์อะไรก็ได้ ตามที่มันสามารถรองรับได้ โดยต่อไปที่ขาของไมโครคอลโทรลเลอร์ ตามที่ระบุในดาต้าชีท

 

ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์ 

ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์

ส่วนโปรแกรมที่ใช้เบิร์นไมโครคอลโทรลเลอร์ก็ใช้ PICkit 2 V2.55.01 Install  หรือ
PICkit 2 V2.55.01 Install with .NET Framework
ก็ได้

Pickit 2 Program

ทีนี้ ก็มาว่ากันถึงโปรแกรมที่จะใช้ในการเขียนโค๊ดเพื่อคอมไพล์ให้ได้ hex file เพื่ออัดลงไมโครคอลโทรลเลอร์กันเหอะ ในที่นี้ ขอแนะนำอยู่ สามตัวก็พอ เพราะตัวอื่น ยังไม่เคยลอง

ถ้าเรามีพอจะเข้าใจภาษาซี อยู่แล้ว ขอแนะนำ MPLAB C18 , CCS C Complier แล้วก็ Hi-tech C ถ้าถามว่าตัวไหน ดีกว่ากัน จากที่ฟังผู้รู้มา

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

สำหรับ MPLAB กับ Hi-Tech C ผมแนะนำ MPLAB C18 ดีกว่า เพราะ ค่ายเดียวกันกับเบอร์ PIC Microcontroller เพราะต่างก็มาจาก MIcrochip เหมือนกัน ย่อมได้เปรียบมากกว่า ไม่ว่าจะเป็น โค๊ดตัวอย่าง หรือการนำไปใช้งาน ตลอดจนเอกสารต่างๆ ของ MPLAB ทำได้ค่อนข้างดีกว่า เยอะกว่า เวลามีปัญหา จะได้ไม่เหงา มีคนคอยปรึกษาได้

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

แหล่งความรู้ที่สำคัญที่ดังๆ ของไทยก็มีเยอะ ไม่ว่าจะเป็น Electoday , PANTIP หรือว่า เว็บพี่สันติ ก็มีให้เข้าไปฝากคำถาม หรือข้อสงสัยกันได้ แต่อย่างหนึ่งที่อยากย้ำก็คือ การที่เราต้องมีพื้นฐานมาบ้างสมควร ไม่ใช่ว่าจะให้คนอื่นแสดงให้ดูตั้งแต่ต้นเลย แบบนี้ก็ไม่ไหว เพราะเราเองก็ไม่ได้จ้างเค้ามาเป็นที่ปรึกษา ทุกคนก็มีภาระหน้าที่ด้วยกันทั้งนั้น อย่าเกริยน พี่เค้าขอร้อง

ส่วนบล๊อกที่ผมกำลังพยายามรวบรวมความรู้ ก็คือ 123 Microcontroller ก็พยายามเขียนอยู่ ก็หวังว่าจะมีประโยชน์บ้าง ไม่มากก็น้อย ฝากเนื้อฝากตัวด้วยแล้วกันครับ

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

Thursday, October 14, 2010

Hot-Cool Stage by Peltier

Peltier Project เสร็จไปอีกหนึ่งผลงานกับแท่น ร้อน-เย็น ( Hot-Cool Stage) ไม่รู้ว่าจะตั้งชื่อว่าอะไร เอาเป็นว่าเจ้าแท่นนี้ มีหน้าที่ทำร้อน หรือทำเย็นก็ได้ ตามที่เราต้องการ (แต่ผมจำกัดอุณหภูมิไว้ที่ 0 – 75 องศาเซลเซียส) 

ใจจริงอยากทำต่อ พัฒนาให้มันดีกว่านี้ แต่ว่าโปรเจคนี้ทำมานานแล้ว ก็เลยต้องจบมันเอาไว้ตรงนี้ก่อน ถ้ามีเวลาจะเอามันมาพัฒนาต่อสักหน่อย มีหลายอย่างที่ยังคาใจอยู่

ซึ่งอุปกรณ์ที่ใช้ทำร้อน หรือเย็นที่ต้องการนั้น เราใช้ ThermalElectric  หรือที่เราเรียกว่า Peltier นั่นแหละเป็นพระเอกในการทำร้อน-เย็น การใช้งานของมันง่ายมากๆ เพียงแค่คุณจ่ายไฟกระแสตรงให้มัน จะทำให้ด้านหนึ่งของ Peltier ร้อน และด้านตรงข้ามจะเย็น ในทำนองเดียวกัน หากคุณกลับขั้วไฟจากที่ต่อในครั้งแรก คุณจะพบว่าด้านที่เคยเย็นจะร้อน และด้านที่เคยร้อนจะเย็น เห็นไหมหล่ะ ใช้งานง่ายจะตาย

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

อุปกรณ์หลักๆ ของงานนี้ก็คือ

  • Peltier TEC1-12710 จำนวน 2 แผ่น ตัวผลิตความร้อน ความเย็น
  • Corsair Hydro Series H50 2 เครื่อง ตัวระบายความร้อนชั้นยอด
  • บอร์ดไมโครคอนโทรลเลอร์ PIC16F877 เป็นตัวควบคุม
  • บอร์ด H-Bridge เอาไว้กลับทิศทางกระแสไฟฟ้า
  • Switching Power supply จ่ายกระแสไม่ต่ำกว่า 15 แอมป์

Peltier Project

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

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

Saturday, September 25, 2010

AVR+VB.NET+WEB จาก Hardware สู่ WEB

VB.NET+RS232+MySQL หายไปนานสำหรับ บทความนี้ พอดีช่วงนี้ยุ่งสุดๆ ทั้งสอบ ทั้งงาน ทั้งโปรเจค โอ้ยเยอะ เอาเป็นว่ายุ่งหล่ะกัน แต่ก็อยากเอามาแชร์ๆ กันมั่ง

พอดีมีโอกาสได้ทดลองเขียนโปรแกรมด้วย VB.NET express รับค่าจาก AVR ซึ่งคอยเช็คว่ามีวัตถุมาบัง sensor หรือยัง แล้ววัตถุออกไปตอนไหน จากนั้นก็จะเก็บค่าไว้ใน memory ของ AVR จากนั้น ก็รอให้ โปรแกรม Counter v1.0 มารับค่าไป เพื่อนำค่าที่ได้ไปบันทึกลงดาต้าเบส MySQL นั่นคืองานในส่วนของ VB.net กับ AVR ซึ่งจะทำงานแบบนี้ไปเรื่อยๆ

ในส่วนของ WEB PAGE จะใช้ PHP + SAJAX เพือทำการดึงข้อมูลจากดาต้าเบส MySQL แล้วทำการส่งออกทางหน้าเว็บบราวเซอร์ ในส่วนนี้ เราจำเป็นต้องพึ่งพา SAJAX เพื่อทำให้หน้าเว็บแสดงผลแทบจะ Realtime ซึ่งตรงนี้ เราสามารถปรับแต่งค่าได้ ว่าจะให้หน้าเว็บ refresh ถี่ขนาดไหน

นี่ก็เป็นคอนเซ็บต์คร่าวๆนะครับ พอดี หน้าเว็บผมยังแต่ไม่เสร็จ อาจจะดูแล้วลูกทุ่งไปหน่อย เพราะอยากทดลองก่อนว่าระบบสามารถทำงานได้ไหม  ส่วนความสวยงานค่อยแต่งทีหลังก็ได้

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

Tuesday, March 9, 2010

PIC18F458 error $MCLR$ is low. Processor is in reset.




image      โดยปกติแล้ว ในการจำลองการทำงานใน proteus บางอย่างเราไม่จำเป็นจะต้องต่อวงจร อย่างเช่น oscillator หรือวงจรรีเซต microcontroller แต่อย่างไร

ซึ่งปกติผมมักจะชอบ simulate กับ PIC16F877 เป็นประจำ แต่วันนี้ผมทดลองใช้เบอร์ 18F458 ซึ่งต้องการอยากให้มันตรงกันกับบอร์ดที่เราใช้งานอยู่จริง

    ทำการทดลองโค๊ด แสดงตัวหนังสืออกหน้าจอ LCD 20x4 ปรากฏว่าไม่มีข้อความปรากฏเลย แล้วแถมเจอ error message ขึ้นมาเพียบเลย มันโชว์ error ว่า “$MCLR$ is low. Processor is in reset.”

ไอ้เจ้า MCLR มันเป็นวงจรสำหรับเอาไว้รีเซต microcontrller ซึ่งปกติ ผมมักจะไม่ต้องต่อ เมื่อทดลองกับ PIC16F877 แต่พอมาเจอ PIC18F458 ปรากฏว่า มันจำเป็นต้องต่อด้วย ถึงแม้เราจะ simulatre ใน proteus ก็ตาม –_-“

MCLR reset circuit

 LCD 20x4

ทำการต่อวงจร reset เข้าไปที่ขา 1 ของ PIC18F458 ซะ แล้วทดลองโปรแกรมอีกที error หายไปแล้ว หน้าจอ LCD แสดงผลได้ตามปกติ

นิทานเรื่องนี้ สอนให้รู้ อย่าคิดว่า ที่ทำตามๆกันมา มันจะถูกเสมอไป เวลาเปลี่ยน ใจก็เปลี่ยน (เกี่ยวกันไหมเนี่ย)

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

Saturday, January 30, 2010

สาธิตการใช้งาน Proteus เบื้องต้น




PIC16F877 with LCD 16x2 on Proteus หลังจากได้ ไปแล้ว วันนี้ผมมีโอกาสได้ทำวีดีโอสาธิตการใช้งาน Proteus เบื้องต้น เป็นการใช้งานแบบง่ายๆ โดยทำการต่อวงจรสาธิตการแสดงผลผ่านทางจอ LCD 16x2 ด้วยไมโครคอนโทรลเลอร์ PIC16F877

ผมได้พยายามทำวีดีโอสอน และอัพโหลดขึ้น youtube ของผม อาจจะมีปัญหาเรื่องความคมชัดนิดหน่อย ยังหาโปรแกรมแปลงไฟล์วีดีโอดีๆ ยังไม่เจอ หากเพื่อนๆเคยทำการแปลงไฟล์วีดีโอดีเจ๋งๆ บอกผมหน่อยแล้วกัน

ในวีดีโอสาธิตชุดนี้ ผมไม่ได้ลงรายละเอียดไปถึงการเขียนโปรแกรม CCS C Complier เพราะเนื้อหาอาจจะเยอะเกินไป อาจมีปัญหาในการอัพโหลดวีดีโอได้ เอาไว้คราวหน้าแล้วกัน ผมจะทำวีดีโอสาธิตการใช้งาน CCS C Complier มาให้เพื่อนมาชมกัน

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

ดาวน์โหลด source code และไฟล์วงจร proteus ได้ ที่นี่

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

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

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

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

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

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