急需PIC16F84的伺服代码,需要控制4个舵机连接端口,急需PIC16F84的伺服代码,需要控制4个舵机连接端口
2条回答 默认 最新
- 普通网友 2017-03-25 07:17关注
之前做过,这是部分代码:
function varargout = servo_control(varargin)% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @servo_control_OpeningFcn, ...
'gui_OutputFcn', @servo_control_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
endif nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT%*-*-FUNCI DE CONDICIONES INICIALES*-*-*
function servo_control_OpeningFcn(hObject, eventdata, handles, varargin)
%*-*-INICIO DE CONDICIONES INICIALES*-*-*
%*-*-CIGO para centrar la interfaz
movegui(hObject,'center')
%*-*-FIN de CIGO para centrar la interfaz
%*-*-Limpiar la pantalla y mostrar mensaje*-*-*-*-
clc; disp('Programa Ejecutdose')
%*-*-Configuraci del puerto serial*-*-*-*-*-*-*-*
handles.SerPIC = serial('COM1');%Seleccionar puerto COM1
set(handles.SerPIC,'BaudRate',2400);%Velocidad 2400 baudios
set(handles.SerPIC,'DataBits',8);%8 bits de datos
set(handles.SerPIC,'Parity','none');%Sin control de paridad
set(handles.SerPIC,'StopBits',1);%Un bit de parada
set(handles.SerPIC,'FlowControl','none');%Sin control de flujo
fopen(handles.SerPIC); %--Abrir el puerto serial
%********----------***************-----------************----------*
%*-*-FIN DE CONDICIONES INICIALES*-*-*% Choose default command line output for servo_control
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);% --- Outputs from this function are returned to the command line.
function varargout = servo_control_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;%********PROGRAMACIPRINCIPAL*-*-*-*-*-*-*-
%CONTIENE:
%CONTROL DE LOS SLIDER QUE ENVIAN DATOS SERIALES
%AL MICROCONTROLADOR PIC 16F628A% ----------- MOVIMIENTO DE LA MU袳CA-PIN 4-------------------
function motor_uno_Callback(hObject, eventdata, handles)
set(handles.motor_uno,'Enable','inactive')
val_s=round(get(hObject,'Value'));
grados=round((val_s*0.9)-45);
set(handles.pos_1,'String',grados);
fprintf(handles.SerPIC,'%c',[char(4) char(val_s)]);
pause(0.7)
set(handles.motor_uno,'Enable','on')
%----------------------------------------------------% ----------- MOVIMIENTO DEL CODO-PIN 2-------------------.
function motor_dos_Callback(hObject, eventdata, handles)
%Slider que controla el motor del codo
set(handles.motor_dos,'Enable','inactive')
maxi=get(hObject,'Max');%Tomar valor mimo
mini=get(hObject,'Min');%Tomar valor mimo
val_s=round(get(hObject,'Value'));
val_s=maxi-val_s+mini;%Inverside movimiento
grados=round((val_s*0.9)-45);
set(handles.pos_2,'String',grados);
fprintf(handles.SerPIC,'%c',[char(2) char(val_s)]);%
pause(0.7)
set(handles.motor_dos,'Enable','on')
%---------------------------------------------------------------% ----------- MOVIMIENTO DE GIRO -PIN 3-------------------.
function motor_tres_Callback(hObject, eventdata, handles)
%Slider que controla el motor tres (codo)
set(handles.motor_tres,'Enable','inactive')
val_s=round(get(hObject,'Value'));
grados=round((val_s*0.9)-45);
set(handles.pos_3,'String',grados);
fprintf(handles.SerPIC,'%c',[char(3) char(val_s)]);%
pause(0.7)
set(handles.motor_tres,'Enable','on')
%------------------------------------------------------------------% ----------- MOVIMIENTO DE LA BASE-PIN 1-------------------
function motor_cuatro_Callback(hObject, eventdata, handles)
set(handles.motor_cuatro,'Enable','inactive')
maxi=get(hObject,'Max');%Tomar valor mimo
mini=get(hObject,'Min');%Tomar valor mimo
val_s=round(get(hObject,'Value'));
val_s=maxi-val_s+mini;%Inverside movimiento
grados=round((val_s*0.9)-45);%Conversia grados
set(handles.pos_4,'String',grados);
fprintf(handles.SerPIC,'%c',[char(1) char(val_s)]);%
pause(0.7)
set(handles.motor_cuatro,'Enable','on')
%------------------------------------------------------------------% --- Executes on slider movement.
function motor_cinco_Callback(hObject, eventdata, handles)
%Slider que controla el motor cinco (pinza)
set(handles.motor_cinco,'Enable','inactive')
val_s=round(get(hObject,'Value'));
set(handles.pos_5,'String',val_s);
fprintf(handles.SerPIC,'%c',[char(5) char(val_s)]);%
pause(0.7)
set(handles.motor_cinco,'Enable','on')
%-------------------------------------% --- Executes during object deletion, before destroying properties.
function figure1_DeleteFcn(hObject, eventdata, handles)
%*-*-Cierra el puerto serial al cerrar la interfaz grica*-*-*-
clc
try
fclose(handles.SerPIC) %--CIERRA EL PUERTO COM
delete(handles.SerPIC)
clear handles.SerPIC
disp('Puerto Serial Cerrado')
catch
disp('Error al cerrar el puerto serial')
end还有设计图
还有一些相关的资料可以联系我本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 训练的多模态特征融合模型准确度很低怎么办
- ¥15 kylin启动报错log4j类冲突
- ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
- ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
- ¥15 onvif+openssl,vs2022编译openssl64
- ¥15 iOS 自定义输入法-第三方输入法
- ¥15 很想要一个很好的答案或提示
- ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
- ¥15 怀疑手机被监控,请问怎么解决和防止
- ¥15 Qt下使用tcp获取数据的详细操作