Здравствуйте! Мне необходимо подключить два одинаковых датчика BMP085 к плате Arduino Uno. Нужно, чтобы производилось измерение давления в двух точках и результат выводился в Serial Port. Каким образом их необходимо подключить?
https://www.adafruit.com/products/391 - тут расписано как подключить один и есть ссылка на библиотеку. Боюсь, что два подключить не получится без допиливания библиотеки. Могу посоветовать подключить http://playground.arduino.cc/Main/SoftwareI2CLibrary - эмуляцию I2C на других пинах (и подключать второй датчик к ним), а в библиотеке сделать возможность работы с ней вместо Wire. Сложного ничего нет, но придётся влезть в код.
Попробовал воспользоваться эмуляцией 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 пин питание к ним. НО по отдельности эти датчики работают, а вместе нет (как только в один вход через макетку подключаю оба датчика - перестают оба работать). Прошу помочь!
Просто так не получится. Библиотека BMP085 завязана на аппаратный I2C. Чтобы подключить второй датчик надо сделать копию этот библиотеки и поправить в её тексте Wire на SoftI2C, ну и вызовы чтения/записи соответственно. Подключив эту модифицированную библиотеку можно будет общаться со вторым датчиком.