找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5805|回复: 13
打印 上一主题 下一主题
收起左侧

蓝牙控制舵机问题

  [复制链接]
回帖奖励 1 黑币 回复本帖可获得 1 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:200362 发表于 2017-5-18 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这程序我理想的是在蓝牙APk上按一下按键,转45度,但却是转的180度,无法控制。求帮忙

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit pwm=P3^7;
uchar count,flag1,flag2,tmp;          //0.5ms次数标识
uchar jd;                  //角度标识           1,2,3,4,5
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void init()
{
        TMOD= 0x21;
    TH1 = 0xfd;
    TL1 = 0xfd;
        TH0= 0xfe;         //0.5ms
        TL0=0x33;
        ET0=1;
        TR0=1;
    TR1= 1;      
    REN= 1;
    SM0= 0;
    SM1= 1;   
    ES= 1;         //串口中断允许位
    EA=1;
}
void dj_up()
{               
                delay(10);               
                        jd++;
                        count=0;
                        if(jd==6)
                                jd=5;
                                       
       
}
void dj_down()
{
                delay(10);               
                    jd--;
                        count=0;
                        if(jd==0)
                                jd=1;
                                       

}
void time0() interrupt 1
{
        TH0  = 0xfe;            
        TL0  = 0x33;
    if(count<jd)              //判断0.5ms次数是否小于角度标识
      pwm=1;                  //确实小于,PWM输出高电平
    else
      pwm=0;                  //大于则输出低电平
      count=(count+1);          //0.5ms次数加1
      count=count%40;     //次数始终保持为40 即保持周期为20ms
}

void main()
{
        jd=1;
        count=0;
        init();
        while(1)
        {
               
                switch(tmp)
                {
               
                        case 0x05:dj_up(); break;
                        case 0x08: dj_down(); break;
                }
        }
}
void Com_Int() interrupt 4
{
        RI=0;
        tmp=SBUF;
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:202600 发表于 2017-5-19 16:52 来自手机 | 只看该作者
同求。。。。。。
回复

使用道具 举报

板凳
ID:202609 发表于 2017-5-19 17:19 | 只看该作者
进入串口中断先执行完赋值程序再RI置零看看,也就是说相当于加个按键去抖动效果看看行不行
回复

使用道具 举报

地板
ID:200362 发表于 2017-5-19 19:53 | 只看该作者
lanhuo5431 发表于 2017-5-19 17:19
进入串口中断先执行完赋值程序再RI置零看看,也就是说相当于加个按键去抖动效果看看行不行

额,我先前也想到了去抖,但写出来没用。麻烦您能不能说详细点
回复

使用道具 举报

5#
ID:203209 发表于 2017-5-21 18:54 | 只看该作者
感觉应该是你这个程序在串口中断里面吧tmp赋值以后就没有在把它置零操作了,这样的话主程序就会一直执行旋转45度的函数了
回复

使用道具 举报

6#
ID:200362 发表于 2017-5-27 16:03 | 只看该作者
makkan 发表于 2017-5-21 18:54
感觉应该是你这个程序在串口中断里面吧tmp赋值以后就没有在把它置零操作了,这样的话主程序就会一直执行旋 ...

嗯,是这样的,已经解决。多谢
回复

使用道具 举报

7#
ID:205873 发表于 2017-5-29 16:25 | 只看该作者
控制的是数字舵机吗?
回复

使用道具 举报

8#
ID:62397 发表于 2017-5-29 16:51 | 只看该作者
蓝牙控制速度慢 建议用433模块
回复

使用道具 举报

9#
ID:200362 发表于 2017-6-1 16:37 | 只看该作者
y924 发表于 2017-5-29 16:25
控制的是数字舵机吗?

是模拟舵机。用来做机械臂,模拟舵机就行了
回复

使用道具 举报

10#
ID:200362 发表于 2017-6-1 16:38 | 只看该作者
china188 发表于 2017-5-29 16:51
蓝牙控制速度慢 建议用433模块

嗯,可以试下
回复

使用道具 举报

11#
ID:48413 发表于 2017-10-15 11:51 | 只看该作者
学习一下!!!!!!!!!!!
回复

使用道具 举报

12#
ID:250245 发表于 2017-11-18 20:20 | 只看该作者
求同!!!!!!!!!!!!!
回复

使用道具 举报

13#
ID:305881 发表于 2018-4-11 16:51 | 只看该作者
ereerr 发表于 2017-5-27 16:03
嗯,是这样的,已经解决。多谢

那应该怎么清零,我是初学者,不要笑
回复

使用道具 举报

14#
ID:514746 发表于 2019-4-17 17:09 | 只看该作者
需要先判断吧,我是这样觉得的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表