AssignmentIII
1. เขียนโค้ดสำหรับบอร์ด Arduino โดยสร้างเป็น C# class ดังต่อไปนี้ Class StringStack เป็นโครงสร้างข้อมูลแบบ Stack (กองซ้อน) สำหรับเก็บ String Object
การทำงานของโปรแกรมประกอบไปด้วย 3 ส่วน คือ StringStack.h StringStack.cpp และ StringStack.ino
ส่วนที่ 1 : StringStack.cpp เป็นส่วนที่เขียนลายละเอียดเกี่ยวกับคลาส และแต่ละ method ว่ามีการทำงานอย่างไร รวมถึงจะต้อง include ไฟล์.h ที่เป็น header
constructor เป็นส่วนที่ใช้กำหนดคุณสมบัติและกำหนดค่าเริ่มต้นของคลาส
method put : ถ้า Stack ยังไม่เต็ม จะนำค่าพารามิเตอร์ที่รับเข้ามา มาเก็บใน stack โดยมีตัวแปร pointer ชี้ที่อยู่ของแต่ละข้อมูล และเพิ่มค่า count ขึ้นอีก 1
method get : ถ้า Stack ยังมีข้อมูลอยู่ จะนำข้อมูลออกจาก stack ได้ โดยรับค่าที่อยู่ของพารามิเตอร์และเมื่อเรียก method get จะนำค่าบนสุดของ stack ไปเก็บไว้ใน ที่อยู่ที่ของพารามิเตอร์
method size : เป็นการ check ขนาดของ Stack ซึ่งเมื่อเรียก method นี้ จะรีเทิร์นจำนวนข้อมูลที่มีอยู่ใน Stack
method isEmpty : เป็นการ check ว่า Stack ว่างหรือไม่ โดย check จาก จำนวนของข้อมูลที่มีอยู่ใน Stack
method isFull : เป็นการ check ว่า Stack เต็มหรือไม่ โดย check จาก จำนวนของข้อมูลที่มีอยู่ใน Stack
ส่วนที่ 2 : StingStack.h เป็นส่วนของ Header ใช้กำหนดชื่อ class , method และ variable โดยยังไม่ได้ระบุถึงรายละเอียดต่างๆ ของ method
ส่วนที่ 3 : StringStack.ino เป็นส่วนโค้ดทดสอบการทำงานของ Class StringStack ที่ได้สร้างไว้
เริ่มต้นด้วยการ สร้าง object st จาก class StringStack
สามารถ Download ตัวอย่าง Code ข้อ 1 ได้ที่นี้
2) ใช้คลาส StringStack ในข้อแรก นำมาเขียนโค้ด Arduino เพื่อให้มีพฤติกรรมการทำงานดังนี้
2.1) บอร์ด Arduino มีวงจรปุ่มกด Get ทำงานแบบ Active-Low (ใช้ตัวต้านทานแบบ Pull-up, 10k)
2.2) ผู้ใช้สามารถส่งข้อความ (ภาษาอังกฤษ) ทีละบรรทัด (ไม่เกิน 20
ตัวอักขระต่อบรรทัด) จากคอมพิวเตอร์ โดยส่งผ่าน Serial Monitor ของ Arduino
IDE ไปยังบอร์ด Arduino
2.3) ข้อความแต่ละบรรทัดที่ถูกส่งไปยัง
Arduino จะถูกจัดเก็บใน StringStack (เก็บบนกองซ้อน) ถ้าไม่เต็มความจุ
แต่ถ้าเต็มความจุ ไม่สามารถเก็บข้อความใหม่ได้ Arduino จะต้องส่งข้อความ
"Full" กลับมา
2.4) เมื่อมีการกดปุ่ม Get แล้วปล่อยหนึ่งครั้ง
ข้อความบนสุด (ถ้ามี) ของ StringStack จะถูกดึงออกมาแล้วส่งผ่าน Serial
Monitor ไปยังคอมพิวเตอร์
แต่ถ้าไม่ข้อความใดๆ Arduino จะต้องส่งข้อความ "Empty" กลับมา เมื่อกดปุ่มแล้วปล่อย
รูปโค้ดการทำงานของไฟล์ .ino ส่วนที่ 1
รูปโค้ดการทำงานของไฟล์ .ino ส่วนที่ 2
รูปโค้ดการทำงานของไฟล์ .ino ส่วนที่ 3
โค้ดในส่วนสุดท้ายนี้เป็นส่วนของการอ่านค่าจาก pin บนบอร์ด Arduino ว่ามีการรับค่าการกดปุ่มจากผู้ใช้งานหรือไม่ ถ้าผู้ใช้งานกดปุ่มแล้วปล่อย ก็จะทำการ get ค่า ที่อยู่บนสุดของ stack ออกมา แต่ถ้า stack ว่างเปล่า ก็จะให้แสดงคำว่า Empty
ภาพแสดงการต่อวงจร
ภาพแสดงการต่อวงจรจริง
ผลการทดสอบการทำงาน
รูปภาพแสดงผลการทำงานเมื่อป้อน input ผ่านทาง Serial Monitor
รูปภาพแสดงผลการทำงานเมื่อป้อน input ผ่านทาง Serial Monitor เกิน 20 ตัวอักษร
รูปภาพแสดงผลการทำงานเมื่อป้อน input ผ่านทาง Serial Monitor จนครบความจุของ Stack
รูปภาพแสดงผลการทำงานเมื่อผู้ใช้งานกดปุ่มเพื่อ get ค่าจาก Stack
รูปภาพแสดงผลการทำงานเมื่อผู้ใช้งานกดปุ่มเพื่อ get ค่าจาก Stack แต่ Stack ว่าง
สามารถ Download ตัวอย่าง Code ข้อ 2 ได้ที่นี้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น