Hey all,
I'm having trouble using two different libraries in my arduino project at once. I am fairly new and I have gotten both the codes to run individually but when I try to use both libraries I am getting error messages.
Im in the process of trying to setup a CANBUS link with an arduino CAN-BUS "CANBED" module and a raspberry pi CANBUS header board, both boards from SEEEDuino. I am using a BME280 temp sensor and the libraries on arduino from adafruit called "Adafruit_BME280_Library".
Using the libraries recommended from the SEEEDUINO product page I have gotten the connection and counter to work between the SEEEDuinio board and the raspberry pi.
I'm now trying to merge these both to transfer the BME280 data through the CANBUS link to see it on the Raspberry Pi.
Link for CAN-BED libraries:
Link for CANBED arduino board I am using :
Error message copy and paste:
In file included from C:\Users\accou\Documents\Arduino\libraries\Longan_CAN_MCP2515-master/mcp_can.h:49:0,
from C:\Users\accou\Desktop\Jared Work\ArduinoCANBED\ArduinoCANBED.ino:2:
C:\Users\accou\Documents\Arduino\libraries\Longan_CAN_MCP2515-master/mcp_can_dfs.h:189:25: error: expected identifier before numeric constant
#define MODE_SLEEP 0x20
^
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:179:5: note: in expansion of macro 'MODE_SLEEP'
MODE_SLEEP = 0b20,
^~~~~~~~~~
C:\Users\accou\Documents\Arduino\libraries\Longan_CAN_MCP2515-master/mcp_can_dfs.h:189:25: error: expected '}' before numeric constant
#define MODE_SLEEP 0x20
^
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:179:5: note: in expansion of macro 'MODE_SLEEP'
MODE_SLEEP = 0b20,
^~~~~~~~~~
C:\Users\accou\Documents\Arduino\libraries\Longan_CAN_MCP2515-master/mcp_can_dfs.h:189:25: error: expected unqualified-id before numeric constant
#define MODE_SLEEP 0x20
^
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:179:5: note: in expansion of macro 'MODE_SLEEP'
MODE_SLEEP = 0b20,
^~~~~~~~~~
In file included from C:\Users\accou\Desktop\Jared Work\ArduinoCANBED\ArduinoCANBED.ino:8:0:
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:214:19: error: expected unqualified-id before ')' token
Adafruit_BME280();
^
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:215:26: error: expected ')' before 'cspin'
Adafruit_BME280(int8_t cspin, SPIClass *theSPI = &SPI);
^~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:216:26: error: expected ')' before 'cspin'
Adafruit_BME280(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin);
^~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:217:25: error: expected constructor, destructor, or type conversion before ';' token
~Adafruit_BME280(void);
^
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:219:8: error: ambiguating new declaration of 'bool init()'
bool init();
^~~~
In file included from sketch\ArduinoCANBED.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:129:6: note: old declaration 'void init()'
void init(void);
^~~~
In file included from C:\Users\accou\Desktop\Jared Work\ArduinoCANBED\ArduinoCANBED.ino:8:0:
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:221:20: error: variable or field 'setSampling' declared void
void setSampling(sensor_mode mode = MODE_NORMAL,
^~~~~~~~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:221:20: error: 'sensor_mode' was not declared in this scope
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:221:20: note: suggested alternative: 'sensor_t'
void setSampling(sensor_mode mode = MODE_NORMAL,
^~~~~~~~~~~
sensor_t
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:222:20: error: 'sensor_sampling' was not declared in this scope
sensor_sampling tempSampling = SAMPLING_X16,
^~~~~~~~~~~~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:222:20: note: suggested alternative: 'sensor_filter'
sensor_sampling tempSampling = SAMPLING_X16,
^~~~~~~~~~~~~~~
sensor_filter
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:223:20: error: 'sensor_sampling' was not declared in this scope
sensor_sampling pressSampling = SAMPLING_X16,
^~~~~~~~~~~~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:223:20: note: suggested alternative: 'sensor_filter'
sensor_sampling pressSampling = SAMPLING_X16,
^~~~~~~~~~~~~~~
sensor_filter
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:224:20: error: 'sensor_sampling' was not declared in this scope
sensor_sampling humSampling = SAMPLING_X16,
^~~~~~~~~~~~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:224:20: note: suggested alternative: 'sensor_filter'
sensor_sampling humSampling = SAMPLING_X16,
^~~~~~~~~~~~~~~
sensor_filter
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:225:34: error: expected primary-expression before 'filter'
sensor_filter filter = FILTER_OFF,
^~~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:226:37: error: expected primary-expression before 'duration'
standby_duration duration = STANDBY_MS_0_5);
^~~~~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:244:1: error: expected unqualified-id before 'protected'
protected:
^~~~~~~~~
C:\Users\accou\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:370:1: error: expected declaration before '}' token
};
^
exit status 1
Error compiling for board Arduino Leonardo.
Code copy/paste (I have commented out the BME280 code I have inserted into the CANBED code):
#include <SPI.h>
#include "mcp_can.h"
/*
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
*/
const int SPI_CS_PIN = 17; // CANBed V1, IMPORTANT, this is the chip select pin. Not written anywhere.
// const int SPI_CS_PIN = 3; // CANBed M0
// const int SPI_CS_PIN = 9; // CAN Bus Shield
MCP_CAN CAN(SPI_CS_PIN); // Set CS pin
void setup()
{
/*
Serial.begin(9600); //serial for BME280 9600
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
*/
//Begin CAN-BUS connection, baudrate to 500000
Serial.begin(115200); //serial for CANBUS 115200
while(!Serial);
while (CAN_OK != CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS FAIL!");
delay(100);
}
Serial.println("CAN BUS OK!");
}
unsigned char stmp[8] = {0, 0, 0, 0, 0, 0, 0, 0};
void loop()
{
/*
//Temperature print
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println("*C");
//Humidity print
Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println("%");
Serial.println();
delay(1000);
*/
// send data: id = 0x00, standrad frame, data len = 8, stmp: data buf
stmp[7] = stmp[7]+1;
if(stmp[7] == 100)
{
stmp[7] = 0;
stmp[6] = stmp[6] + 1;
if(stmp[6] == 100)
{
stmp[6] = 0;
stmp[5] = stmp[6] + 1;
}
}
CAN.sendMsgBuf(0x00, 0, 8, stmp);
delay(100); // send data per 100ms
}
I am still learning both arduino and CAN-BUS in general but following tutorials and sampling code I have gotten to this point. any help would be greatly appreciate, thankyou.