Trying to connect both a BMP280 and a TMC2209 to an Arduino MEGA, can make them work separate but not together
Title pretty much explains it. I can control a TMC2209 Stepper Motor controller or a BMP280 Barometric Pressure device, but when I hook both up to one MEGA if fails. Help would be greatly appreciated. The goal is to sample the barometric pressure, run a vacuum pump to bring the pressure down inside a vessel, then bring the pressure back to the sampled value and then run stepper motors with the TMC2209.
#include "SparkFunBME280.h"
//Stepper driver pin definitions #define PIN_STEP_ENABLE 14 #define PIN_STEP1_DIRECTION 13 #define PIN_STEP1_STEP 12
BME280 mySensorA; //Uses default I2C address 0x77 BME280 mySensorB; //Uses I2C address 0x76 (jumper closed)
void setup() { //Configuer stepper driver pins as OUTPUTs pinMode(PIN_STEP1_DIRECTION, OUTPUT); pinMode(PIN_STEP1_STEP, OUTPUT); pinMode(PIN_STEP_ENABLE, OUTPUT);
//ENABLE pin has to be pulled LOW for TMC2209 digitalWrite(PIN_STEP_ENABLE, LOW);
//Serial.begin(115200);
//Wire.begin();
mySensorA.setI2CAddress(0x76); //The default for the SparkFun Environmental Combo board is 0x77 (jumper open). //If you close the jumper it is 0x76 //The I2C address must be set before .begin() otherwise the cal values will fail to load.
if(mySensorA.beginI2C() == false) Serial.println("Sensor A connect failed"); //if I remark out his line and the line //like it for SensorB ( 2 lines down ) the stepper will run but I get no pressure readings, I stopped getting pressure //readings as soon as I added the code to operate the TMC2209
mySensorB.setI2CAddress(0x76); //Connect to a second sensor if(mySensorB.beginI2C() == false) Serial.println("Sensor B connect failed");
Wire.begin(); Serial.begin(115200);
}
void loop() { //determine starting direction of Stepper digitalWrite(PIN_STEP1_DIRECTION,HIGH);
// Makes 200 pulses for making one full cycle rotation for(int x = 0; x < 2000; x++) { Serial.println(" Forword "); digitalWrite(PIN_STEP1_STEP,HIGH); delayMicroseconds(50); digitalWrite(PIN_STEP1_STEP,LOW); delayMicroseconds(50); } delay(1000); // One second delay
digitalWrite(PIN_STEP1_DIRECTION,LOW); //Changes the rotations direction // Makes 400 pulses for making two full cycle rotation for(int x = 0; x < 2000; x++) { Serial.println(" Reverse "); digitalWrite(PIN_STEP1_STEP,HIGH); delayMicroseconds(50); digitalWrite(PIN_STEP1_STEP,LOW); delayMicroseconds(50); } delay(1000);
Serial.print(" PressureA: "); Serial.println(mySensorA.readFloatPressure(), 0);
//Serial.print(" PressureB: "); //Serial.println(mySensorB.readFloatPressure(), 0);
Serial.println();
delay(500); }
1 Kommentar
Zeit (absteigend)There isn't really any ThingSpeak in this, you might find better help on an Arduino forum or Sparkfun. Is it possible that you are exceeding the current supply capability of your power supply? What do you see on the serial monitor when you hook both devices up?