找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10991|回復(fù): 20
收起左側(cè)

基于stm32f0103c8t6 6自由度機(jī)械手臂源程序

  [復(fù)制鏈接]
ID:144730 發(fā)表于 2019-5-18 15:42 | 顯示全部樓層 |閱讀模式
//主程序源碼:代碼變異絕無錯(cuò)誤,硬件測試過了,由于舵機(jī)數(shù)量角度簡易使用5v 2A電源供電
/************************************************************************
                 6自由度機(jī)械臂引腳說明:
PB4->1號舵機(jī)(左右轉(zhuǎn)向), PB5->2號舵機(jī)(上下轉(zhuǎn)向),    PB0->3號舵機(jī)(上下轉(zhuǎn)向),
PB1->4號舵機(jī)(上下轉(zhuǎn)向), PB6->5號舵機(jī)(機(jī)械爪轉(zhuǎn)向),  PB7->6號舵機(jī)(機(jī)械爪),
PC13->數(shù)字傳感器輸入端               
PA0->按鍵1(舵機(jī)角度+),PA1->按鍵2(舵機(jī)角度-),
PA2->按鍵3(舵機(jī)選擇+),PA3->按鍵4(舵機(jī)選擇-),
PA4->按鍵5(機(jī)械爪閉), PA5->按鍵6(機(jī)械爪開),

串口1引腳說明:
PA9->TXD(發(fā)送), PA10-> RXD(接收)

************************************************************************/
#include "stm32f10x.h"
#include "smartcar.h"
#include "usart.h"
#include "pwm.h"
#include "delay.h"
#include "KEY.h"
#include "digitalvalue.h"

extern u8 Res;//全局變量

int main(void)
{        
vu8 numval31=150;u16 numval32=200;u16 numval33=200;u16 numval34=200;
u16 numval41=150;//u16 numval42=150;u16 numval43=150;u16 numval44=150;
vu8 pwmval31=150;u16 pwmval32=200;u16 pwmval33=200;u16 pwmval34=200;         
u16 pwmval41=150;u16 pwmval42=60;u16 pwmval43=150;u16 pwmval44=150;
vu8 key=0;        
vu8 num=1 ;         
vu8 dig=0;                 
smartcar_Init();//智能小車GPIO初始化
delay_init();//延時(shí)函數(shù)初始化         
KEY_Init(); //初始化與按鍵連接的硬件接口
digival_value_Init();        //數(shù)字開關(guān)輸入初始化
uart_init(9600);
         
         
TIM3_OC1_PWM_Init(1999,719);         //720分頻。PWM頻率=72000000/2000*720=50hz,定時(shí)器3的1通道初始化
TIM3_OC2_PWM_Init(1999,719);         //720分頻。PWM頻率=72000000/2000*720=50hz         
TIM3_OC3_PWM_Init(1999,719);         //720分頻。PWM頻率=72000000/2000*720=50hz         
TIM3_OC4_PWM_Init(1999,719);         //720分頻。PWM頻率=72000000/2000*720=50hz                  
TIM4_OC1_PWM_Init(1999,719);         //720分頻。PWM頻率=72000000/2000*720=50hz
TIM4_OC2_PWM_Init(1999,719);         //720分頻。PWM頻率=72000000/2000*720=50hz         
TIM4_OC3_PWM_Init(1999,719);         //720分頻。PWM頻率=72000000/2000*720=50hz         
TIM4_OC4_PWM_Init(1999,719);         //720分頻。PWM頻率=72000000/2000*720=50hz        
         
TIM_SetCompare1(TIM3,pwmval31);        //pwm輸出函數(shù)        
TIM_SetCompare2(TIM3,pwmval32);        //pwm輸出函數(shù)                 
TIM_SetCompare3(TIM3,pwmval33);        //pwm輸出函數(shù)                 
TIM_SetCompare4(TIM3,pwmval34);        //pwm輸出函數(shù)                 
TIM_SetCompare1(TIM4,pwmval41);        //pwm輸出函數(shù)                 
TIM_SetCompare2(TIM4,pwmval42);        //pwm輸出函數(shù)                 
TIM_SetCompare3(TIM4,pwmval43);        //pwm輸出函數(shù)        
TIM_SetCompare4(TIM4,pwmval44);        //pwm輸出函數(shù)        

   while(1)
        {

                key=KEY_Scan(0);        //得到鍵值,0:不支持連續(xù)按,1:支持連續(xù)按.
                dig=digival_value_Scan();
                   if(key)
                {                                                   
                        switch(key)
                        {        
      case KEYA_PRES://舵機(jī)按鈕,左轉(zhuǎn)
        
                                        switch(num)        
                                        {        
                                        case 1:numval31++; pwmval31=(numval31*1); if(numval31>250) numval31=250;TIM_SetCompare1(TIM3,pwmval31);  break;//numval用于舵機(jī)手動(dòng)運(yùn)行時(shí)速度調(diào)節(jié)
                                        case 2:numval32++; pwmval32=(numval32*1); if(numval32>250) numval32=250;TIM_SetCompare2(TIM3,pwmval32);  break;//
                                        case 3:numval33++; pwmval33=(numval33*1); if(numval33>250) numval33=250;TIM_SetCompare3(TIM3,pwmval33);  break;//
                                        case 4:numval34++; pwmval34=(numval34*1); if(numval34>250) numval34=250;TIM_SetCompare4(TIM3,pwmval34);  break;//
                                        case 5:numval41++; pwmval41=(numval41*1); if(numval41>250) numval41=250;TIM_SetCompare1(TIM4,pwmval41);  break;//
                                                
                                        }                 
                                       
                                        break;
                                       
                        case KEYB_PRES://舵機(jī)按鈕        ,右轉(zhuǎn)        
                                
                            switch(num)        
                                        {        
                                        case 1:numval31--; pwmval31=(numval31*1); if(numval31<40) numval31=50; TIM_SetCompare1(TIM3,pwmval31);  break;//
                                        case 2:numval32--; pwmval32=(numval32*1); if(numval32<55) numval32=55; TIM_SetCompare2(TIM3,pwmval32);  break;//
                                        case 3:numval33--; pwmval33=(numval33*1); if(numval33<55) numval33=55; TIM_SetCompare3(TIM3,pwmval33);  break;//
                                        case 4:numval34--; pwmval34=(numval34*1); if(numval34<55) numval34=55; TIM_SetCompare4(TIM3,pwmval34);  break;//
                                        case 5:numval41--; pwmval41=(numval41*1); if(numval41<55) numval41=55; TIM_SetCompare1(TIM4,pwmval41);  break;//               
                                        }                                 
                           
                       break;
                        
                        case KEYC_PRES://選擇哪個(gè)舵機(jī)運(yùn)行+1
                                   num++;
                        if(num>5) num=5;
                        break;
                        
                        case KEYD_PRES://選擇哪個(gè)舵機(jī)運(yùn)行-1
                                   num--;
                        if(num<1) num=1;            
                        break;
                        
                        case KEYE_PRES://機(jī)械手閉
                                        pwmval42++;
                        if(pwmval42>145) pwmval42=145;
                        TIM_SetCompare2(TIM4,pwmval42);
                        break;
                        
                        case KEYF_PRES://機(jī)械手開
                        pwmval42--;
                        if(pwmval42<60)  pwmval42=60;  
                        TIM_SetCompare2(TIM4,pwmval42);                 
                        break;        
                        }
         }        
     /* *********** 藍(lán)牙遙控模式****************************/
     if(Res=='1') {pwmval31++; if(pwmval31>250)  pwmval31=250; TIM_SetCompare1(TIM3,pwmval31);delay_ms(10);}
           if(Res=='2') {pwmval31--; if(pwmval31<60 )  pwmval31=60;  TIM_SetCompare1(TIM3,pwmval31);delay_ms(10);}
     if(Res=='3') {pwmval32++; if(pwmval32>250)  pwmval32=250; TIM_SetCompare2(TIM3,pwmval32);delay_ms(10);}
           if(Res=='4') {pwmval32--; if(pwmval32<60 )  pwmval32=60;  TIM_SetCompare2(TIM3,pwmval32);delay_ms(10);}
           if(Res=='5') {pwmval33++; if(pwmval33>250)  pwmval33=250; TIM_SetCompare3(TIM3,pwmval33);delay_ms(10);}
           if(Res=='6') {pwmval33--; if(pwmval33<60 )  pwmval33=60;  TIM_SetCompare3(TIM3,pwmval33);delay_ms(10);}
           if(Res=='7') {pwmval34++; if(pwmval34>250)  pwmval34=250; TIM_SetCompare4(TIM3,pwmval34);delay_ms(10);}
           if(Res=='8') {pwmval34--; if(pwmval34<60 )  pwmval34=60;  TIM_SetCompare4(TIM3,pwmval34);delay_ms(10);}
                 if(Res=='9') {pwmval41++; if(pwmval41>250)  pwmval41=250; TIM_SetCompare1(TIM4,pwmval41);delay_ms(10);}
           if(Res=='a') {pwmval41--; if(pwmval41<60 )  pwmval41=60;  TIM_SetCompare1(TIM4,pwmval41);delay_ms(10);}
                 if(Res=='b') {pwmval42++; if(pwmval42>145)  pwmval42=145; TIM_SetCompare2(TIM4,pwmval42);delay_ms(10);}
           if(Res=='c') {pwmval42--; if(pwmval42<60 )  pwmval42=60;  TIM_SetCompare2(TIM4,pwmval42);delay_ms(10);}
                 
/********************自動(dòng)控制模式*******************/
                if(dig==1)

                {        
                        vu8 a=1;//動(dòng)作完成標(biāo)志位
                        u16 ms=500;
               
                if(a==1 ){ pwmval31=150; TIM_SetCompare1(TIM3,pwmval31); a=2 ;delay_ms(ms);}                 
                        
          if(a==2) { pwmval32=150; TIM_SetCompare2(TIM3,pwmval32); a=3; delay_ms(ms);}
                        
                if(a==3) { pwmval33=200; TIM_SetCompare3(TIM3,pwmval33 );a=4; delay_ms(ms);}
               
                if(a==4) { pwmval34=250; TIM_SetCompare4(TIM3,pwmval34); a=5; delay_ms(ms);}
               
                if(a==5) { pwmval42=145; TIM_SetCompare2(TIM4,pwmval42); a=6; delay_ms(ms);}
                 
                if(a==6) { pwmval34=150; TIM_SetCompare4(TIM3,pwmval34); a=7; delay_ms(ms);}
               
                if(a==7) { pwmval31=55;  TIM_SetCompare1(TIM3,pwmval31); a=8; delay_ms(ms);}
               
                if(a==8) { pwmval34=250; TIM_SetCompare4(TIM3,pwmval34); a=9; delay_ms(ms);}
               
                if(a==9) { pwmval42=60;  TIM_SetCompare2(TIM4,pwmval42); a=10;delay_ms(ms);}
                                
                if(a==10){ pwmval32=200; TIM_SetCompare2(TIM3,pwmval32); a=11;delay_ms(ms);}
               
                if(a==11){ pwmval31=150; TIM_SetCompare1(TIM3,pwmval31); a=1 ;delay_ms(ms);}
                }                  
}
        
}  


全部資料51hei下載地址:
6自由度機(jī)械臂 手動(dòng)按鍵控制.7z (184.62 KB, 下載次數(shù): 312)
QQ截圖20190518153119.png
回復(fù)

使用道具 舉報(bào)

ID:144730 發(fā)表于 2019-5-20 08:32 | 顯示全部樓層

RE: 基于stm32f0103c8t6 6自由度機(jī)械手臂源程序

RE: 基于stm32f0103c8t6 6自由度機(jī)械手臂源程序補(bǔ)充說明

藍(lán)牙發(fā)送格式

藍(lán)牙發(fā)送格式

實(shí)物圖

實(shí)物圖
回復(fù)

使用道具 舉報(bào)

ID:479765 發(fā)表于 2019-8-23 12:41 | 顯示全部樓層
樓主 有材料清單嗎 我想學(xué)習(xí)一下 謝謝
回復(fù)

使用道具 舉報(bào)

ID:723527 發(fā)表于 2020-4-6 17:43 | 顯示全部樓層
huhouhezai 發(fā)表于 2019-8-23 12:41
樓主 有材料清單嗎 我想學(xué)習(xí)一下 謝謝

樓主,我也像學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:116773 發(fā)表于 2020-4-6 20:00 | 顯示全部樓層
機(jī)械部分有圖紙嗎?自己能做么?
回復(fù)

使用道具 舉報(bào)

ID:366024 發(fā)表于 2020-4-11 15:59 | 顯示全部樓層
樓主,這個(gè)有仿真嗎?電路圖之類的
回復(fù)

使用道具 舉報(bào)

ID:760164 發(fā)表于 2020-5-24 21:36 | 顯示全部樓層
有沒有電路圖和報(bào)告說明書?
回復(fù)

使用道具 舉報(bào)

ID:610719 發(fā)表于 2020-5-28 08:32 | 顯示全部樓層
樓主,電源是怎么解決的,求助!
回復(fù)

使用道具 舉報(bào)

ID:144730 發(fā)表于 2020-6-4 11:47 | 顯示全部樓層
1206246381 發(fā)表于 2020-5-28 08:32
樓主,電源是怎么解決的,求助!

手機(jī)充電器,5v2A的就可以
回復(fù)

使用道具 舉報(bào)

ID:144730 發(fā)表于 2020-6-4 11:50 | 顯示全部樓層
hujj 發(fā)表于 2020-4-6 20:00
機(jī)械部分有圖紙嗎?自己能做么?

機(jī)械部分是標(biāo)準(zhǔn)件,那個(gè)寶有賣的,底座部分是用有機(jī)玻璃和M3銅柱制作
回復(fù)

使用道具 舉報(bào)

ID:144730 發(fā)表于 2020-6-4 11:54 | 顯示全部樓層
huhouhezai 發(fā)表于 2019-8-23 12:41
樓主 有材料清單嗎 我想學(xué)習(xí)一下 謝謝

藍(lán)牙模塊,舵機(jī),舵機(jī)支架,stm32f103最小系統(tǒng)板,紅外模塊,按鍵模塊,那個(gè)寶都有賣
回復(fù)

使用道具 舉報(bào)

ID:806609 發(fā)表于 2020-7-25 08:52 | 顯示全部樓層
2479408246 發(fā)表于 2019-5-20 08:32
RE: 基于stm32f0103c8t6 6自由度機(jī)械手臂源程序補(bǔ)充說明

樓主,有上位機(jī)程序嗎?就是操作界面

回復(fù)

使用道具 舉報(bào)

ID:884211 發(fā)表于 2021-2-14 18:39 | 顯示全部樓層
樓主,請問你這個(gè)能實(shí)現(xiàn)人機(jī)互動(dòng)嗎?就是人怎么動(dòng),這個(gè)機(jī)械臂就怎么動(dòng)
回復(fù)

使用道具 舉報(bào)

ID:884211 發(fā)表于 2021-2-14 18:50 | 顯示全部樓層
樓主,請問能否實(shí)現(xiàn)人機(jī)交互?就是人怎么動(dòng),機(jī)械臂就怎么動(dòng)
回復(fù)

使用道具 舉報(bào)

ID:884211 發(fā)表于 2021-2-14 18:56 | 顯示全部樓層
請問樓主,那個(gè)用手機(jī)控制機(jī)械臂的是手機(jī)app還是什么小程序,具體是什么app和小程序
回復(fù)

使用道具 舉報(bào)

ID:855071 發(fā)表于 2021-6-19 08:46 | 顯示全部樓層
謝謝樓主,希望學(xué)習(xí)一下,有沒有電路圖之類的?
回復(fù)

使用道具 舉報(bào)

ID:906792 發(fā)表于 2021-6-30 14:12 來自觸屏版 | 顯示全部樓層
安排的明明白白的膜拜
回復(fù)

使用道具 舉報(bào)

ID:270740 發(fā)表于 2021-7-5 10:57 | 顯示全部樓層
樓主,寫程序要分塊,把每個(gè)功能細(xì)分成模塊,然后在Main中調(diào)用,養(yǎng)成好的習(xí)慣
回復(fù)

使用道具 舉報(bào)

ID:922391 發(fā)表于 2021-7-16 21:41 | 顯示全部樓層
手機(jī)藍(lán)牙怎么連,具體數(shù)字可以告知一下嗎?
回復(fù)

使用道具 舉報(bào)

ID:954078 發(fā)表于 2021-7-17 14:33 | 顯示全部樓層
renjingxian 發(fā)表于 2021-2-14 18:56
請問樓主,那個(gè)用手機(jī)控制機(jī)械臂的是手機(jī)app還是什么小程序,具體是什么app和小程序

應(yīng)用商店搜索藍(lán)牙調(diào)試器有做好的,只需要把對應(yīng)按鈕發(fā)送的數(shù)據(jù)修改即可
回復(fù)

使用道具 舉報(bào)

ID:1048021 發(fā)表于 2022-10-17 16:01 | 顯示全部樓層
樓主,可以簡單說一下6自由度機(jī)械臂的原理以及怎么去做出來的嗎,太深?yuàn)W了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表