Здравствуйте, имеется дисплей и датчик BMP-280. Хочу подключить их по SPI. Насколько я понимаю под SPI предоставленные некоторые пины из всех. Есть устройство к которому поду подключать датчик. Код устройства: Код (C++): #include <iarduino_DHT.h> // Библиотека для DHT-22 #include "U8glib.h" // Библиотека для 12864 U8GLIB_ST7920_128X64_1X u8g(12); // Создаём объект u8g для работы с дисплеем, указывая номер вывода CS для аппаратной шины SPI iarduino_DHT sensor(9); // Объявляем объект, указывая номер вывода, к которому подключён модуль void setup() { delay(1000); } void loop() { int humidity = 0; int temperature = 0; int ground = analogRead(A0); ground = map(ground,0,1023,100,0); switch(sensor.read()) // Читаем показания датчика { case DHT_OK: humidity = sensor.hum ; temperature = sensor.tem ; break; case DHT_ERROR_CHECKSUM: humidity = 1; temperature = 99; break; case DHT_ERROR_DATA: humidity = 1; temperature = 99; break; case DHT_ERROR_NO_REPLY: humidity = 1; temperature = 99; break; default: humidity = 1; temperature = 99; break; } delay(2000); u8g.firstPage(); do{ u8g.setColorIndex(1); u8g.drawBox(0, 0, 128, 16); u8g.drawBox(0, 32, 128, 16); u8g.setFont(u8g_font_9x15); u8g.setColorIndex(0); u8g.drawStr(1,13,"HUM: %"); u8g.setPrintPos(36,13); u8g.print(humidity); u8g.drawStr(1,45, "SOIL: %"); u8g.setPrintPos(45,45); u8g.print(ground); u8g.setColorIndex(1); u8g.drawStr(1,29, "TEMP: *C"); u8g.setPrintPos(45,29); u8g.print(temperature); u8g.drawStr(1,61, "PRESS: mm"); u8g.setPrintPos(54,61); u8g.print(0); delay(5000); } while(u8g.nextPage()); } Код для подключения датчика по SPI: Код (C++): #include <Adafruit_Sensor.h> #include <Adafruit_BMP280.h> #include <Wire.h> #include <SPI.h> #define BMP_SCK 13 //SCL #define BMP_MOSI 11 //SDA #define BMP_CS 10 //CSB #define BMP_MISO 12 // SDO Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK); void setup() { } } void loop() { Serial.print("Pressure = "); Serial.print(bme.readPressure() * 0.00750063755419211); Serial.println(" MM"); Serial.println(); delay(2000); } Просьба объединить их и сделать готовый код. Вот фото устройства(это коробочка которая измеряет влажность и температуру). Была попытка заставить работать через этот код, но данные с BMP-280 не выводились. Код (C++): #include <iarduino_DHT.h> // Библиотека для DHT-22 #include "U8glib.h" // Библиотека для 12864 #include <Adafruit_Sensor.h> // Библиотека для BMP-280 #include <Adafruit_BMP280.h> // Библиотека для BMP-280 #include <Wire.h> // Библиотека для обмена данными #include <SPI.h> // Библиотека для обмена данными #define BMP_SCK 13 //SCL #define BMP_MOSI 11 //SDA #define BMP_CS 10 //CSB #define BMP_MISO 12 // SDO U8GLIB_ST7920_128X64_1X u8g(12); // Создаём объект u8g для работы с дисплеем, указывая номер вывода CS для аппаратной шины SPI Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK); iarduino_DHT sensor(9); // Объявляем объект, указывая номер вывода, к которому подключён модуль void setup() { delay(1000); } void loop() { int pressure = bme.readPressure() * 0.00750063755419211; int humidity = 0; int temperature = 0; int ground = analogRead(A0); ground = map(ground,0,1023,100,0); switch(sensor.read()) // Читаем показания датчика { case DHT_OK: humidity = sensor.hum ; temperature = sensor.tem ; break; case DHT_ERROR_CHECKSUM: humidity = 1; temperature = 99; break; case DHT_ERROR_DATA: humidity = 1; temperature = 99; break; case DHT_ERROR_NO_REPLY: humidity = 1; temperature = 99; break; default: humidity = 1; temperature = 99; break; } delay(2000); u8g.firstPage(); do{ u8g.setColorIndex(1); u8g.drawBox(0, 0, 128, 16); u8g.drawBox(0, 32, 128, 16); u8g.setFont(u8g_font_9x15); u8g.setColorIndex(0); u8g.drawStr(1,13,"HUM: %"); u8g.setPrintPos(36,13); u8g.print(humidity); u8g.drawStr(1,45, "SOIL: %"); u8g.setPrintPos(45,45); u8g.print(ground); u8g.setColorIndex(1); u8g.drawStr(1,29, "TEMP: *C"); u8g.setPrintPos(45,29); u8g.print(temperature); u8g.drawStr(1,61, "PRESS: mm"); u8g.setPrintPos(54,61); u8g.print(pressure); delay(5000); } while(u8g.nextPage()); }
Дисплей то не spi. Соотв. с 12 пина одно из устройств надо убрать. Но вопрост еще в том, почему "PRESS: mm" не отображается. Это от датчика не зависит.