[ บทความ : ทดลองใช้ LTC1298 บนบอร์ด ET-V6 ] |
จากบทความ ทดลองสร้าง sensor แสงด้วย LDR อ่านบทความ .. เราจะได้บอร์ด sensor ที่มีหน้าตาดังนี้ครับ
ให้เรานำบอร์ดเสียบเข้ากับพอร์ตของ LTC1298 ดังรูปต่อไปนี้
เรามาลองใช้โปรแกรมตัวอย่างที่มากับบอร์ดกันเลยครับ ... เริ่มต้นกดปุ่ม FUNC แล้วที่ 7-Segment จะแสดงดังนี้
ตอนนี้ให้เรากดแป้น 2 เพื่อเลือกใช้โปรแกรมตัวอย่าง หลังจากนั้นที่ 7-Segment ก็จะเปลี่ยนการแสดงผลออกมาเป็นดังนี้
หลังจากนั้นก็กดแป้น 0 ตามดัวย E
ขั้นตอนสุดท้ายให้เรากดแป้น Inc เพื่อเริ่มต้นทำงาน หลังจากนั้น 7-Segment ก็จะแสดงออกมาดังนี้
เอาล่ะเรามี Sensor กับบอร์ดควบคุมที่พร้อมจะทำงานแล้ว ... มาดูสนามทดสอบกัน (...จริงแล้วก็คือ กระดาษ A4 ที่แปะเทป กาวสีดำเท่านั้นแหละครับ) ... เป็นดังรูปต่อไปนี้ครับ
ว่าแล้ว เราก็เอา sensor ไปตรวจจับเส้นสีดำดูสักหน่อย ... อ้อ ... ผลลัพธ์ออกมาเป็นดังนี้เลย (ค่าที่ได้นี่จะเปลี่ยนแปลงตาม VR ที่เราปรับด้วยนะครับ)
,
คราวนี้มาดูพื้นที่ที่เป็นสีขาวดูบ้าง
,
มาดู source code ของตัวอย่างที่ 15 ของบอร์ด Et-V6 กันดีกว่าครับ
; ;*********************** ; EXAMPLE #15 * ; ATOD LTC1298 * ;*********************** ; CPU "Z80.TBL" HOF "INT8" SCAND EQU 0104H UNPK EQU 0107H SORT EQU 0115H RD_AD12 EQU 0153H ; DISPY EQU 0BFE7H BUF EQU 0BFEFH ; CLE16 EQU 0132H CLX32 EQU 0137H CLMP EQU 0138H CLHD EQU 013CH ; ORG 8000H START: CALL READ_AD CALL CLE16 ;PUSH A/D VALUE TO CLSTK LD HL,122 ;1.22 mv * 100 CALL CLE16 ;PUSH 122 TO CLSTK CALL CLMP ;A/D VALUE * 122 CALL CLHD ;RESULT CONVERT TO DECIMAL LD IX,B_DATA ;ADDRESS OF DATA BUFFER CALL CLX32 ;POP RESULT TO B_DATA ; LD A,(IX+1) ;SKIP (IX+3) = RESULT / 100 LD (BUF),A LD A,(IX+2) LD (BUF+2),A CALL UNPK LD IX,DISPY LD (IX+0),0 LD (IX+1),0 SET 7,(IX+2) JR START ; ;*********************** ; READ A/D * ;*********************** ; READ_AD: LD C,9 ;9 BUFFER LD IX,BUF_AD ;ADDRESS OF A/D DATA ; READ_AD1: LD B,5 CALL SCAND LD A,0 ;CHANNELL 0 CALL RD_AD12 LD (IX+0),E ;SAVE DATA INC IX LD (IX+0),D INC IX ;NEXT BUFFER DEC C JR NZ,READ_AD1 ; LD IY,BUF_AD LD C,9 CALL SORT LD IY,BUF_AD+4*2 ;A/D DATA AT BUFFER 5 LD L,(IY+0) LD H,(IY+1) RET ORG 9000H BUF_AD DFS 2*9 B_DATA DFS 4 ENDความแตกต่างระหว่าง การใช้ Z80 กับ MCS-51 เท่าที่ผมสังเกตพบก็คือว่า Z80 นั้นทำงานช้ากว่า MCS-51 แต่เวลาที่เราทำหุ่นยนต์นั้น ... เรายังมีขีดจำกัดอีกหลายอย่าง ไม่ว่าจะเป็นเรื่องของความเร็วสูงสุดที่จะเป็นไปได้ (ถ้าเราสั่ง ให้วิ่งเร็วเกินไป นอกจาก motor ทำงานไม่ทันแล้ว ... บางที sensor อาจจะอ่านค่าผิดพลาดอีกด้วย) ... ดังนั้น เลือก ระบบที่เราถนัดนั่นเป็นทางเลือกที่ดีที่สุดครับ ....