Всем доброго времени суток! Возник вопрос - использую на одной плате Nano два модуля, подключаемых по SPI, а именно TFT-дисплей и радиомодуль nRF24L01, и не могу понять, нужно ли как-то их разделять программно? Имею ввиду что-то вроде такого - получил данные с радио, отключил радио, включил дисплей, вывел на дисплей, отключил дисплей, включил радио, и так по кругу. Или взаимодействие с модулями будет происходить автоматически, как при подключении нескольких I2C? Знаю, что оба SCLK подключаются к 13 пину, оба MOSI к 11, CS разные, но нужны ли какие-то пометки на этот счёт в коде - в сети вообще не нашёл
Код:
Код:
C++:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
RF24 radio(6, 7);
#define TFT_CS 10
#define TFT_RST 8
#define TFT_DC 9
#define TFT_SCLK 13
#define TFT_MOSI 11
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
byte recieved_data[6];
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"};
void setup(void) {
Serial.begin(9600);
radio.begin();
radio.setAutoAck(1);
radio.setRetries(0, 15);
radio.enableAckPayload();
radio.setPayloadSize(32);
radio.openReadingPipe(1, address[0]);
radio.setChannel(0x60);
radio.setPALevel (RF24_PA_MAX);
radio.setDataRate (RF24_250KBPS);
radio.powerUp();
radio.startListening();
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
tft.setRotation(3);
tft.setTextSize(1);
tft.setTextColor(ST7735_WHITE);
tft.setCursor(5, 10);
tft.println("Данные:");
}
void loop(void) {
byte pipeNo;
while ( radio.available(&pipeNo)) {
radio.read(&recieved_data, sizeof(recieved_data));
tft.fillRect(95, 0 , 50, 128, ST7735_BLACK);
tft.setCursor(97, 10);
tft.println(recieved_data[0]);
Serial.println(recieved_data[0]);
}
}