1 / 76

การพัฒนาโปรแกรมบน IPST-MicroBOX

การพัฒนาโปรแกรมบน IPST-MicroBOX. กฤษดา ใจเย็น นคร ภักดีชาติ วรพจน์ กรแก้ววัฒนกุล. 2. บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด www.inex.co.th. แผงวงจรแสดงผลและพอร์ตเอนกประสงค์. ชุดที่ 5. การทดลอง. แผงวงจรแสดงผลและพอร์ตเอนกประสงค์. ตัวต้านทาน ปรับค่าได้ PA7. คอนเน็กเตอร์

kolina
Download Presentation

การพัฒนาโปรแกรมบน IPST-MicroBOX

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. การพัฒนาโปรแกรมบน IPST-MicroBOX กฤษดา ใจเย็น นคร ภักดีชาติ วรพจน์ กรแก้ววัฒนกุล 2 บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด www.inex.co.th

  2. แผงวงจรแสดงผลและพอร์ตเอนกประสงค์แผงวงจรแสดงผลและพอร์ตเอนกประสงค์ ชุดที่ 5 การทดลอง

  3. แผงวงจรแสดงผลและพอร์ตเอนกประสงค์แผงวงจรแสดงผลและพอร์ตเอนกประสงค์ ตัวต้านทาน ปรับค่าได้ PA7 คอนเน็กเตอร์ สำหรับสื่อสารอนุกรม สวิตช์ PB5 PB6 และ PB7 จอแสดงผล LCD

  4. วงจรของแผงวงจรแสดงผล • ใช้พอร์ต PC2 ถึง PC7 ในการติดต่อกับโมดูล LCD • PC0 และ PD1 สำหรับการสื่อสารอนุกรมแบบ I2C บัส • PD0 และ PD1 สำหรับการสื่อสารอนุกรม • PB5,PB6 และ PB7 สำหรับเชื่อมต่อกับสวิตช์ • PA7 สำหรับอ่านค่าแรงดันอะนาลอกจากตัวต้านทานปรับค่าได้ • PA6 เป็นจุดต่อเอนกประสงค์

  5. ชุดคำสั่งสำหรับแสดงผลข้อความที่โมดูล LCD แบบ 16*2 ฟังก์ชั่น lcd หรือ LCD สำหรับการแสดงผลข้อความที่โมดูล LCD แบบ 16*2 รูปแบบฟังก์ชั่นvoid lcd(char *p,...) พารามิเตอร์ p ทำหน้าที่รับการกำหนดกลุ่มข้อความที่ต้องการแสดงผลที่โมดูล LCD โดยสามารถกำหนดรูปแบบการแทรกสัญลักษณ์พิเศษเพื่อร่วมแสดงผลค่าข้อมูลตัวเลขรูปแบบอื่นๆ อันได้แก่

  6. ชุดคำสั่งสำหรับแสดงผลข้อความที่โมดูล LCD แบบ 16*2 ตัวอย่าง 1 lcd(“Hello LCD”); // แสดงข้อความ “Hello LCD”ที่โมดูล LCD ผลลัพธ์ที่โมดูล LCD ตัวอย่างที่ 2 lcd("abcdefghijklmnopqrstuvwxyz"); // แสดงผลข้อความเมื่อสายอักขระเกิน 16 ตัวอักษร // อักขระตัวถัดไปจะขึ้นบรรทัดที่ 2 ทันที ผลลัพธ์ที่โมดูล LCD

  7. ชุดคำสั่งสำหรับแสดงผลข้อความที่โมดูล LCD แบบ 16*2 ตัวอย่าง 3 lcd(“Value: %d unit ”,518); // แสดงข้อความร่วมกับข้อมูลตัวเลข(518)ที่โมดูล LCD ผลลัพธ์ที่โมดูล LCD ตัวอย่าง 4 lcd(“Value: %d ”,analog(4)); // อ่านค่าอะนาลอกที่ช่อง 4 (ตรงกับพอร์ต PA4) มาแสดงผลที่โมดูล LCD ผลลัพธ์ที่โมดูล LCD

  8. ชุดคำสั่งสำหรับแสดงผลข้อความที่โมดูล LCD แบบ 16*2 ตัวอย่าง 5 char c_test=’j’; lcd(“abcd%cxyz”,c_test); // แสดงข้อความอักระ “j” ร่วมกับข้อความอื่นๆ ผลลัพธ์ที่โมดูล LCD ตัวอย่าง 6 lcd(“Value: %f ”,125.450); // แสดงข้อความร่วมกับข้อมูลตัวเลขจำนวนจริงที่โมดูล LCD(แสดงทศนิยม 3 หลัก) ผลลัพธ์ที่โมดูล LCD

  9. การทดลองที่ 12 การแสดงผลออกจอ LCD อย่างง่าย เชื่อมต่อโมดูลแผงวงจรแสดงผลโมดูล LCD เข้ากับแผงวงจรหลัก MicroBOX #include <ipst.h> void main() { while(1) { lcd("Hello LCD"); } }

  10. การทดลองที่ 13 การแสดงผลออกจอ LCD 2 บรรทัด เชื่อมต่อโมดูลแผงวงจรแสดงผลโมดูล LCD เข้ากับแผงวงจรหลัก MicroBOX #include <ipst.h> void main() { while(1) { lcd("Line1#nLine2"); } }  new line

  11. การทดลองที่ 14 การแสดงผลตัวเลข แบบจำนวนเต็ม เชื่อมต่อโมดูลแผงวงจรแสดงผลโมดูล LCD เข้ากับแผงวงจรหลัก MicroBOX #include <ipst.h> void main() { int x = 1568; while(1) { lcd("Integer: %d ",x); }  }

  12. การทดลองที่ 15การแสดงผลตัวเลขแบบทศนิยม #include <ipst.h> void main() { float x = 238.592; while(1) { lcd("Float: %f ",x); } }

  13. การทดลองที่ 16ใช้งานสวิตช์บนแผงวงจรแสดงผล #include <ipst.h> void main() { lcd("Test switch"); while(1) { if(sw1()==0) { while(sw1()==0); lcd("SW1 Active!"); sleep(1000); lcd_clear(); } else if(sw2()==0) { while(sw2()==0); lcd("SW2 Active!"); sleep(1000); lcd_clear(); } else if(sw3()==0) { while(sw3()==0); lcd("SW3 Active!"); sleep(1000); lcd_clear(); } } } สวิตช์ PB5, PB6 และ PB7

  14. บททดสอบ 4 เขียนโปรแกรมแสดงค่าการนับขึ้นทีละ 1 ค่าทุกๆ 1 วินาทีโดยประมาณ และแสดงค่าการนับที่โมดูล LCD ซึ่งรูปแบบข้อความที่หน้าจอ LCD รูปแบบ Time: xxx sec โดยที่ xxx คือค่าเวลาที่นับได้ ณ ปัจจุบัน

  15. บททดสอบ 5 เครื่องตั้งเวลา 30 วินาทีแบบนับลง เขียนโปรแกรมแสดงค่าการนับลงครั้งละ 1 ค่าทุกๆ 1 วินาทีโดยประมาณ ค่าเริ่มต้นถูกตั้งค่าไว้ที่ 30 วินาทีและแสดงค่าการนับที่โมดูล LCD รูปแบบ CountDown! Time: 30 sec เมื่อนับค่าถึง 0 ให้แสดงข้อความ Complete Time: 0 sec

  16. บททดสอบ 6 เครื่องตั้งเวลาแบบนับลงสามารถกำหนดค่าได้ เขียนโปรแกรมแสดงค่าการนับลงครั้งละ 1 ค่าทุกๆ 1 วินาทีโดยประมาณ โดยค่าเริ่มต้นสามารถถูกตั้งค่าได้จากผู้ใช้งานจากการกดสวิตช์ SW1,SW2 และ SW3 ช่วงเริ่มต้นของโปรแกรมจะเป็นการรับค่าการกำหนดเวลาการนับในหน่วยวินาทีโดยมีเงื่อนไขคือ เมื่อกดสวิตช์ SW1 ค่าที่ถูกตั้งจะเพิ่มขึ้นครั้งละ 1 ค่า เมื่อกดสวิตช์ SW2 ค่าที่ถูกตั้งจะลดลงครั้งละ 1 ค่า ซึ่งในช่วงระหว่างการตั้งค่านี้ที่หน้าจอ LCD จะแสดงค่าการตั้งค่าเวลานับลงเป็น set:xxx sec Time:0 sec เมื่อกดสวิตช์ SW3 จะเข้าสู่ขั้นตอนการนับลงทันที ซึ่งในช่วงระหว่างการนับลงที่หน้าจอ LCD จะแสดงรูปแบบข้อความที่หน้าจอ LCD เป็น Countdown Time:59 sec Time:xxx sec เมื่อนับลงมาจนถึงค่า 0 แล้วที่หน้าจอ LCD จะต้องปรากฏข้อความว่า Complete Time: 0 sec

  17. แผงวงจรตรวจจับแบบอะนาลอกแผงวงจรตรวจจับแบบอะนาลอก ชุดที่ 6 การทดลองอุปกรณ์กลุ่ม

  18. 5 ประสาทรับรู้ของมนุษย์ การสัมผัส การมองเห็น การได้ยินเสียง การรับรู้กลิ่น การรับรู้รส

  19. 5V 0V 10W วงจรแปลง อะนาลอก เป็นดิจิตอล bit 25 C ฐานสอง 10.5 cm byte ฐานสิบหก ลอจิก อะนาลอก VS ดิจิตอล 0-5V 0-1023 (10 bit)

  20. กระบวนการแปลค่าดิจิตอล (Quantization)

  21. บัญญัติไตรยางค์ Data x V Vdigital = Full Data 512 x 5 Vdigital = 1024 Vdigital = 2.5 V 8 บิต หมายถึงข้อมูลไบนารี่ 8 บิต เกิดค่าที่เปลี่ยนแปลงได้จาก 0 ถึง 255 28 ความละเอียดเพิ่มขึ้น 2 บิต ความละเอียดเพิ่มขึ้น 4 เท่า 10 บิต หมายถึงข้อมูลไบนารี่ 10 บิต เกิดค่าที่เปลี่ยนแปลงได้จาก 0 ถึง 1023 210 ความละเอียดในการแปลค่า (Resolution)

  22. ชุดคำสั่งสำหรับอ่านค่าอะนาลอกชุดคำสั่งสำหรับอ่านค่าอะนาลอก ฟังก์ชั่นanalogสำหรับการอ่านค่าอะนาลอกความละเอียดขนาด 10 บิต ที่ขาสัญญาณใดๆของพอร์ต A รูปแบบฟังก์ชั่น unsigned int analog(unsigned char channel) channelทำหน้าที่กำหนดช่องอะนาลอกที่ต้องการใช้งานโดยมีค่าตั้งแต่ 0 ถึง 7 ซึ่งจะตรงกับพอร์ต PA0 ถึง PA7 ตามลำดับ ตัวอย่างที่ 7 int adc_val=0; adc_val = analog(2); อ่านค่าข้อมูลจากเซนเซอร์อะนาลอกที่ต่ออยู่กับขา RA2 เก็บไว้ในตัวแปรadc_val

  23. แผงวงจรตรวจจับแสง ใช้ตรวจจับแสงสว่าง เลือกเอาต์พุตได้ 2 แบบคือ แรงดันเอาต์พุตเพิ่ม เมื่อแสงตกกระทบมากขึ้น แรงดันเอาต์พุตลดลง เมื่อแสงตกกระทบมากขึ้น

  24. แผงวงจรตรวจจับแสง ได้รับแสง มาก ค่าที่ตรวจวัดได้ มาก ได้รับแสง น้อย ค่าที่ตรวจวัดได้ น้อย

  25. แผงวงจรตรวจจับแสง ได้รับแสง น้อย ค่าที่ตรวจวัดได้ มาก ได้รับแสง มาก ค่าที่ตรวจวัดได้ น้อย

  26. แผงวงจรตรวจจับแสง VLDR = +5V(RLDR/(RLDR+R1)) VR1 = +5V(R1/(RLDR+R1))

  27. การทดลองที่ 17อ่านค่าจากแผงวงจรตรวจจับแสง อ่านค่าอะนาลอกจากการวัดปริมาณแสงจากแผงวงจรตรวจจับแสง จากพอร์ต PA5 และนำค่าที่อ่านได้ไปแสดงผลที่โมดูล LCD 1. ต่อแผงวงจร ZX-LDR เข้ากับบอร์ด IPST ที่ตำแหน่ง PA5

  28. การทดลองที่ 17อ่านค่าจากแผงวงจรตรวจจับแสง 2.เปิดโปรแกรม AVR Studio เขียนโปรแกรมตามตัวอย่างต่อไปนี้ #include<ipst.h> void main() { while(1) { lcd("Light: %d ",analog(5)); sleep(100); } } 3.ดาวน์โหลดโปรแกรมไปยังไมโครคอนโทรลเลอร์ 4. ดูผลการเปลี่ยนแปลงค่าของ LDR เมื่อสภาวะแสงแตกต่างกัน

  29. บททดสอบ 7 สวิตช์เปิดไฟกลางคืน เขียนโปรแกรมควบคุมการเปิด/ปิดไฟ (แทนด้วย LED ที่ตำแหน่ง PD0 ) จากปริมาณแสงที่ได้จากแผงวงจรตรวจจับแสงตำแหน่ง PA5 ถ้าแสงน้อย LED จะต้องติดสว่างเพื่อแทนการเปิดไฟ ถ้าหากแสงสว่างปกติ LED จะต้องดับซึ่งแทนการปิดไฟ นำค่าอะนาลอกของปริมาณแสงที่อ่านได้ไปแสดงผลที่โมดูล LCD Light : 900 Light : 500 Light : 100

  30. แผงวงจรตรวจจับการสะท้อนแสงแผงวงจรตรวจจับการสะท้อนแสง 1023 512 0

  31. แผงวงจรตรวจจับการสะท้อนแสงแผงวงจรตรวจจับการสะท้อนแสง ใช้ LED แบบความสว่างสูงเป็นตัวกำเนิดแสง แล้วใช้ LDR เป็นตัวรับแสงสะท้อนกลับมา ค่าที่อ่านได้จาก LDR เป็นความเข้มแสง ที่สะท้อนจากวัตถุต่าง ๆ

  32. ใช้แผงวงจรตรวจจับการสะท้อนเป็น Encoder อย่างง่าย

  33. จำนวนช่องเท่ากับ 9 ช่อง เส้นผ่านศูนย์กลาง 10CM เส้นรอบวง = pD เส้นรอบวง = 31.4CM D = 10 CM ช่องการนับ 1 ช่อง = 31.4 / 9 = 3.5 CM / ช่อง

  34. การทดลองที่ 18 อ่านค่าจากแผงวงจรตรวจจับแสงสะท้อน อ่านค่าอะนาลอกจากแผงวงจรตรวจจับแสงสะท้อน จากพอร์ต PA5 และนำค่าที่อ่านได้ไปแสดงผลที่โมดูล LCD 1. ต่อแผงวงจร ZX-Reflect เข้ากับบอร์ด IPST ที่ตำแหน่ง PA1

  35. การทดลองที่ 18 อ่านค่าจากแผงวงจรตรวจจับแสงสะท้อน 2.เปิดโปรแกรม AVR Studio เขียนโปรแกรมตามตัวอย่างต่อไปนี้ #include<ipst.h> void main() { while(1) { lcd("Light: %d ",analog(1)); sleep(100); } } 3.ดาวน์โหลดโปรแกรมไปยังไมโครคอนโทรลเลอร์ 4. นำแผงวงจร ZX-Reflect ไปวางในตำแหน่งต่าง ๆ สังเกตผลที่จอ LCD

  36. แผงวงจรตรวจวัดอุณหภูมิแผงวงจรตรวจวัดอุณหภูมิ อุณหภูมิสูงขึ้นแรงดันลดลง อุณหภูมิสูงขึ้นแรงดันมากขึ้น

  37. การทดลองที่ 19 อ่านค่าอุณหภูมิพร้อมแจ้งเตือน เมื่ออุณหภูมิสูงกว่า 30 องศาเซลเซียส จะแจ้งเตือนด้วยเสียงจากลำโพงเปียโซ และแสดงค่าอะนาลอกจากแผงวงจรวัดอุณหภูมิที่หน้าจอ LCD กำหนดที่อุณหภูมิ 30 องศาเซลเซียส เทอร์มิสเตอร์ของแผงวงจรวัดอุณหภูมิจะมีค่าความต้านทานไฟฟ้าประมาณ 8 กิโลโอห์ม โดยที่Dคือค่าข้อมูลดิจิตอลที่ได้ Rtคือค่าความต้านทานที่อุณหภูมิของเงื่อนไข (k Ohm) ดังนั้นเมื่อต้องการตรวจวัดที่อุณหภูมิ 30 องศาค่าที่อ่านได้จะมีค่าเท่ากับ 455 โดยประมาณ

  38. การทดลองที่ 19 อ่านค่าอุณหภูมิพร้อมแจ้งเตือน • ต่อแผงวงจร ZX-Thermister เข้ากับบอร์ด IPST ที่ตำแหน่ง PA1 • ต่อแผงวงจรลำโพงเปียโซเข้าที่ตำแหน่ง PD6

  39. การทดลองที่ 19อ่านค่าอุณหภูมิพร้อมแจ้งเตือน 2.เปิดโปรแกรม AVR Studio เขียนโปรแกรมตามตัวอย่างต่อไปนี้ #include<ipst.h> void main() { unsigned int value; while(1) { value = analog(1); lcd("Temp: %d ",value); if(value<455) { beep_d(6); } sleep(100); } } 3.ดาวน์โหลดโปรแกรมไปยังไมโครคอนโทรลเลอร์ 4. ทดสอบการทำงาน

  40. แผงวงจรตัวต้านทานปรับค่าได้แผงวงจรตัวต้านทานปรับค่าได้ ตัวต้านทานปรับค่าได้แบบตัวตั้ง ตัวต้านทานปรับค่าได้แบบตัวนอน สัญลักษณ์ ตัวต้านทานปรับค่าได้แบบเลื่อน

  41. แผงวงจรตรวจจับเสียง เอาต์พุตที่ได้จากแผงวงจรตรวจจับเสียง จะเป็นระดับแรงดัน 0 ถึง 5 โวลต์ เปลี่ยนแปลงตามระดับความดังของเสียง เสียงดังมากก็ให้ระดับแรงดันมาก เสียงค่อยก็ให้ระดับแรงดันน้อย

  42. แผงวงจร LED อินฟราเรด และ Photo Transistor LED Infrared Photo Transistor

  43. แผงวงจรโมดูลรับแสงอินฟราเรดแผงวงจรโมดูลรับแสงอินฟราเรด

  44. แผงวงจรโมดูลรับแสงอินฟราเรดแผงวงจรโมดูลรับแสงอินฟราเรด

  45. แผงวงจรโมดูลรับแสงอินฟราเรดแผงวงจรโมดูลรับแสงอินฟราเรด

  46. แผงวงจรตรวจจับและวัดสนามแม่เหล็ก : Magnetic field • ใช้วัดความเข้มของสนามแม่เหล็ก • ถ้าทิศสนามแม่เหล็กพุ่งออก ให้ผลลัพธ์เป็นแรงดันบวก • ถ้าสนามแม่เหล็กพุ่งเข้า จะให้ผลลัพธ์เป็นแรงดันลบ • เมื่อไม่มีสนามแม่เหล็กจะได้ค่ากลาง 2.5V • ความไวในการวัดคือ 1.3 mV ต่อความเข้มสนามแม่เหล็ก 1 เกาส์ (Gauss) ค่าแรงดันที่ได้ = 2.5 + (0.0013 x ความเข้มสนามแม่เหล็กในหน่วยเกาส์ : Gauss)

  47. แผงวงจรตรวจจับและวัดสนามแม่เหล็ก : Magnetic field สำหรับแผงวงจรวัดสนามแม่เหล็กสามารถวัดความเข้มสนามแม่เหล็กอ่อนๆได้ในหน่วยเก๊าส์(G) โดยคำนวณได้จากสมการ โดยที่BGคือความเข้มสนามแม่เหล็กในหน่วยเก๊าส์(G) Ainit คือค่าอะนาลอกที่อ่านได้ในสภาวะปลอดสนามแม่เหล็ก Aout คือค่าอะนาลอกที่อ่านได้ในสภาวะใดๆจากแผงวงจรวัดสนามแม่เหล็ก

  48. การทดลองที่ 20อ่านค่าอะนาลอกจากแผงวงจรวัดสนามแม่เหล็ก 1. เชื่อมต่อแผงวงจรวัดสนามแม่เหล็กเข้ากับ PA2

  49. การทดลองที่ 20อ่านค่าอะนาลอกจากแผงวงจรวัดสนามแม่เหล็ก 2.เปิดโปรแกรม AVR Studio เขียนโปรแกรมตามตัวอย่างต่อไปนี้ 3. ดาวน์โหลดโปรแกรมไปยังไมโครคอนโทรลเลอร์ 4. สังเกตค่าอะนาลอกที่อ่านได้จากแผงวงจรวัดสนามแม่เหล็กในขณะปลอดสนามแม่เหล็กเก็บค่านี้เพื่อใช้ในการคำนวณหาความเข้มสนามแม่เล็กในหน่วยเกาส์(G) (หาค่า Ainit ) #include<ipst.h> void main() { unsigned int value; while(1) { lcd("Magnatic: %d ",analog(2)); sleep(100); } }

More Related