久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3052|回復: 4
打印 上一主題 下一主題
收起左側

單片機控制SG90舵機 如何精準一些?

[復制鏈接]
跳轉到指定樓層
樓主
ID:370407 發表于 2020-3-4 12:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 363249 于 2020-3-4 15:09 編輯

怎么把 n 的值變成填入 2500  ?

這樣就不局限于 5-20 個位置了?    即使有誤差也可以接受 或者做到每一度一個控制角度

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit pwm=P1^0;      //信號輸出
sbit k1=P3^1;        //按鍵k1接P3^5,控制順時針旋轉
sbit k2=P3^2;        //按鍵k2接P3^4,控制逆時針旋轉
sbit k3=P3^3;
uchar count=0;

uchar n=5;       //初始位置-在0°附近  改變n值可以改變舵機的初始位置

//這個n值在不同的舵機可能存在一點誤差,可以改變他的值來試試具體位置
void delay5ms()
{
    unsigned char a,b;
    for(b=19;b>0;b--)
        for(a=130;a>0;a--);
}
void key()
{
  if(k1==0)
  {
            delay5ms();
          n=5;               //  0度

  }
    if(k2==0)
  {
            delay5ms();
         n=15;               //  90度

  }                        
   if(k3==0)
  {
            delay5ms();
         n=25;                // 180度

  }
}

void InitTimer()        //  0.1ms   11.0592Mhz
{
    TMOD = 0x01;
    TH0 = 0xFF;
    TL0 = 0XA4;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}

void main()
{
    InitTimer();
        while(1)
        {
          key();
        }
}

void Timer() interrupt 1      //特別注意此處,0--外部中斷0,1--定時器中斷0,2--外部中斷1,3--定時器中斷1,4--串行口中斷1
{
    TH0 = 0xFF;
    TL0 = 0xA4;
        count++;
        if(count<=200)
        {
           if(count<=n)
           {
                      pwm=1;
           }
           else
           {
                      pwm=0;
           }
        }
        else
        {
           count=0;
           pwm=0;
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:648281 發表于 2020-3-4 14:29 | 只看該作者
你好!
這個應該可以做到每一度一個控制角度;
再精確估計是不行了,沒有進一步試過。
回復

使用道具 舉報

板凳
ID:687694 發表于 2020-3-4 17:41 | 只看該作者
受限于舵機精度,單片機驅動可以做到十分之一度。甚至更高
回復

使用道具 舉報

地板
ID:526831 發表于 2020-4-26 14:34 | 只看該作者
樓主  根據你的程序修改的   如有問題還請見諒  
不能達到你所說的一度一度的   但是還是可以達到你所寫的那三個固定值以外的角度

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit pwm=P1^0;      //信號輸出
sbit k1=P3^1;        //按鍵k1接P3^5,控制順時針旋轉
sbit k2=P3^2;        //按鍵k2接P3^4,控制逆時針旋轉
sbit k3=P3^3;
uchar count=0;

uchar n=5;       //初始位置-在0°附近  改變n值可以改變舵機的初始位置

//這個n值在不同的舵機可能存在一點誤差,可以改變他的值來試試具體位置
void delay5ms()
{
    unsigned char a,b;
    for(b=110;b>0;b--)
        for(a=130;a>0;a--);
}
void delay1ms()
{
    unsigned char a;
    for(a=130;a>0;a--);
}
void key()
{
  if(k1==0)
  {
                delay5ms();
                if(k1==0)
                {
                         delay5ms();
          n++;               //  0度
                if(n >= 25)
                        n = 25;
                }
  }
    if(k2==0)
  {
                delay5ms();
                if(k2==0)
                {
            delay5ms();
         n--;               //  90度
                if(n <= 5)
                        n = 5;
          }
  }                        
}

void InitTimer()        //  0.1ms   11.0592Mhz
{
    TMOD = 0x01;
    TH0 = 0xFF;
    TL0 = 0XA4;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}

void main()
{
    InitTimer();
        while(1)
        {
          key();
        }
}

void Timer() interrupt 1      //特別注意此處,0--外部中斷0,1--定時器中斷0,2--外部中斷1,3--定時器中斷1,4--串行口中斷1
{
    TH0 = 0xFF;
    TL0 = 0xA4;
        count++;
        if(count<=200)
        {
           if(count<=n)
           {
                      pwm=1;
           }
           else
           {
                      pwm=0;
           }
        }
        else
        {
           count=0;
           pwm=0;
        }
}
回復

使用道具 舉報

5#
ID:861088 發表于 2020-12-16 08:49 | 只看該作者
zheng0401 發表于 2020-4-26 14:34
樓主  根據你的程序修改的   如有問題還請見諒  
不能達到你所說的一度一度的   但是還是可以達到你所寫的 ...

你好,從if(count<=200)以后是什么意思呀?能解釋一下嗎?不理解。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲毛片在线 | 国产中文字幕在线观看 | 日韩一区二区在线视频 | 欧美9999 | 欧美日韩在线一区 | 男女羞羞视频免费看 | 日韩高清不卡 | 免费观看a级毛片在线播放 黄网站免费入口 | 热久久性 | 国产在线高清 | 亚洲成人一二三 | 午夜极品| 精品粉嫩aⅴ一区二区三区四区 | 91成人 | 久久九九网站 | 欧美a在线看 | 免费毛片网 | 中文精品视频 | 色婷婷精品国产一区二区三区 | 久久久久91 | 日韩一级欧美一级 | 91精品久久久久久久久 | 欧美视频在线看 | 97国产精品 | 亚洲一区二区在线播放 | 日韩不卡在线观看 | 自拍视频网站 | 国产日产久久高清欧美一区 | 狠狠色网| 欧美一级免费观看 | 在线免费亚洲视频 | 国产小视频在线观看 | 一区二区三区日韩精品 | 中文字幕欧美一区二区 | 色综合一区 | 午夜视频一区二区 | 精品久草 | 精品乱子伦一区二区三区 | 日本在线视频不卡 | 国产传媒毛片精品视频第一次 | 91中文|