ผมทำโปรเจ็ค หุ่นยนต์ด้วย MCS-51 (ควบคุม มอเตอร์ 9 ตัว 20 สถานะ)
คือตอนนี้ได้แค่ คลิกปุ่ม แล้ว ส่งข้อมูลผ่านพอร์ตอนุกรม com2 (จำลอง) ติดต่อกับไมโครคอลโทรลเลอร์ ได้แล้ว แต่ค่าที่รับมาออกเท่ากันหมด เช่น คลิกปุ่มไหน บน โปรแกรมที่เขียนใน VB6 ผลลัพธ์คือ ติดเท่ากันหมด
อัพรูปไม่ได้เลยเอาแต่ลิ้งค์รูปภาพมาให้ดูครับ เข้าไปดูได้จากข้างล่างนะครับ
รูปนี้ แสดง interface
https://lh3.googleusercontent.com/-T0Wp64glVSE/VPHzkKl2iVI/AAAAAAAAAFI/ZSYBE28QNoY/w980-h551-no/1.png
รูปนี้ เป็น โค๊ด VB6
https://lh6.googleusercontent.com/-VPRKtkLtL3o/VPHzkEinO9I/AAAAAAAAAFA/B-NmKwtQ2G4/w980-h551-no/2.png
-------------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub MSComm1_OnComm()
MSComm1.CommPort = 2
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
MSComm1.DTREnable = False
MSComm1.RTSEnable = False
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
MSComm1.Output = "00000001B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command21_Click()
End
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command10_Click()
MSComm1.Output = "00000010B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command11_Click()
MSComm1.Output = "00000011B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command12_Click()
MSComm1.Output = "00000100B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command13_Click()
MSComm1.Output = "00000101B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command14_Click()
MSComm1.Output = "00000110B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command15_Click()
MSComm1.Output = "00000111B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command16_Click()
MSComm1.Output = "00001000B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command17_Click()
MSComm1.Output = "00001001B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command18_Click()
MSComm1.Output = "00001010B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command19_Click()
MSComm1.Output = "00001011B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command2_Click()
MSComm1.Output = "00001100B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command20_Click()
MSComm1.Output = "00001101B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command3_Click()
MSComm1.Output = "00010001B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command4_Click()
MSComm1.Output = "00010010B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command5_Click()
MSComm1.Output = "00010011B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command6_Click()
MSComm1.Output = "00010100B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command7_Click()
MSComm1.Output = "00010101B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command8_Click()
MSComm1.Output = "00010110B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command9_Click()
MSComm1.Output = "00010111B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Timer1_Timer()
Timer1.Enabled
End Sub
-------------------------------------------------------------------------------------------------------------
โค๊ดดาวน์โหลดVB6
http://www.mediafire.com/view/51i5jpfxz9s16t7/controlmotor.txt
เคยลองใช้ Hyperterminal ไม่สำเสร็จ เคยลองใช้ Keybord แทนปุ่มกด ก็ไม่สำเร็จ
การกำหนดค่าต่างๆของพอร์ตอนุกรม รวมถึง โค๊ด ดัดแปลงมาจาก
หนังสือ เริ่มต้นเขียนโปรแกรมติดต่อและควบคุมฮาร์แวร์ด้วยVisual basic
และหนังสือ เขียนโปรแกรม Hardware Interface ด้วย VB 6
สิ่งที่จะถามคือ
1.รูปแบบควรเป็นแบบนี้หรือไม่
2.จะต้องเขียน Code อย่างไรเพิ่มบ้างถ้าจะใช้ Joy usb แทนคลิกปุ่ม และส่งค่า อะไรไปให้ MCS-51 จากที่ทำลองเคยส่งแบบนี้
- MSComm1.Output = "00010111B"
- MSComm1.Output = "A"
- MSComm1.Output = "01H"
- MSComm1.Output = "119"
โดย mcs-51 กำหนดให้ออกที่ P1 ซึ่งต่อ LED 8 ดวงไว้เพื่อเช็คว่า สามารถกำหนด Output ได้หรือยัง
ผลลัพธ์คือ LED ติดเหมือนกันหมด
3.จะต้องทำอย่างไร จะใช้ Joy usb ได้ แบบกดjoy usb ค้าง ก็ส่งข้อมูลต่อเนื่อง ไปให้ ไมโครคอลโทรลเลอร์ ซึ่ง ถ้ารู้ค่าที่ส่งไปให้mcs-51 ผมจะได้เขียนให้ mcs-51 เทียบค่าตามนั้น
4.มีคำแนะนำอย่างไรบ้าง ผู้ตั้งกระทู้ไม่มีความรู้เรื่อง VB เลย จึงอยากจะขอคำแนะนำด้วยเรื่องการเขียนVB6ด้วยครับ
เขียน code VB6 ติดต่อกับ Joy usb ยังไง ใครพอทราบบ้าง
คือตอนนี้ได้แค่ คลิกปุ่ม แล้ว ส่งข้อมูลผ่านพอร์ตอนุกรม com2 (จำลอง) ติดต่อกับไมโครคอลโทรลเลอร์ ได้แล้ว แต่ค่าที่รับมาออกเท่ากันหมด เช่น คลิกปุ่มไหน บน โปรแกรมที่เขียนใน VB6 ผลลัพธ์คือ ติดเท่ากันหมด
อัพรูปไม่ได้เลยเอาแต่ลิ้งค์รูปภาพมาให้ดูครับ เข้าไปดูได้จากข้างล่างนะครับ
รูปนี้ แสดง interface https://lh3.googleusercontent.com/-T0Wp64glVSE/VPHzkKl2iVI/AAAAAAAAAFI/ZSYBE28QNoY/w980-h551-no/1.png
รูปนี้ เป็น โค๊ด VB6 https://lh6.googleusercontent.com/-VPRKtkLtL3o/VPHzkEinO9I/AAAAAAAAAFA/B-NmKwtQ2G4/w980-h551-no/2.png
-------------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub MSComm1_OnComm()
MSComm1.CommPort = 2
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
MSComm1.DTREnable = False
MSComm1.RTSEnable = False
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
MSComm1.Output = "00000001B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command21_Click()
End
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command10_Click()
MSComm1.Output = "00000010B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command11_Click()
MSComm1.Output = "00000011B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command12_Click()
MSComm1.Output = "00000100B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command13_Click()
MSComm1.Output = "00000101B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command14_Click()
MSComm1.Output = "00000110B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command15_Click()
MSComm1.Output = "00000111B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command16_Click()
MSComm1.Output = "00001000B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command17_Click()
MSComm1.Output = "00001001B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command18_Click()
MSComm1.Output = "00001010B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command19_Click()
MSComm1.Output = "00001011B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command2_Click()
MSComm1.Output = "00001100B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command20_Click()
MSComm1.Output = "00001101B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command3_Click()
MSComm1.Output = "00010001B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command4_Click()
MSComm1.Output = "00010010B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command5_Click()
MSComm1.Output = "00010011B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command6_Click()
MSComm1.Output = "00010100B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command7_Click()
MSComm1.Output = "00010101B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command8_Click()
MSComm1.Output = "00010110B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Command9_Click()
MSComm1.Output = "00010111B"
End Sub
-------------------------------------------------------------------------------------------------------------
Private Sub Timer1_Timer()
Timer1.Enabled
End Sub
-------------------------------------------------------------------------------------------------------------
โค๊ดดาวน์โหลดVB6http://www.mediafire.com/view/51i5jpfxz9s16t7/controlmotor.txt
เคยลองใช้ Hyperterminal ไม่สำเสร็จ เคยลองใช้ Keybord แทนปุ่มกด ก็ไม่สำเร็จ
การกำหนดค่าต่างๆของพอร์ตอนุกรม รวมถึง โค๊ด ดัดแปลงมาจาก
หนังสือ เริ่มต้นเขียนโปรแกรมติดต่อและควบคุมฮาร์แวร์ด้วยVisual basic
และหนังสือ เขียนโปรแกรม Hardware Interface ด้วย VB 6
สิ่งที่จะถามคือ
1.รูปแบบควรเป็นแบบนี้หรือไม่
2.จะต้องเขียน Code อย่างไรเพิ่มบ้างถ้าจะใช้ Joy usb แทนคลิกปุ่ม และส่งค่า อะไรไปให้ MCS-51 จากที่ทำลองเคยส่งแบบนี้
- MSComm1.Output = "00010111B"
- MSComm1.Output = "A"
- MSComm1.Output = "01H"
- MSComm1.Output = "119"
โดย mcs-51 กำหนดให้ออกที่ P1 ซึ่งต่อ LED 8 ดวงไว้เพื่อเช็คว่า สามารถกำหนด Output ได้หรือยัง
ผลลัพธ์คือ LED ติดเหมือนกันหมด
3.จะต้องทำอย่างไร จะใช้ Joy usb ได้ แบบกดjoy usb ค้าง ก็ส่งข้อมูลต่อเนื่อง ไปให้ ไมโครคอลโทรลเลอร์ ซึ่ง ถ้ารู้ค่าที่ส่งไปให้mcs-51 ผมจะได้เขียนให้ mcs-51 เทียบค่าตามนั้น
4.มีคำแนะนำอย่างไรบ้าง ผู้ตั้งกระทู้ไม่มีความรู้เรื่อง VB เลย จึงอยากจะขอคำแนะนำด้วยเรื่องการเขียนVB6ด้วยครับ