В C и C ++ вы должны объявлять функции, прежде чем вызывать их.
Вы можете сделать это, определив функцию, как вы сделали здесь:
void readQuatData(int16_t * destination)
{
uint8_t rawData[8]; // x/y/z gyro register data stored here
readBytes(BNO055_ADDRESS, BNO055_QUA_DATA_W_LSB, 8, &rawData[0]); // Read the six raw data registers sequentially into data array
destination[0] = ((int16_t)rawData[1] << 8) | rawData[0] ; // Turn the MSB and LSB into a signed 16-bit value
destination[1] = ((int16_t)rawData[3] << 8) | rawData[2] ;
destination[2] = ((int16_t)rawData[5] << 8) | rawData[4] ;
destination[3] = ((int16_t)rawData[7] << 8) | rawData[6] ;
}
Или вы это можно сделать с помощью объявления функции, например:
void readQuatData(int16_t * destination);
Вы вызываете readQuatData()
перед тем, как объявить его, поэтому вы получаете эту ошибку.
Вы можете переместить ваше определение функции перед теми местами, где вы ее используете, или вы можете объявить ее перед тем, как ее использовать, например так:
INA219 monitor;
void readQuatData(int16_t * destination);
void setup() {
Я поместил ее перед вызовом setup()
как объявление всего, что вам нужно объявлять в начале файла перед кодом, как правило, чище и проще в обслуживании, чем разбрасывать объявления по всему коду.
Это необходимо сделать для writeByte()
и readBytes()
. Кажется, что они отсутствуют в коде, которым вы поделились, так что вы сами с ними, но вы бы сделали то же самое - либо определите их, прежде чем использовать их, либо добавьте объявление для них, прежде чем использовать их .