文号
t43150
阅读
8816
回复
20
收藏
17
尝试用游戏手柄和飞行摇杆控制舵机
2012/04/13
IP:四川
用VC写的上位机,读取游戏手柄和飞行摇杆的位移量,然后通过串口传输指令给单片机,由单片机控制舵机转动。


手柄很一般,不怎么精确。。

点击此处查看视频
+50
科创币
jrcsh
2012/04/13
不错会玩了,完成可以抛电脑~~~直接用MCu读出信号来控制
+50
科创币
猎鹰
2013/01/13
膜拜如此强大的控制
20
14年9个月前IP:未同步
386279
1楼
回复才看到视频...囧  不错   忽然觉得肢体遥控(模拟?)机器人有希望   完全可以像铁甲钢拳那样玩
引用
评论
14年9个月前IP:未同步
386315
2楼
能不能用摄像机镜头跟踪(红外的)
引用
评论
primula作者
14年9个月前IP:未同步
386330
3楼
回 2楼(hambg3qai) 的帖子
学过点opencv,一般摄像头的话能识别头像,彩色黑白都可以,控制舵机跟踪应该没问题,就是只要闭只眼睛啊,挡住点五官就没法识别了。。这个学得不好。
红外成像的话没试过,如果是那种热成像的,估计还得另想办法。。。
引用
评论
14年9个月前IP:未同步
386331
4楼
能用单片机完成就不要电脑~
引用
评论
primula作者
14年9个月前IP:未同步
386332
5楼
回 4楼(科学人) 的帖子
没研究过单片机怎么读USB的摇杆。。
打算资金充裕点了做做带视频的小车或者飞行控制,还是用电脑做地面站,,
引用
评论
14年8个月前IP:未同步
389150
6楼
有源码吗,可否开源?想学学
引用
评论
14年8个月前IP:未同步
394150
7楼
值得借鉴[s:274]
引用
评论
14年8个月前IP:未同步
394851
8楼
希望能提供一下源码
引用
评论
14年8个月前IP:未同步
394943
9楼
楼主贴出一些教程..看下
引用
评论
primula作者
14年8个月前IP:未同步
394951
10楼
本来因为急于求成,代码风格注释什么的都没在意,就没好意思把代码拿出来。。。

读取游戏摇杆需要用到DirectX ,一般玩游戏的电脑都有DirectX ,但开发需要SDK ,所以要下载DirectX SDK。

然后就是枚举设备,具体怎么读取可以参考一本叫《 Visual C++游戏编程基础》 的书,到处都有电子书下载,在有一章节讲了游戏摇杆怎么读取,但那个版本好像是DirectX7,有点老了,有的API名字已经变了,具体可以参照安装好了的DirectX SDK 目录下的示例程序,也可以参考我的读取程序。

读出来了摇杆数值以后就是用串口控制单片机,在单片机端就是通过串口然后对指令一个解析,我定义的指令是4个字节长,以@开头,以#结束,中间两个表示舵机A该转的角度,和舵机B该转的角度,单片机端接收指令主要代码在下面,我用的飞思卡尔。
void interrupt 20  SCI0_ISR(void)
{    
  unsigned char rdata;
  SCI0CR2_RIE=0;
  //此处为串口中断需要处理的事情
  rdata = Sci0Read();
  
  switch(rdata)
  {
    case '@':               //起始符号
        sci_count = 0;  
        sci_ready = 0;    
        break;
    case '#':                //终结符号
        sci_data[sci_count++] = 0;
        sci_ready = 1;
        break;
        
    default:
        sci_data[sci_count++] = rdata;        
  
  }
  SCI0CR2_RIE = 1;  
}
当主程序检测到sci_ready为1以后,就读取接收缓冲区,分别控制产生的PWM来控制舵机转过多少角度,具体舵机怎么控制可以百度。。。
上位机在枚举按键的时候就可以设定X轴和Y轴的上限和下限,在此处我设定的是下限0,上限180度,这样在摇杆静止居中的时候就是中间90度,舵机也转在中间位置,在后面付上的代码中,因为后来改来控制云台了,所以在串口发送部分发送的数据有变化,是发送的控制云台的指令。。。在代码中也有我自己写的串口类,只需要简单设置一下串口属性就行了,比如comm.OpenComm(L"com2",9600);打开串口2,波特率9600,    comm.SetLenght(0);设置接收到几个比特以后发送接收到消息,这里设置成0就是每收到一个字节都发送一次消息。具体怎么用在源代码里也有。。-_-
附上上位机代码,已经被我从控制舵机修改成控制监控球芯了,效果可以在论坛中另一篇帖子中找到  ^_^
另代码稍微有点乱,没什么注释,高手莫见笑[s:220]

attachment icon 上位机.rar 13.32KB RAR 40次下载
引用
评论
14年1个月前IP:未同步
470549
11楼
前辈啊 不知现在进行到什么程度了 还是放弃了?
引用
评论
14年1个月前IP:未同步
470949
12楼
回 楼主(primula) 的帖子
开发完成后做成套件蛮有市场的。。。玩FPV的就是在追求这种体验。。他们现在有视频眼睛。。头部活动控制舵机。。估计就差个摇杆就能完成完美的第一人称视角飞行体验了。
引用
评论
14年1个月前IP:未同步
472856
13楼
看不到视频啊
引用
评论
14年0个月前IP:未同步
483297
14楼
你好,请问一下,上位机是用vc6.0吗?还是vs2005?
引用
评论
14年0个月前IP:未同步
485103
15楼
这玩意不错,将手柄改成关节传感器,直接固定在手臂上,就可以完成远程机器人手臂1:1操作
引用
评论
13年8个月前IP:未同步
518711
16楼
本人正好研究火箭背包,可惜无法用飞行手柄控制,无奈只好翻老帖,无需担心pc问题,大不了带一台imac上天,楼主能否提供QQ号
引用
评论
13年8个月前IP:未同步
519754
17楼
求  楼主 qq交流
引用
评论
13年8个月前IP:未同步
520020
18楼
看楼主转摇杆玩得很销魂的样子
引用
评论
13年5个月前IP:未同步
557600
19楼
学习了,多想前辈学习。
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的