الكود البرمجي للواجهة
بعد بحفظ الواجهة الرسومية التي بنيتها بإستخدام الأداة GUIDE ،GUIDE سيقوم بتوليد الكود البرمجي لتعمل الواجهة، يتضمن التوابع الهيكلية التي يمكن للمبرمج أن يُعدّل عليها ويتحكم بتنفيذ وسلوك الواجهة الرسومية.
نقوم بفتح والتعديل على الكود البرمجي للواجهة (rgb.m) كما يلي :
function varargout = rgb(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @rgb_OpeningFcn, ... 'gui_OutputFcn', @rgb_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before rgb is made visible. function rgb_OpeningFcn(hObject, eventdata, handles, varargin) % Choose default command line output for rgb handles.output = hObject; % Update handles structure guidata(hObject, handles); % --- Outputs from this function are returned to the command line. function varargout = rgb_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; clear all; global a; a=arduino; % --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) b=get(hObject,'Value'); global a; writePWMVoltage( a , 'D9' , 5-b ); % --- Executes during object creation, after setting all properties. function slider1_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end % --- Executes on slider movement. function slider2_Callback(hObject, eventdata, handles) c=get(hObject,'Value'); global a; writePWMVoltage( a , 'D10' , 5-c ); % --- Executes during object creation, after setting all properties. function slider2_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end % --- Executes on slider movement. function slider3_Callback(hObject, eventdata, handles) d=get(hObject,'Value'); global a; writePWMVoltage( a , 'D11' , 5-d ); function slider3_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end
لمحة عن الكود :
إنشاء الاتصال
لإنشاء الاتصال بين الماتلاب ولوحة الاردوينو :
a = arduino;
او إذا كان لديك أكثر من لوحة ارديونو متصلة قم بتحديد المنفذ و نوع اللوحة كما يلي :
a = arduino('COM5', 'uno');
الكتابة على المنافذ :
لتعيين القيمة المتغيرة لكل منفذ( PWM pin) نستخدم الامر:
writePWMDutyCycle(a, pin, dutyCycle);
في هذا المشروع يتم تغير القيمة لكل منفذ اعتمادا على حركة ال Slider ، فتم اضافة الكود التالي لكل Slider كما يلي :
b=get(hObject,'Value'); global a; writePWMVoltage( a , 'Pin' , 5-b );
يتم تغير الـ Pin لكل Slider اعتمادا على المدخل المرتبط به على لوحة الاردوينو
قم بحفظ و تشغيل الملف للتحكم بالـ RGB LED .
*يمكنك تنزيل واجهة المستخدم و الكود لهذا المشروع من هنـا.