1.1k likes | 1.39k Views
แนะนำแผงวงจรหลัก MicroBOX. เครื่องมือในการพัฒนาโปรแกรมควบคุมการทำงาน MicroBOX
E N D
แนะนำแผงวงจรหลัก MicroBOX
เครื่องมือในการพัฒนาโปรแกรมควบคุมการทำงาน MicroBOX ประกอบด้วยชุดซอร์ฟแวร์พัฒนาโปรแกรมภาษา C สำหรับไมโครคอนโทรลเลอร์ AVR ในแบบโอเพ่นซอร์ส(Open Source) ซึ่งสามารถนำมาใช้งานได้โดยไม่มีค่าใช้จ่าย และอีกส่วนหนึ่งคือไลบรารีภาษา C สนับสนุนควบคุมการทำงาน MicroBOX เพื่อประยุกต์สร้างหุ่นยนต์ สำหรับในการติดเครื่องมือในการพัฒนาโปรแกรมควบคุมการ MicroBOX ในการประยุกต์สร้างหุ่นยนต์ผู้พัฒนาจำเป็นต้องติดตั้งเครื่องมือ 4 ตัวดังต่อไปนี้
1.AVR Studioทำหน้าที่เป็นเท็กซ์เอดิเตอร์สำหรับการสร้างไฟล์โปรเจ็กต์และไฟล์ซอร์สโค้ดภาษา C 2.WinAVRทำหน้าที่เป็นซอร์ฟแวร์ตัวแปลโปรแกรมภาษา C(C Compiler)เพื่อให้ได้ไฟล์นามสกุล .hex นำไปเขียนลงในหน่วยความจำโปรแกรมของไมโครคอนโทรลเลอร์ในแผงวงจรควบคุมหลักต่อไป
3.ไลบรารีภาษา Cสนับสนุนการทำงาน MicroBOX สำหรับประยุกต์สร้างหุ่นยนต์ซึ่งจะช่วยอำนวยความสะดวกในการพัฒนาโปรแกรม โดยปรับปรุงจากไฟล์ไลบรารีของชุดกล่องสมองกล IPST-MicroBOX โดยกลุ่มของไฟล์ไลบรารีเหล่านี้ถูกจัดเก็บไว้ในโฟลวเดอร์ robot_includeซึ่งบรรจุอยู่ใน CD-ROM ที่มาพร้อมกับชุดหุ่นยนต์ หรือดาวน์โหลดได้จาก www.ipst-microbox.com
ชุดไลบรารีภาษา C สนับสนุนการทำงาน MicroBOX สำหรับชุดพัฒนาหุ่นยนต์
4.ไดเวอร์ USB สำหรับเครื่องโปรแกรม PX-4000 ซึ่งบรรจุอยู่ใน CD-ROM ที่มาพร้อมกับชุดหุ่นยนต์
การเชื่อมต่อเครื่องโปรแกรม PX-4000 ระหว่างบอร์ดควบคุมหุ่นยนต์และคอมพิวเตอร์
แผงวงจร LED: ZX-LED คุณสมบัติทางเทคนิค ใช้ LED กลมขนาดเส้นผ่านศูนย์ กลาง 10 มิลลิเมตร พร้อมวงจรขับ ใช้ไฟเลี้ยง +5V กระแสไฟฟ้าสูงสุด 20mA
ไลบรารีและชุดคำสั่งที่แนะนำไลบรารีและชุดคำสั่งที่แนะนำ ไลบรารี in_out.h เป็นไลบรารีที่บรรจุชุดคำสั่งอ่านและเขียนข้อมูลอินพุตและเอาต์พุตของพอร์ตไมโครคอนโทรลเลอร์ ก่อนเรียกใช้งานฟังก์ชั่นที่บรรจุอยู่ภายในผู้พัฒนาจะต้องทำการผนวกไฟล์ไลบรารีไว้ที่ตอนต้นของโปรแกรมภาษา C ด้วยคำสั่ง #include <in_out.h>
ฟังก์ชั่นที่แนะนำในหัวข้อนี้ฟังก์ชั่นที่แนะนำในหัวข้อนี้ ฟังก์ชั่นout_a : กำหนดค่าสัญญาณดิจิตอลที่พอร์ต A out_b: กำหนดค่าสัญญาณดิจิตอลที่พอร์ต B out_c : กำหนดค่าสัญญาณดิจิตอลที่พอร์ต C out_d : กำหนดค่าสัญญาณดิจิตอลที่พอร์ต D รูปแบบvoid out_a(char _bit,char _dat); void out_b(char _bit,char _dat); void out_c(char _bit,char _dat); void out_d(char _bit,char _dat);
พารามิเตอร์_bitใช้กำหนดขาพอร์ตที่ต้องการในช่วง 0 ถึง 7 _datใช้กำหนดค่าข้อมูลดิจิตอลที่ต้องการอาจ มีค่าเป็น 0 หรือ 1
ฟังก์ชั่น toggle_a: กลับค่าสัญญาณดิจิตอลที่พอร์ต A toggle_b : กลับค่าสัญญาณดิจิตอลที่พอร์ต B toggle_c : กลับค่าสัญญาณดิจิตอลที่พอร์ต C toggle_d : กลับค่าสัญญาณดิจิตอลที่พอร์ต D รูปแบบ void toggle_a(char _bit); void toggle_b(char _bit); void toggle_c(char _bit); void toggle_d(char _bit); พารามิเตอร์_bitใช้กำหนดขาพอร์ตที่ต้องการในช่วง 0 ถึง 7
ไลบรารี sleep.h เป็นไลบรารีที่บรรจุชุดคำสั่งในการหน่วงเวลา ก่อนเรียกใช้งานฟังก์ชั่นที่บรรจุอยู่ภายใน ผู้พัฒนาจะต้องทำการผนวกไฟล์ไลบรารีไว้ที่ตอนต้นของโปรแกรมภาษา C ด้วยคำสั่ง #include <sleep.h> ฟังก์ชั่นsleep : สำหรับหน่วงเวลาในหน่วยมิลลิวินาที รูปแบบvoid sleep(unsigned int ms); พารามิเตอร์msใช้กำหนดค่าเวลาที่ต้องการหน่วงในหน่วย มิลลิวินาที(เป็นค่าประมาณ)
การทดลองที่ 1-5 การเชื่อมต่อทางฮาร์ดแวร์ ต่อ ZX-LED เข้ากับพอร์ต PD7
โปรแกรมการทดลองที่ 1(led_01.c) สั่งให้ LED ติด ที่พอร์ต PD7 #include <in_out.h> void main() { out_d(7,1); }
โปรแกรมการทดลองที่ 2(led_02.c) สั่งให้ LED ดับ ที่พอร์ต PD7 #include <in_out.h> void main() { out_d(7,0); }
โปรแกรมการทดลองที่ 3(led_03.c)สั่งให้ LED ที่พอร์ต PD7 ติดนานประมาณ 5 วินาที แล้วดับ #include <in_out.h> #include <sleep.h> void main() { out_d(7,1); sleep(5000); out_d(7,0); }
โปรแกรมการทดลองที่ 4(led_04.c) สั่งให้ LED ที่พอร์ต PD7 กระพริบทุกๆ 0.5 วินาที #include <in_out.h> #include <sleep.h> void main() { while(1) { out_d(7,1); sleep(500); out_d(7,0); sleep(500); } }
โปรแกรมการทดลองที่ 5(led_05.c)สั่งให้ LED กระพริบทุกๆ 0.5 วินาที ด้วยคำสั่ง toggle #include <in_out.h> #include <sleep.h> void main() { while(1) { toggle_d(7); sleep(500); } }
แผงวงจรลำโพงเปียโซ: ZX-SPEAKER คุณสมบัติทางเทคนิค ใช้ลำโพงมีอิมพีแดนซ์ 32 โอห์ม มีค่าถี่เรโซแนนซ์ในย่าน 1 ถึง 3 kHz
ไลบรารีและชุดคำสั่งที่แนะนำไลบรารีและชุดคำสั่งที่แนะนำ ไลบรารี sound.h เป็นไลบรารีที่บรรจุชุดคำสั่งเกี่ยวกับการกำเนิดสัญญาณโดยทำงานร่วมกับแผงวงจร ZX-SPEAKER ก่อนเรียกใช้งานฟังก์ชั่นที่บรรจุอยู่ภายในผู้พัฒนาจะต้องทำการผนวกไฟล์ไลบรารีไว้ที่ตอนต้นของโปรแกรมภาษา C ด้วยคำสั่ง #include <sound.h>
ฟังก์ชั่น sound_a : เลือกกำเนิดเสียงที่ขาพอร์ตใดๆของพอร์ต A sound_b : เลือกกำเนิดเสียงที่ขาพอร์ตใดๆของพอร์ต B sound_c : เลือกกำเนิดเสียงที่ขาพอร์ตใดๆของพอร์ต C sound_d : เลือกกำเนิดเสียงที่ขาพอร์ตใดๆของพอร์ต D รูปแบบ void sound_a(char ch,int freq,int time); void sound_b(char ch,int freq,int time); void sound_c(char ch,int freq,int time); void sound_d(char ch,int freq,int time);
พารามิเตอร์chใช้กำหนดขาพอร์ตที่ต้องการในช่วง 0 ถึง 7 freqใช้กำหนดค่าความถี่ค่าสัญญาณเสียง timeใช้กำหนดช่วงเวลาในการกำเนิด สัญญาณเสียงเป็นจำนวนต็มเท่าของ 0.1 มิลลิวินาที
ฟังก์ชั่น beep_a : เลือกกำเนิดเสียงความถี่ 2 kHz นาน 10 มิลลิวินาทีที่ขาพอร์ตใดๆของพอร์ต A beep_b : เลือกกำเนิดเสียงความถี่ 2 kHz นาน 10 มิลลิวินาทีที่ขาพอร์ตใดๆของพอร์ต B beep_c: เลือกกำเนิดเสียงความถี่ 2 kHz นาน 10 มิลลิวินาทีที่ขาพอร์ตใดๆของพอร์ต C beep_d : เลือกกำเนิดเสียงความถี่ 2 kHz นาน 10 มิลลิวินาทีที่ขาพอร์ตใดๆของพอร์ต D
รูปแบบ void beep_a(char ch); void beep_b(char ch); void beep_c(char ch); void beep_d(char ch); พารามิเตอร์chใช้กำหนดขาพอร์ตที่ต้องการในช่วง 0 ถึง 7
การทดลองที่ 6-7 สร้างสัญญาณเสียงด้วยลำโพงเปียโซ การเชื่อมต่อทางฮาร์ดแวร์ ต่อ SPEAKER เข้ากับพอร์ต PA5
โปรแกรมการทดลองที่ 6(sound_01.c) สร้างสัญญาณเสียงติ๊ดทุกๆ 1 วินาที #include <sound.h> #include <sleep.h> void main() { while(1) { beep_a(5); sleep(1000); } }
โปรแกรมการทดลองที่ 7(sound_02.c) สร้างสัญญาณเสียงความถี่ 800 ช่วง 0.1 วินาที ทุกๆ 1 วินาที #include <sound.h> #include <sleep.h> void main() { while(1) { sound_a(5,800,100); sleep(1000); } }
แผงวงจรสวิตช์: ZX-SWITCH คุณสมบัติทางเทคนิค ที่ช่อง HIGH ถ้ากดสวิตช์จะส่งลอจิก “1” และไฟสีแดงติด ที่ช่อง LOW ถ้ากดสวิตช์จะส่งลอจิก “0” และไฟสีเขียวติด
ไลบรารีและชุดคำสั่งที่แนะนำไลบรารีและชุดคำสั่งที่แนะนำ ไลบรารี in_out.h เป็นไลบรารีที่บรรจุชุดคำสั่งอ่านและเขียนข้อมูลอินพุตและเอาต์พุตของพอร์ตไมโครคอนโทรลเลอร์ ก่อนเรียกใช้งานฟังก์ชั่นที่บรรจุอยู่ภายในผู้พัฒนาจะต้องทำการผนวกไฟล์ไลบรารีไว้ที่ตอนต้นของโปรแกรมภาษา C ด้วยคำสั่ง #include <in_out.h>
ฟังก์ชั่น in_a : อ่านค่าสัญญาณดิจิตอลจากขาพอร์ตใดๆของพอร์ต A in_b : อ่านค่าสัญญาณดิจิตอลจากขาพอร์ตใดๆของพอร์ต B in_c : อ่านค่าสัญญาณดิจิตอลจากขาพอร์ตใดๆของพอร์ต C in_d: อ่านค่าสัญญาณดิจิตอลจากขาพอร์ตใดๆของพอร์ต D รูปแบบ char in_a(char _bit); char in_b(char _bit); char in_c(char _bit); char in_d(char _bit);
พารามิเตอร์ _bitใช้กำหนดขาพอร์ตที่ต้องการในช่วง 0 ถึง 7 การคืนค่า ฟังก์ชั่นจะทำการคืนค่าสัญญาณดิจิตอลของตำแหน่งขาพอร์ตที่อ่านซึ่งอาจมีค่าเป็น 0 หรือ 1 เท่านั้น
การทดลองที่ 8-9 การเชื่อมต่อทางฮาร์ดแวร์ ต่อ ZX-LED เข้ากับพอร์ต PD7 ต่อ ZX-SWITCH จากช่อง LOW เข้ากับพอร์ต PB4
โปรแกรมการทดลองที่ 8(switch_01.c) LED ติดเมื่อมีการกดสวิตช์/ดับเมื่อปล่อยสวิตช์ #include <in_out.h> #include <sleep.h> void main() { while(1) { if(in_b(4)==0) {out_d(7,1);} else {out_d(7,0);} } }
โปรแกรมการทดลองที่ 9(switch_02.c) ทุกๆครั้งที่มีการกดสวิตช์ LED จะกลับสถานะการติด/ดับ #include <in_out.h> #include <sleep.h> void main() { while(1) { if(in_b(4)==0) { toggle_d(7); sleep(200); } } }
แสดงผลในรูปแบบ 16 * 2 ทดสอบใช้งานโมดูล LCD บนแผงวงจร Display-Motor
แผงวงจรแสดงผลและควบคุมการขับมอเตอร์: Display-Motor
ไลบรารีและชุดคำสั่งที่แนะนำไลบรารีและชุดคำสั่งที่แนะนำ ไลบรารี lcd.h เป็นไลบรารีที่บรรจุชุดคำสั่งเกี่ยวกับการแสดงข้อความที่โมดูล LCD บนแผงวงจร Display-Motor ก่อนเรียกใช้งานฟังก์ชั่นที่บรรจุอยู่ภายในผู้พัฒนาจะต้องทำการผนวกไฟล์ไลบรารีไว้ที่ตอนต้นของโปรแกรมภาษา C ด้วยคำสั่ง #include <lcd.h>
ฟังก์ชั่น lcdหรือ LCD : แสดงข้อความที่โมดูล LCD แบบ 16 ตัวอักขระ 2 บรรทัด รูปแบบ void lcd(char *p,…); พารามิเตอร์ pใช้กำหนดรูปแบบการแสดงผลที่โมดูล LCD โดยสามารถกำหนดรูปแบบการแทรกสัญลักษณ์พิเศษเพื่อร่วมแสดงผลค่าข้อมูลตัวเลขชนิดต่างๆได้
รหัสบังคับการทำงาน %c หรือ %Cแสดงผลอักขระ 1 ตัว %d หรือ %Dแสดงผลตัวเลขฐานสิบช่วง -32,768 ถึง +32,767 %l หรือ %Lแสดงผลตัวเลขฐานสิบช่วง -2,147,483,648 ถึง +2,147,483,647 %f หรือ %Fแสดงผลตัวเลขจำนวนจริงทศนิยม 3 หลัก #c คีย์คำสั่งพิเศษเพื่อสั่งเคลียร์ข้อความก่อน แสดงผลในครั้งถัดไป #n คีย์คำสั่งพิเศษเพื่อนำข้อความไปแสดงผลใน บรรทัดที่ 2(บรรทัดล่าง)
การทดลองที่ 10-14 แสดงข้อความที่หน้าจอ LCD การเชื่อมต่อทางฮาร์ดแวร์ ต่อแผงวงจร Display-Motor เข้ากับบอร์ด IPST(ให้ทำการย้ายจุดจ่ายไฟมาที่บอร์ด Display-Motor ด้วย)
โปรแกรมการทดลองที่ 10(lcd_01.c) แสดงข้อความ “Hello World!” #include <lcd.h> void main() { lcd("Hello World!"); }
โปรแกรมการทดลองที่ 11(lcd_02.c) แสดงผลลัพธ์เมื่อตัวอักขระติดกันเกิน 16 ตัวอักษร #include <lcd.h> void main() { lcd("abcdefghijklmnopqrstuvwxyz"); }
โปรแกรมการทดลองที่ 12(lcd_03.c) แสดงผลลัพธ์ค่าข้อมูลตัวเลขจำนวนเต็ม(int) #include <lcd.h> void main() { int x=158; lcd("Value: %d ",x); }