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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.