2 Датчика BMP085 к плате Arduino Uno

Тема в разделе "Arduino & Shields", создана пользователем Vulf Michael, 30 янв 2015.

  1. Vulf Michael

    Vulf Michael Нуб

    Здравствуйте!
    Мне необходимо подключить два одинаковых датчика BMP085 к плате Arduino Uno. Нужно, чтобы производилось измерение давления в двух точках и результат выводился в Serial Port. Каким образом их необходимо подключить?
     
  2. zserg

    zserg Нерд

    https://www.adafruit.com/products/391 - тут расписано как подключить один и есть ссылка на библиотеку. Боюсь, что два подключить не получится без допиливания библиотеки. Могу посоветовать подключить http://playground.arduino.cc/Main/SoftwareI2CLibrary - эмуляцию I2C на других пинах (и подключать второй датчик к ним), а в библиотеке сделать возможность работы с ней вместо Wire. Сложного ничего нет, но придётся влезть в код.
     
  3. Vulf Michael

    Vulf Michael Нуб

    Попробовал воспользоваться эмуляцией I2C: не понимаю, как для этой эмуляции написать код
    Код (Text):
    define SDA_PORT PORTD
    #define SDA_PIN 3
    #define SCL_PORT PORTD
    #define SCL_PIN 5
    #include <SoftI2CMaster.h>
    #include <BMP085.h>

    BMP085 dps = BMP085();      // Digital Pressure Sensor

    long Pressure = 0;
    int vcc1 = 7;
    int vcc2 = 8;

    void setup(void) {
      pinMode(vcc1, OUTPUT);
      pinMode(vcc2, OUTPUT);
      digitalWrite(vcc1, HIGH);
      digitalWrite(vcc2, LOW);
      Serial.begin(9600);
      i2c_init();
        delay(1000);
         
      //dps.init(MODE_ULTRA_HIGHRES, 25000, true);  // 250 meters, true = using meter units              
    }          

    void loop(void) {
      //digitalWrite(vcc1, HIGH);
      //delay (500);
      //dps.init(MODE_ULTRA_HIGHRES, 25000, true);
      //dps.getPressure(&Pressure);
      //Serial.print("  Pressure1(Pa):");
      //Serial.println(Pressure);
      //digitalWrite(vcc1, LOW);
      //delay (1000);
     
      digitalWrite(vcc2, HIGH);
      delay (500);
      dps.init(MODE_ULTRA_HIGHRES, 25000, true);
      dps.getPressure(&Pressure);
      Serial.print("  Pressure2(Pa):");
      Serial.println(Pressure);
      digitalWrite(vcc2, LOW);
      delay (1000);
    }
     
    Как видно из кода, хотел попробовать подключить оба датчика на А5 и А6, и поочерёдно включать через 7 и 8 пин питание к ним. НО по отдельности эти датчики работают, а вместе нет (как только в один вход через макетку подключаю оба датчика - перестают оба работать). Прошу помочь!
     
  4. zserg

    zserg Нерд

    Просто так не получится. Библиотека BMP085 завязана на аппаратный I2C. Чтобы подключить второй датчик надо сделать копию этот библиотеки и поправить в её тексте Wire на SoftI2C, ну и вызовы чтения/записи соответственно. Подключив эту модифицированную библиотеку можно будет общаться со вторым датчиком.