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&>emp<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