Skocz do zawartości

Adresowanie wyjść expandera


cheppeniathan

Pomocna odpowiedź

Cześć,

mam następujący problem. Używam w projekcie kilku expanderów PCF8574.

Biblioteki pod np. RTC, DHT są napisane tak, że urządzenie podłączone jest do arduino i  tworząc obiekt wpisujemy odpowiednie piny, do których podpięte jest  urządzenie na arduino. Na przykład:

Fragment z  kodu dla RTC
// DS1302 CLK/SCLK --> 5
// DS1302 DAT/IO --> 4
// DS1302 RST/CE --> 2
// DS1302 VCC --> 3.3v - 5v
// DS1302 GND --> GND

#include <ThreeWire.h>  
#include <RtcDS1302.h>

ThreeWire myWire(4,5,2); // IO, SCLK, CE
RtcDS1302<ThreeWire> Rtc(myWire);

 

Fragment z kodu dla DHT

#include "DHT.h"

DHT dht;

void setup()
{
    dht.setup(2); // data pin 2

 

Nie wiem i proszę o wiedzę jak właściwie mam adresować porty na expanderze zaadresowanym np 0x20. 

//--------------------------------------------------expander 0x20-------------------------------------------

#define rtc_CLK    0

#define rtc_DAT    1

#define rtc_RST    2

 

Co mam wpisać do dht.setup(???), ThreeWire myWire(????) i innych podobnych obiektów tworzonych do innych bibliotek czujników, etc. 

 

Link do komentarza
Share on other sites

Nic. Te biblioteki nie będą działały z ekspanderem. Szczególnie, jeśli używają SPI czy innych peryferiów, których ekspander nawet nie ma.

Nie wszystko się da obsłużyć ekspanderem, a to co się da, prawdopodobnie będziesz musiał obsłużyć sam, bez biblioteki (albo odpowiednio przerabiając kod z biblioteki).

Link do komentarza
Share on other sites

DS1302 działa na SPI, DHT11 ma swój protokół na jednym "drucie", a PCF8574 używa I2C.

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

Używam biblioteki PCF8574. Nie wiem, czy tej z Twojego linku.

Jeśli dobrze Cię rozumiem, to mam sam stworzyć bibliotekę jak na przykład Wire, czy LiquicCrystal_I2C ...?

Nie mam teraz czasu aby uczyć się tego. Mam projekt do zrobienia. Najwyżej wykorzystam dwa arduino jak zabraknie mi pinów i skomunikuje je ze sobą. 

Dzięki za odpowiedzi..

 

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

(edytowany)

Tak, chcę to wszystko wyrzucić na expandery.

Jeśli definiuje pin arduino

#define rtc_DAT         A1

następnie tworze obiekty

ThreeWire myWire(rtc_DAT,A1,A3);                      // DAT(IO), CLK(SCLK), RST(CE) 
RtcDS1302<ThreeWire> Rtc(myWire);

To program się kompiluje. 

Zatem jeśli umiałbym znając adres expandera np. 0x20 i pin np. 0 wpisać odpowiedni

#define rtc_DAT        adresPinuNaExpanderze

to przypuszczam, że kiedy utworzę obiekt

ThreeWire myWire(rtc_DAT,A1,A3);       to będzie to działać.               
 

Edytowano przez cheppeniathan
Link do komentarza
Share on other sites

22 minuty temu, cheppeniathan napisał:

Tak, chcę to wszystko wyrzucić na expandery.

Nie da się. Zarówno RTC, jak i DHT muszą być podłączone bezpośrednio do pinów Arduino. Ekspander może służyć do sterowania różnymi urządzeniami na zasadzie włącz/wyłacz (przekaźnik, LED, silnik) czy też do pobierania danych z większej ilości wejść on/off (przycisk, krańcówka, zderzak).

Ale na to jest sposób.

Użyj innego modułu RTC podłączanego do I2C.

Jeśli potrzebujesz PWM, użyj również jakiegoś sterownika na I2C.

Wtedy masz dwa piny A4 i A5 zajęte na wszystkie PCF-y, LCD, RTS i PWM/Servo, jakiś trzeci do DHT i zostaje mnóstwo pinów wolnych.

 

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.