หน้าแรก
วิธีการสั่งซื้อสินค้า
แจ้งชำระเงิน
บทความ
เว็บบอร์ด
เกี่ยวกับเรา
ติดต่อเรา
หน้าแรก
>
บทความ
>
[Tips] ทดลองสร้าง Library ไว้ใ…
ค้นหาบทความที่นี่
บทความทั้งหมด
[Tips] ทดลองสร้าง Library ไว้ใช้งานเอง
3 ปีที่ผ่านมา
โดย
เจ้าของร้าน
Publish : 5 August 2022
หัวข้อในบทความนี้
- ไลบรารี่ (Library) คืออะไร
- ส่วนประกอบของไลบรารี่
- เริ่มสร้างไลบรารี่
- Header file
- Source file
- ทดลองใช้งานไลบรารี่
- เพิ่ม keyword
- เพิ่มส่วนอื่น ๆ
จากตอนที่แล้ว(ท่านใดยังไม่ได้อ่าน
คลิกย้อนไปอ่านได้ที่นี่
) ที่ทิ้งท้ายไว้ว่าเราแยกฟังก์ชั่นออกมาสำเร็จรูปแล้วค่อยเรียกไปใช้เนี่ย มันคือหลักการของไลบรารี่ (Library) แล้วถ้าเราอยากสร้างไลบรารี่ไว้เป็นของตัวเองจะทำได้มั๊ย ตอบเลยว่าได้ครับ แต่จะยากกว่าการเขียน Arduino นิดนึง เนื่องจากเราต้องเขียน C++ แบบเต็ม ๆ ในส่วนของ Arduino นั้นก็ใช้ภาษา C++ เช่นกัน แต่เบื้องหลังนั้นมันก็มีตัวไลบรารี่เนี่ยแหละซ้อนอยู่อีกทีทำให้การเขียนคำสั่งมันง่ายขึ้น เราจะเห็นเวลาเราไปเขียนโปรแกรม Arduino จาก Third Party ที่ไม่ใช่ Arduino IDE จะต้องมีการ include<Arduino.h> เข้ามาเสมอ ความแตกต่างของ C++ แบบเพียว ๆ กับ C++ แบบอาดุยโน่ก็อย่างเช่น การแสดงผลใน Arduino จะมี print("text") กับ println("text") แต่ใน C++ จะใช้ count << "text" ถ้าอยากขึ้นบรรทัดใหม่ก็ต้องใส่ \n (อันนี้คงคุ้นกันหน่อย)
แต่!!!! ทั้งหมดทั้งมวลที่โม้ฝอยน้ำลายกระจายมา เราก็สามารถเขียนไลบรารี่ด้วย C++ แบบ Arduino ได้เหมือนกัน ก็แอบเฉลยไปแล้วแหละครับ include<Arduino.h> เข้าไปก็จบไง ถึงเราไม่ใส่ สุดท้าย Arduino มันก็จะใส่ให้เราอยู่ดี ทุกเท้าคงเล็งมาทางผู้เขียนละ คือเอาเป็นว่าที่พาไปไกลเนี่ยแค่อยากแนะนำ(ในมุมมองผู้เขียนนะครับ) เมื่อมือใหม่เริ่มเรียนรู้ด้วย C++ แบบ Arduino แล้ว ก็ควรไปศึกษา C++ ของต้นตำรับด้วยจะดีมาก เราสามารถเขียน C++ ใส่ Arduino โดยตรงได้แบบไม่ผ่าน Arduino Library ที่ต้องมาคอยแปลอีกที ไม่ต้องคิดมากก็รู้ว่ามันก็จะทำงานได้เร็วกว่าถูกมั๊ยครับ อีกอย่างนะครับ C++ มันใหญ่กว่า C หากเรารู้ C++ ก็จะย้อนไป C ได้เลย และจะก้าวมาเป็น C# ก็ได้ (แน่นอนว่าก็ไป Python ได้เช่นกัน) เอาไว้วันหลังไม่รู้จะเขียนอะไรจะกลับมาเทียบและอธิบายแต่ละภาษา ส่วนวันนี้เข้าเรื่องก่อน
ไลบรารี่ (Library) คืออะไร
ก่อนที่เราจะสร้าง เราก็ต้องรู้จักมันก่อนครับ "Library" ซึ่งแปลคำไทยว่า "คลังข้อมูล" คือชุดข้อมูล(โค้ดที่เขียนไว้ล่วงหน้า ตัวแปร การตั้งค่า รวมถึงอื่น ๆ ทั้งหมด) ที่ใช้ในการเขียนโปรแกรมหรือพัฒนาแอปพลิเคชันต่าง ๆ ซึ่งถูกออกแบบมาเพื่อช่วยโปรแกรมเมอร์ รวมไปถึงคอมไพล์เลอร์ในการสร้างและดำเนินการกับซอฟแวร์ที่เขียนขึ้น คือก็สมชื่อภาษาอังกฤษของมันแหละครับ Library ที่แปลว่าห้องสมุด เวลาเราอยากรู้อะไร บางทีเราก็ไม่จำเป็นต้องเสียเวลาทดลองเอง และการทดลองนั้นก็ไม่รู้ว่าจะผิดหรือถูก มันมีคนเคยทำไว้แล้วและมีการพิสูจน์ยอมรับว่ามันถูกต้อง เราก็แค่ไปค้นข้อมูลนำมาใช้เลยนั่นเอง
ส่วนประกอบของไลบรารี่
อันนี้เราจะพูดถึงใน Arduino นะครับ(ในอันอื่นก็ไม่ต่างกันเท่าไรหรอก) ลองไปเปิดดูของจริงในโฟลเดอร์ /libraries ก็ได้ครับ
ส่วนประกอบหลักจะมี 2 ไฟล์ ที่สำคัญมาก ๆ ครับ
Header file .h
ผู้เขียนขอนิยามว่ามันเหมือนเมนูอาหาร เราอยากให้มีคำสั่งอะไรก็ใส่ลงไปใน Header นี้เลย
Source file .cpp
ตรงนี้จะบรรจุโปรแกรมทั้งหมดที่จะให้ไลบรารี่ของเราทำงาน มีอะไรบ้างใส่ลงไปให้หมด ถ้า Header เมื่อกี๊เป็นเมนูอาหาร Source file ก็เหมือนห้องครัวที่ทำอาหารตามลูกค้าสั่งหล่ะครับ
ตรงนี้ตัดจบได้เลยครับ เรามีแค่สองไฟล์นี้ไลบรารี่เราสามารถทำงานได้เลยครับ ทำ zip แล้วส่งให้เพื่อนได้เลย แต่ถ้าขยันก็สร้างไฟล์อื่น ๆ ประกอบได้อีก
- อยากให้มีตัวอย่างก็สร้างโฟลเดอร์ examples ขึ้นมา เขียนโปรแกรม Arduino .ino ธรรมดา
- keywords.txt ไฟล์กำหนดคีย์เวิร์ด เวลาเราพิมพ์ใน arduino IDE มันก็จะเด้งเป็นสีต่าง ๆ
- ถ้าอยากไปอยู่ใน Library Manager ของ Arduino ก็ต้องสร้างไฟล์ library.json กับ library.properties และไปเซ็ตตามขั้นตอนของ Arduino (บทความนี้ไม่ขอพูดตรงนี้ครับเพราะต้องมีเนื้อหาและข้อกำหนดอีกยาวเลย)
- readme.md ไฟล์ Doc แนะนำการใช้งาน บลา ๆ อื่น ๆ ใส่ได้ตามใจอยาก
เริ่มสร้างไลบรารี่
ในตัวอย่างที่จะทำให้ดูนี้จะเป็นการยกฟังก์ชันไฟกระพริบจากบทความก่อนมา่ทำให้ดูกันนะครับ ขอเอารูปเก่ามาทบทวนความจำ
การเริ่มสร้างไลบรารี่ สร้างไฟล์ชื่อไลบรารี่ .h และ .cpp แบบง่าย ๆ เลยนะครับสร้างใน Arduino IDE โดยเรามีโค้ดดั้งเดิมของเรา จากนั้น New tab แล้วใส่ชื่อพร้อมด้วย .h และอีกแท็ปก็ .cpp ไป (ถ้าไม่ใส่นามสกุลไฟล์ มันจะเป็น .ino อัตโนมัติ ใช้เป็นไลบรารี่ไม่ได้) ไลบรารี่นี้จะขอตั้งชื่อว่า FT_LED
Header file
จะขอเริ่มจาก .h ก่อนเลยนะครับ เริ่มแรกใส่ #ifndef FT_LED ไว้ก่อน จากนั้นก็ #define FT_LED อย่าลืมใส่ _h ด้วยนะครับ บอกว่าถ้ามีการเรียกใช้ก็ให้ขุดมันขึ้นมาทำงาน จากนั้น #include <Arduino.h> เว้นตรงกลางไว้ จบสุดท้ายด้วย #endif อันนี้เป็นไฟท์บังคับของ Arduino Library เลย ทุกอันต้องมี
ต่อไป ไอ้ที่เว้นไว้ตรงกลาง สร้าง class ชื่อ FT_LED ขึ้นมา กำหนด Private และ Public เอาไว้ก่อน สร้างฟังก์ชัน FT_LED เพื่อใช้กำหนดขาที่จะให้แสดงผล (Private มีการทำงานภายในไฟล์นี้เท่านั้น Public ไฟล์อื่น ๆ สามารถเรียกฟังก์ชันไปใช้งานได้)
สุดท้าย ขอตั้งชื่อฟังก์ชันว่า ledBlink และอยากให้กระพริบกี่ครั้งก็ใส่ตัวแปรไปด้วยเลย เอาไว้ใน Public
จบแล้วครับสำหรับ Header file ง่าย ๆ แค่นี้เอง
Source file
ต่อไปเริ่มกับ Source file .cpp เริ่มด้วยการรวม Header และ Arduino เข้ามา เป็นไฟท์บังคับของ Source file เช่นกัน
ส่วนที่เหลือก็เติมโปรแกรมเราลงไป เหมือนกับที่เราเขียนใน Arduino เลยครับ เริ่มจาก FT_LED ก็ไม่มีอะไรนอกจาก pinMode เพื่อทำให้ขาที่กำหนดนั้นเป็น Output (รูปแบบคือ class::function)
ต่อไปฟังก์ชัน ledBlink ก็ยกเอา BLINK มาใส่เพิ่มลงไปเลยครับ
เรียบร้อยครับ มีครบสองไฟล์แล้ว ฟังก์ชันที่ต้องการครบแล้ว เท่านี้ก็ลองนำไปใช้งานดูได้เลย
ทดลองใช้งานไลบรารี่
สร้างเสร็จแล้วมาทดลองกันเลยครับ ลองเขียนโค้ดตามฟังก์ชันที่เราออกแบบไว้ จะได้โปรแกรมตามนี้เลย
จะสังเกตเห็นความแตกต่างได้ชัดเจนเลยนะครับ จากโค้ดตอนแรกที่มีทั้งหมด 21 บรรทัด เราเสียเวลาสร้างไลบรารี่ครั้งเดียว หลังจากนั้นโค้ดเราเหลือเพียง 12 บรรทัด เท่านั้น เราเขียนโค้ดนี้ร้อยครั้ง ประหยัดได้ 900 บรรทัด คิดดูว่าจะประหยัดเวลานั่งพิมพ์เท่าไร? ยิ่ง Arduino IDE ที่ไม่มี Auto Complete ช่วยแล้วด้วยเนี่ย โอเคว่าอาจก็อปวาง แต่เชื่อเถอะครับสุดท้ายก็ต้องเสียเวลาเลื่อนกลับไปหาแล้วก็อปปี้เลื่อนกลับมาวางอีก เวลามีค่าครับ
ได้โค้ดแล้วลองอัพโหลดลงบอร์ดดู LED บนบอร์ดจะกระพริบ 3 ครั้งทุก 5 วินาทีตามที่เราสั่งใน loop() หรือไม่
ถ้าสังเกตความสัมพันของแต่ละไฟล์ จะเห็นอะไรที่เเป็นสิ่งที่สัมพันกันอยู่นะครับ ตามที่โยงลูกศรให้ดู
เห็นอะไรมั๊ยครับ? เหมือนมันมีวิชาโค้ดขยายร่างเนอะ จากไฟล์ที่เราใช้งาน .ino > Header file > Source file มันจะค่อย ๆ ขยายขึ้น และแต่ละฟังก์ชันนั้นต้องตั้งชื่อเหมือนกัน ตัวแปรเหมือนกันชนิดเดียวกัน เป็น void ก็ต้อง void เหมือนกัน
เพียงเท่านี้ไลบรารี่ของเราก็เรียกได้ว่าใช้งานได้แล้วหล่ะครับ สามารถสร้างโฟลเดอร์ FT_LED(ชื่อเดียวกับไฟล์) แล้วดึง .h .cpp ไปใส่ ทำเป็นไฟล์ zip ไปเพิ่มใน Arduino IDE ได้เลย หรือจะส่งให้เพื่อนก็ย่อมได้ ส่วนใครอยากเพิ่มฟังก์ชันอื่น ๆ ก็เติมลงไปซ้ำขั้นตอนเดิม
เพิ่ม keyword
ทีนี้เราจะมาเพิ่มสีให้ฟังก์ชันของเราหน่อย ไม่สำคัญแต่เพื่อความสวยงาม เวลาพิมพ์จะได้มีสีเด่นชัดขึ้นมา ไม่ตาลาย ทำได้โดยสร้างไฟล์ .txt ขึ้นมา คลิกขวาบนที่ว่างในโฟลเดอร์ที่บรรจุไฟล์ไลบรารี่อยู่ เลือก New > Text document ตั้งชื่อไฟล์ว่า "keywords.txt" สำคัญนะครับ ต้องตามนี้เป๊ะ จะให้ชื่อคลาส FT_LED เป็น Keyword1 (ตัวหนังสือจะเป็นสีส้ม) และชื่อฟังก์ชัน ledBlink เป็น Keyword2 (ตัวหนังสือจะเป็นสีน้ำตาล) พิมพ์ตามนี้ไปเลย อ่อ สำคัญอีกอย่างคือตอนแยกชื่อกับ KEYWORD ให้กด tab นะครับ อย่าเคาะเว้นวรรค จะได้ดังนี้
Restart Arduino IDE โดยการปิดแล้วเปิดขึ้นมาใหม่ ผลที่เกิดขึ้นก็จะได้เช่นนี้
เพิ่มส่วนอื่น ๆ
หลังจากนี้ก็ให้เพิ่มไฟล์ที่เหลือลงไปเพิ่มเติมได้เลยครับ ทั้ง library.json และ library.properties และตัวอย่างไว้ในโฟลเดอร์ example ลงไปตามที่ใจอยากครับ จริง ๆ แล้วเรามีไฟล์สองตัว .h และ .cpp ไลบรารี่ของเราก็สามารถใช้งานได้แล้วตามที่บอกครับ แต่การเติมพวกนี้ลงไปก็เหมือนกับเติมเต็มให้ไลบรารี่มันสมบูรณ์มากขึ้นนั่นเองครับ
สำหรับวันนี้ก็เป็นบทความต่อเนื่องจากสัปดาห์ที่แล้วนะครับ ซึ่งจริง ๆ แล้วเนี่ยการสร้างไลบรารี่เราสามารถสร้างอะไรเล็ก ๆ ไว้ใช้ส่วนตัว เพื่อความสะดวกในการเขียนโค้ดบางส่วนที่จะต้องเขียนซ้ำบ่อย ๆ ไม่จำเป็นจะต้องทำให้คนอื่นโหลดของเราไปใช้ใหญ่โตทั่วโลกก็ได้ การสร้างฟังก์ชันเวลาขึ้นโปรเจคใหม่เราก็ต้องคัดลอกไปวาง แต่ถ้าเราสร้างเป็นไลบรารี่ไว้เลยมันก็จะอยู่ในเครื่องเราตลอด จะกี่โปรเจคก็แค่เรียกเข้ามาใช้ ไม่ต้องมาก็อปปี้วางมาสร้างฟังก์ชันในโปรเจคใหม่นั่นเองครับ และหลังจากสร้างเสร็จแล้ว หน้าที่ของเราคือการหมั่นบำรุงรักษา คือการแก้ไขให้โค้ดสามารถทำงานได้เร็วขึ้นเพื่อเพิ่มประสิทธิภาพของโปรเจค ทำการทดสอบหาข้อบกพร่องต่าง ๆ และแก้ไขมันให้สามารถใช้งานได้อย่างสมบูรณ์ครับ
Share
Share :
COPY
Privacy Policy
|
Cookie Policy
|
Copyright © 2025
fitrox.lnwshop.com
All rights reserved.
ตะกร้า
(
0
)
▲
▼
รายการสั่งซื้อของฉัน
เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก
ยังไม่มีบัญชีเทพ
สร้างบัญชีใหม่
ไม่มีค่าใช้จ่าย
สมัครสมาชิก (ฟรี)
รายการสั่งซื้อของฉัน
ข้อมูลร้านค้านี้
Fitrox Electronics
ไฟทร็อก อิเล็กทรอนิกส์ จำหน่ายอุปกรณ์อิเล็กทรอนิกส์ บอร์ดไมโครคอนโทรลเลอร์ และอุปกรณ์สำหรับโปรเจคต่างๆ อ.เมือง จ.เชียงใหม่ (หลัง มช.)
เบอร์โทร :
0897245633
อีเมล :
fitrox.electronics@gmail.com
ส่งข้อความติดต่อร้าน
เกี่ยวกับร้านค้านี้
ค้นหาสินค้าในร้านนี้
ค้นหา
หรือค้นหาอย่างละเอียด
ค้นหาสินค้า
สินค้าที่ดูล่าสุด
{{pdata.name}}
ดูสินค้าทั้งหมดในร้าน
สินค้าที่ดูล่าสุด
บันทึกเป็นร้านโปรด
Join เป็นสมาชิกร้าน
แชร์หน้านี้
แชร์หน้านี้
↑
TOP
เลื่อนขึ้นบนสุด
คุณมีสินค้า
0
ชิ้นในตะกร้า
สั่งซื้อทันที
สินค้าในตะกร้า ({{total_num}} รายการ)
ขออภัย ขณะนี้ยังไม่มีสินค้าในตะกร้า
ราคาสินค้าทั้งหมด
฿ {{price_format(total_price)}}
- ฿ {{price_format(discount.price)}}
ราคาสินค้าทั้งหมด
{{total_quantity}} ชิ้น
฿ {{price_format(after_product_price)}}
ราคาไม่รวมค่าจัดส่ง
ดูสินค้าในตะกร้า
เริ่มการสั่งซื้อ
➜
เลือกซื้อสินค้าเพิ่ม
พูดคุย-สอบถาม
อีเมล fitrox.electronics@gmail.com
โทร 0897245633
channel/UCnHfpCdqN1RkzAfEH_lRLvw?
1924052434588436
Add @zpq2828r