Monday, May 4, 2015

The project uses these two MATLAB codes as the heart of the working model of the system.


function Temperature_Callback(hObject, eventdata, handles)
% hObject    handle to Temperature (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global A;
global Temp;
global Reading;

Reading=[]; % OPEN A MATRIX WITH UNDEFINED SIZE

for i=1:1:4000 % LOOP TO KEEP READING THE TEMPERATURE VALUES
    Temp=fscanf(A); % SCACN THE SERIAL PORT FOR CURRENT VALUE
    Temp=str2num(Temp); % CONVERT THE STRING TO NUMBER
    Reading=[Reading Temp]  % APPEND THE LAST READING TO THE OLD READINGS
    plot(Reading) % PLOT THE READINGS TO THE AXIS
    pause(0.8) % PAUSE TIME FOR THE READING TO BE UPDATED ON THE BUS
   
    if Temp>40 % DEFINE THE TEMPERATURE LIMIT THAT YOU NEED TO SEND EMAIL IF IT REACHED HIS LIMIT
        matlabmail('afifi.mechatronic@gmail.com','The current body temperature is 40 and above, Please Help!','Emergency Alert', 'afifi.mechatronic@gmail.com','0165056732');
        %CALLING THE EMIAL FUNCTION WITH THE FOLLOWING ORDER
        %MATLABMAIL( recipient, message, subject, sender, passwd )
        break
    end
end

function AfterMeal_Callback(hObject, eventdata, handles)
% hObject    handle to AfterMeal (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global G;
global A;
global GRead;
global GTemp;
global Slope
GRead=[];
fprintf(A,'G'); % PRINT 'G' FOR GLUCOSE, IT MATCHED WITH THE ARDUINO CODE AS WELL
G=get(handles.Reading,'string')
GTemp=str2num(G) % CONVERT STRING TO NUMBER
GRead=[GRead GTemp] % ADD NEW READING TO PREVIOUS IN AN ARRAY
GRead(1)=145; % HARDCODING THE FIRST REFERENCE READING WITH THIS VALUE
for i=1:1:1000
    pause(0.5)
    G=get(handles.Reading,'string')
    set(handles.Reading,'String','');
    pause(5)
    GTemp=str2num(G)
    GRead=[GRead GTemp]
    Slope=GRead(i+1)-GRead(i)
    ref=[145 122 110 100 99]; % THE REFERNCE OPTIMAL READING THAT WE USE TO COMPARE THE CURRENT MEASURMENT TO IT.
    time=[0 3 5 8 12]; % TIME OF READINGS
    xlabel('time in hours');
    ylabel('glucose concentration in mg/dL');
    plot(time,ref,'o-b');
    hold on;
    plot(GRead,'o-r');
    legend('Reference','Actual Readings');
   
    if GRead<145
        fprintf(A,'%s','G')
        fprintf(A,'%s','S') % 'S' STANTS FOR STOP THE MOTOR
    else if GTemp>145&&GTemp<175&&Slope>5
            fprintf(A,'%s','G')
            fprintf(A,'%s','H')% 'H' STANDS FOR HIGH GLUCOSE LEVEL AND TELLS THE MOTOR TO MOVE
        else if GTemp>175&&Slope>10
                fprintf(A,'%s','G')
                fprintf(A,'%s','V') % 'V' STADS FOR VERY HIGH GLUCOSE LEVEL
                matlabmail('afifi.mechatronic@gmail.com','My Glucose level is very high, please Help! ','Urgent Emergency','afifi.mechatronic@gmail.com','0165056732');
               
                break
            else if (GTemp==0)
                    fprintf(A,'%s','G')
                    fprintf(A,'%s','R') % R FOR REVERSE DIRECTION OF MOTOR MOVEMENT "FOR FUTUERE EXTENSTION"
                    break
                end

0 comments:

Post a Comment