控制机械臂

问题描述 投票:0回答:2

我有一个 Cyber Robot CYBER 310 和一个 Sciento CS-113 机械臂,但没有任何文档。两者都使用并行端口。

我该如何编程?

对于网络版,我发现了这一点:

enter image description here

Sciento 上什么都没有。

Python/Java/C/任何值得赞赏的指针或示例。

[更新]此页面包含一些信息,但我仍然迷失:http://www.anf.nildram.co.uk/beebcontrol/arms/cyber/software.html

robotics parallel-port lpt
2个回答
0
投票

我不完全确定我理解问题是什么。

您不熟悉并行端口编程吗?

我的记忆很模糊,但其实很简单。这是一个“哑”接口,因此您只需编写即可。

如果您在 Linux 下运行,那么上面有一些很棒的资源:

Linux 设备驱动程序:第 9 章:并行端口概述 - 谈论一些有关并行端口编程的内容,并继续讨论为其编写设备驱动程序。我认为对于你的应用来说有点矫枉过正,但整本书都很有趣,而且很有启发性。

Linux I/O 端口编程 - 本质上你可以写入 /dev/port,或者包含 asm/io.h 并使用 inb() 和 outb() (我已经有一段时间没有这样做了,但我确定如果你遇到一个特定的问题,一旦你把问题缩小到特定的范围,就会有很多答案)

如果您使用的是 Windows 或 Mac,那么我仍然建议阅读上面的内容,以便您知道自己要做什么,在我看来它们很简单,然后搜索 Windows/Mac 等效项。

现在我认为问题的关键是,你要向端口写入什么?

对于 Cyber 310,您有引脚布局,尽管如果您浏览列出的站点,似乎有多种不同的引脚布局,并且如果我们关注 anf.nildram.co.uk here,我们可以找到一些 PIC 组件将向我们展示如何旋转底座。

今天之前我从未接触过 PIC 汇编,但是在 internet 和评论的帮助下,我认为我们可以翻译它想要做什么(剪掉相关部分,因为大部分是计时和循环)

; 6: Symbol prf = PORTA.0
;       The address of 'prf' is 0x5,0
; 7: Symbol strobe = PORTA.1
;       The address of 'strobe' is 0x5,1
; 8: Symbol base = PORTB.0
;       The address of 'base' is 0x6,0
; 9: Symbol shoulder = PORTB.1
;       The address of 'shoulder' is 0x6,1
...
; 16: main: 
L0001:
; 17: base = 1
BSF 0x06,0          // set bit 0 at 0x06 to 1 essentially set base bit to 1
; 18: strobe = 1
BSF 0x05,1          // set strobe bit to 1
; 19: strobe = 0
BCF 0x05,1          // set strobe bit to 0
; 20: While a <> 730 // now we loop 729 more times

因此,从我天真的角度来看,要旋转手臂,您需要设置电机位(从引脚分配中获取),然后设置并清除频闪。

如果我完全错了,请告诉我,这是一个令人着迷的项目。


0
投票

克里斯关于并行端口是一个哑接口的说法是正确的。并行端口有一个地址,您可以输出一个 8 位二进制数来匹配数字输出的位置。

我发现这是使用 C# 进行并行端口编程的一个非常好的示例。 http://www.codeproject.com/Articles/4981/I-O-Ports-Uncensored-1-Controlling-LEDs-Light-Emit

将您的项目与他的示例相匹配。 C0 是频闪。然后你的数字输出从左到右匹配他的D0-D6。

看起来是一个非常有趣的项目。玩得开心。

© www.soinside.com 2019 - 2024. All rights reserved.