Wtrącę się co do programowego UARTa.
Jeżeli Ty decydujesz, kiedy chcesz rozmawiać z poszczególnymi "peryferiami" to bez problemu można to zrobić przy pomocy UARTa programowego. Wystarczy przed rozpoczęciem "rozmowy" napisać komendę uruchamiającą konkretny UART. Ja tak zrobiłem w stacji pogody do 2 czujników smogu i zdalnego wyświetlacza. Są 3 UARTy programowe.
Nazwałem je S1, S2 i S3.
Tu fragment kodu z deklaracji pinów i deklaracji UARTów.
#define TxS1 A0
#define RxS1 A1
#define TxS2 3
#define RxS2 4
#define TxS3 A2
#define RxS3 A3
#include <SoftwareSerial.h>
SoftwareSerial S1(RxS1, TxS1);//Serial nazywa się S1 RX, TX UART do PMz
SoftwareSerial S2(RxS2, TxS2);//Serial nazywa się S2 RX, TX UART do SLAWE
SoftwareSerial S3(RxS3, TxS3);//Serial nazywa się S3 RX, TX Uart do PMw
Przed rozpoczęciem "rozmowy" z S1 wydaję komendę S1.begin (9600); przed S2 komendę S2.begin (9600); i przed S3 komendę S3.begin (9600);
Komendy są wydawane w pętli loop a nie jak tradycyjnie w setup.
Wcześniej robiłem takie rozwiązanie na przełącznikach tranzystorowych wykorzystując jeden UART sprzętowy. Teraz zrezygnowałem jak "odkryłem", że można inaczej. Ponadto przy wykorzystaniu UARTa sprzętowego występowały kolizje podczas wgrywania programu do Arduino uno.
To tyle w tej kwestii.
Jeżeli Ty decydujesz, kiedy chcesz rozmawiać z poszczególnymi "peryferiami" to bez problemu można to zrobić przy pomocy UARTa programowego. Wystarczy przed rozpoczęciem "rozmowy" napisać komendę uruchamiającą konkretny UART. Ja tak zrobiłem w stacji pogody do 2 czujników smogu i zdalnego wyświetlacza. Są 3 UARTy programowe.
Nazwałem je S1, S2 i S3.
Tu fragment kodu z deklaracji pinów i deklaracji UARTów.
#define TxS1 A0
#define RxS1 A1
#define TxS2 3
#define RxS2 4
#define TxS3 A2
#define RxS3 A3
#include <SoftwareSerial.h>
SoftwareSerial S1(RxS1, TxS1);//Serial nazywa się S1 RX, TX UART do PMz
SoftwareSerial S2(RxS2, TxS2);//Serial nazywa się S2 RX, TX UART do SLAWE
SoftwareSerial S3(RxS3, TxS3);//Serial nazywa się S3 RX, TX Uart do PMw
Przed rozpoczęciem "rozmowy" z S1 wydaję komendę S1.begin (9600); przed S2 komendę S2.begin (9600); i przed S3 komendę S3.begin (9600);
Komendy są wydawane w pętli loop a nie jak tradycyjnie w setup.
Wcześniej robiłem takie rozwiązanie na przełącznikach tranzystorowych wykorzystując jeden UART sprzętowy. Teraz zrezygnowałem jak "odkryłem", że można inaczej. Ponadto przy wykorzystaniu UARTa sprzętowego występowały kolizje podczas wgrywania programu do Arduino uno.
To tyle w tej kwestii.