Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
11 years ago.
subscript out of range Xbee+LM35
i have a little problem that i cannot solve i connected the mbed with LM35 (temprature sensor) and Xbee Pro. i tried to send the temprature data through xbee pro. this is the code,
LM35_Mbed_Xbee
#include "mbed.h" #include "xbee.h" //Print temperature from LM35 analog temperature sensor //set p19 to analog input to read LM35 sensor's voltage output AnalogIn LM35(p19); xbee xbee1(p9,p10,p11); //Initalise xbee_lib Serial pc(USBTX, USBRX); //Initalise PC serial comms //also setting unused analog input pins to digital outputs reduces A/D noise a bit //see http://mbed.org/users/chris/notebook/Getting-best-ADC-performance/ /*DigitalOut P16(p16); DigitalOut P17(p17); DigitalOut P18(p18); DigitalOut P19(p19); DigitalOut P20(p20);*/ int main() { float tempC[202]; //char b[202]; while(1) { //conversion to degrees C - from sensor output voltage per LM61 data sheet tempC[202] = ((LM35*3.3)-0.6)*100.0; pc.printf("%5.2f C\n", tempC); wait(1); xbee1.SendData(tempC); } }
the code compiled succesfully but i got some warns like "Subscript out of range" in file "/main.cpp", Line: 26, Col: 0 and "C3488E: write to variable 'tempC' with offset out of bounds" in file "/main.cpp", Line: 36, Col: 0 do you have any idea to solve this problem?
thank you
1 Answer
11 years ago.
tempC is an array of 202 floats (so 808 bytes). You assign a value to 202, but with an array of length 202 the indices run from 0 to 201. So you can't assign anything beyond 201 (at least not without having a good chance on a crash and/or really weird behavior).