Почему то при таком способе подключения обоих работает только один (значения у переменных первого и второго только от одного идут), на второй вообще не реагирует. В чем может быть проблема?
Ой, уймись и забей уже. Это не твое. Если ты эту проблему всё еще не решил, то последующий кошмар работы с инерционными датчиками тебе не по силам и подавно.
https://www.google.com/search?q=arduino+soft+spi+library&newwindow=1&cli...
На некоторых платах есть и по три независимых (аппаратных) SPI.
Ну и всегда можно сделать программный SPI.
В любом случае начинать проект нужно с адекватного выбора контроллера.
Можно, но нет никакой практической причины это делать.
Просто у меня проблема, не могу подключить два акселерометра adxl362 по одной шине.
А вы хорошо разбираетесь в SPI?
#include <LowPower.h> #include <SPI.h> #include <ADXL362.h> ADXL362 x1; ADXL362 x2; int SS1 = 7; int SS2 = 6; int16_t temp; int16_t XValue, YValue, ZValue, Temperature; int16_t XV, YV, ZV, Tem; void setup() { digitalWrite(SS1,HIGH); digitalWrite(SS2,HIGH); Serial.begin(9600); x1.begin(SS1); // инициализация первого x1.beginMeasure(); x1.SPIwriteOneRegister(0x2C, 0x57); x2.begin(SS2); // инициализация второго x2.beginMeasure(); x2.SPIwriteOneRegister(0x2C, 0x57); Serial.print("XValue XValue2"); } void loop() { digitalWrite(SS1,HIGH); digitalWrite(SS2,HIGH); x1.readXYZTData(XValue, YValue, ZValue, Temperature); digitalWrite(SS1,HIGH); digitalWrite(SS2,HIGH); x2.readXYZTData(XV, YV, ZV, Tem); Serial.print(XValue); Serial.print(" "); Serial.println(XV); }Почему то при таком способе подключения обоих работает только один (значения у переменных первого и второго только от одного идут), на второй вообще не реагирует. В чем может быть проблема?
Ой, уймись и забей уже. Это не твое. Если ты эту проблему всё еще не решил, то последующий кошмар работы с инерционными датчиками тебе не по силам и подавно.
Ну не знаю, если бы мне подсказали, где именно проблема в железе или в коде, то было бы от чего оттолкнуться.
Проблема в коде.
Проблема в железе.
А если так
#include <SPI.h> #include <ADXL362.h> ADXL362 xl; ADXL362 x2; int16_t XValue1, YValue1, ZValue1, Temperature1; int16_t XValue2, YValue2, ZValue2, Temperature2; void setup(){ Serial.begin(115200); xl.begin(6); // Setup SPI protocol, issue device soft reset xl.beginMeasure(); // Switch ADXL362 to measure mode x2.begin(7); // Setup SPI protocol, issue device soft reset x2.beginMeasure(); } void loop(){ xl.readXYZTData(XValue1, YValue1, ZValue1, Temperature1); Serial.print("XVALUE1="); Serial.println(XValue1); x2.readXYZTData(XValue2, YValue2, ZValue2, Temperature2); Serial.print("XVALUE2="); Serial.println(XValue2); delay(100); }то что?
Не проканает), но я уже сделал, спасибо.