Skocz do zawartości

Zmuszenie do współpracy Nrf2401 i wyświetlacza ST7735S ard. Nano,


therion

Pomocna odpowiedź

Witam
Mam problem z wyświetlaczem 1,8 tft ST7735S we współpracy z nrf2401.
Oba te moduły wymagają podłączenia pod pin D11 (MOSI) w arduino nano.
Z tego co próbowałem doczytać to MISO i MOSI mogą ogarnąć kilka modułów na raz, ale nie mogę znaleźć nigdzie prostego przykładu na którym mógłbym się pouczyć, potrenować:(
Czy da się je jakoś "pogodzić"? 

 

Link do komentarza
Share on other sites

Na wstępie zaznaczę że nie jestem w tej dziedzinie ekspertem

image.thumb.png.0ef8db70a8f23f99eddf77bcaaff2e84.png

Tutaj masz przykładowe podłączenie jest 1 master (zakładam że u ciebie to mikrokontroler) I 3 slav-y (urządzenia które podłączasz) sclk to zegar jakim master taktuje slaw-y (nie zawsze jest to konieczne wykorzystanie tego wejścia)

Mosi (master output sławę input) to pin którym master wysyła dane

Miso (master input sławę output) to pin z którego master pobiera dane

SS to slawe select innymi słowy w zależności od tego jaka jest wartość tego sygnału master komunikuje się że wskazanym slawe  

Edytowano przez Hromosom
  • Lubię! 1
Link do komentarza
Share on other sites

Dopowiem ze to przykład połączenia szeregowego (zwróć uwagę na strzałki na schemacie Miso z 1 sławę to mosi 2) 

Można to też podłączyć równolegle (polecam sprawdzić komunikację SPI )

JAK wszystko zawiedzie możesz zrobić prosty multiplekser i w ten sposób wybrać z którym modułem chcesz się teraz porozumiewać 

Ps jeszcze raz zaznaczę że nie jestem w tym ekspertem więc jest całkiem możliwe że ktoś bardziej doświadczony podpowie lepsze rozwiązanie 🙂

Link do komentarza
Share on other sites

Czyli jak mam piny:
NRF2401:
MOSI - D11 (MOSI ARDUINO)
MISO - D12 (MISO ARDUINO)


to pin MISO z nrf powinien nie być połączony z arduino tylko z pinem  MOSI z  ST7735S (opisany jako SDA) ? Niby ok, ale ekran lcd  nie ma pinu MISO, który wg tego schematy miałby wrócić do arduino:( dalej nie rozumiem:(

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

oba urządzenia się "gryzą", piny MOSI obu sa podłączone pod pin D11 arduino,  jak odłączę MOSI z nrf2401 (d11 tylko pod ekran) to działa ekran, jak odłączę MOSI z ekranu (d11 tylko nrf2401) to działa nrf2401,
jak podłączone oba (d1 do obu) to działa ekran ale nie działaNRF2401

Link do komentarza
Share on other sites

W SPI adresowanie odbywa się sprzętowo - każdy Slave posiada wejście wyboru (SS na schemacie nr 2 powyżej, choć częściej jest oznaczana jako CS albo CE), które jest wysterowane przez Master'a w momencie rozpoczęcia  wymiany danych z danym modułem - każdy osobną linią.

Definiowanie pinu tej linii w programie odbywa się w trakcie inicjalizacji danego modułu - szczegóły już zależą od zastosowanej biblioteki

Link do komentarza
Share on other sites

Ideę rozumiem mniej więcej dobrze, tylko wykonać nie potrafię.😐
Biblioteki:
#include <Adafruit_GFX.h>;  #include <Adafruit_ST7735.h>; #include <SPI.h>; #include <nRF24L01.h>;  #include <RF24.h>;
Poprawcie jeśli się mylę:
W SPI adresowanie odbywa się stanem wysokim/niskim na określonym pinie (CS). Więc przykładowo łączę to jak na schemacie nr 2(piny MOSI z nrf i lcd razem podpięte pod D11 arduino) i jeżeli chcę nadawać sygnał nrfem to CS NRF (np D7) ustawiam na wysoki a ekranu na niski, jak ekran to pin CS ekranu (np D8) na wysoki a nrfu (D7) na niski. Ale w takim razie ekran będzie migał, a transmisja danych będzie szarpana:(

Link do komentarza
Share on other sites

#include <TFT.h>
#include <SPI.h>

#define cs   7
#define dc   9
#define rst  8

TFT tft = TFT(cs, dc, rst);
//**************************************************888
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(A0, 10); // CE, CSN
const byte address_nrf[6] = "00001";


void setup() {
  radio.begin();
  radio.openReadingPipe(0, address_nrf);
  radio.openWritingPipe(address_nrf);
  radio.setPALevel(RF24_PA_MIN);                           // NRF
  radio.startListening();
  radio.setDataRate(RF24_250KBPS);
  //**************************************************************************************************************8
  tft.begin();
  tft.background(BLACK);
  tft.setRotation(4);
  tft.drawRect(0, 32, 64, 22, WHITE);
  tft.drawRect(65, 32, 63, 22, WHITE);
  tft.drawRect(0, 53, 64, 22, WHITE);
  tft.drawRect(65, 53, 63, 22, WHITE);
}

void loop() {
  // put your main code here, to run repeatedly:

}

 

poustawiaj piny u siebie i sprawdz czy lcd dziala..(to jest wycinek z dzialajacego kodu)

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.