I am trying to plot a real time graph on MATLAB of wirelessly transmitted digital sensor data(I2C). The structure of the system is as follows: MCP9808(Digital Temperature sensor) -> Arduino Uno with HC-05(Bluetooth Module) -> MATLAB. I managed to plot a real time graph of the analogue temperature sensor.
The following is Arduino code which receives digital temperature value and transmits over to MATLAB
#include <Wire.h>#include <SoftwareSerial.h>SoftwareSerial BTSerial(4, 5); void setup(){ Serial.begin(9600); Wire.begin(); }void loop(){ uint16_t t; Wire.beginTransmission(0x18); Wire.write(0x05); Wire.endTransmission(); delay(100); Wire.requestFrom(0x18, 2); t = Wire.read(); t <<= 8; t |= Wire.read(); float temp = t & 0x0FFF; temp /= 16.0; if (t & 0x1000) temp -= 256; Serial.println(temp); BTSerial.println(temp); delay(1000); }
and this is the MATLAB code:
clear all; clc;delete(instrfindall)instrreset;b = Bluetooth('YONG',1);fopen(b);figureh = animatedline;ax = gca;ax.YGrid = 'on';stop = false;startTime = datetime('now');while ~stop a = str2num(fscanf(b)); % Get current time
t = datetime('now'); % Add points to animation
addpoints(h,datenum(t),a) % Update axes
ax.XLim = datenum([t-seconds(15) t]); datetick('x','keeplimits') drawnowendfclose(b);
It will be greatly appreciated if I could get some tips on this. Thank you in advance.
Best Answer