Skocz do zawartości

Adresowanie wyjść expandera


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 to post
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 to post
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 to post
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 to post
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 to post
Share on other sites

Nie zrobisz tego ze względu na specyfikę działania magistrali 1wire. Chodzi o wymogi czasowe, których jeśli nie spełnisz magistrala nie zadziała. 

Link to post
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 to post
Share on other sites
  • Gieneq zmienił tytuł na: Adresowanie wyjść expandera

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.