User Manual

12/07/2016
GroveGasSensor(O)Wiki
3/5
byusingaUSBcable.
3.CopyandpastethecodebelowtoanewArduinosketch.Pleaseread
this(http://www.seeedstudio.com/wiki/Upload_Code)ifyoudonotknow
howtoupload.
//testGrove‐GasSensor(O2)
floatVoutArray[]={0.30769,20.00000,40.00000,60.00000,120.61538,186.76923};
floatO2ConArray[]={0.00018,2.66129,5.32258,8.05300,16.19851,25.15367};
voidsetup(){
//putyoursetupcodehere,torunonce:
Serial.begin(9600);
}
voidloop(){
//putyourmaincodehere,torunrepeatedly:
Serial.print("Vout=");
Serial.print(readO2Vout(A0));
Serial.print("V,ConcentrationofO2is");
Serial.println(readConcentration(A0));
delay(500);
}
floatreadO2Vout(uint8_tanalogpin)
{
//Voutsamplesarewithreferenceto3.3V
floatMeasuredVout=analogRead(A0)*(3.3/1023.0);
returnMeasuredVout;
}
floatreadConcentration(uint8_tanalogpin)
{
//Voutsamplesarewithreferenceto3.3V
floatMeasuredVout=analogRead(A0)*(3.3/1023.0);
floatConcentration=FmultiMap(MeasuredVout,VoutArray,O2ConArray,6);
floatConcentration_Percentage=Concentration*100;
/**************************************************************************
TheO2ConcentrationinpercentageiscalculatedbasedonwikipageGraph
ThedatafromthegraphisextractedusingWebPlotDigitizer
http://arohatgi.info/WebPlotDigitizer/app/
VoutArray[]andO2ConArray[]aretheseextracteddata.UsingMultiMap,thedata
isinterpolatedtogettheO2Concentrationinpercentage.
Thisimplementationusesfloatingpointarithmeticandhencewillconsume
moreflash,RAMandtime.
TheO2Concentrationinpercentageisanapproximationanddependsontheaccuracyof
Graphused.
***************************************************************************/
returnConcentration_Percentage;
}
//ThiscodeusesMultiMapimplementationfromhttp://playground.arduino.cc/Main/MultiMap
floatFmultiMap(floatval,float*_in,float*_out,uint8_tsize)
{
//takecarethevalueiswithinrange
//val=constrain(val,_in[0],_in[size‐1]);
if(val<=_in[0])return_out[0];
if(val>=_in[size1])return_out[size1];
//searchrightinterval
uint8_tpos=1;//_in[0]allreadytested
while(val>_in[pos])pos++;
//thiswillhandleallexact"points"inthe_inarray
if(val==_in[pos])return_out[pos];
tfortherest