Подключение по SPI

Тема в разделе "Проводная и беспроводная связь", создана пользователем Уыфгдщм, 13 авг 2017.

  1. Уыфгдщм

    Уыфгдщм Нерд

    Здравствуйте, имеется дисплей и датчик 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());
    }
     

    Вложения:

    • Dn1EVwog2H0.jpg
      Dn1EVwog2H0.jpg
      Размер файла:
      181 КБ
      Просмотров:
      626
  2. NikitOS

    NikitOS Король шутов Администратор

    Соединить?!А сами?!
     
  3. Уыфгдщм

    Уыфгдщм Нерд

    Твой юмор оказался слишком сложным
     
  4. Дисплей то не spi. Соотв. с 12 пина одно из устройств надо убрать. Но вопрост еще в том, почему "PRESS: mm" не отображается. Это от датчика не зависит.