Witam
Proponuję zainteresować się strukturami.
Deklarujesz takie same struktury w "nadajniku" i "odbiorniku". Następnie strukturę do wysłania w nadajniku zamieniasz na string i wysyłasz przez UART. W odbiorniku nasłuchujesz i jak coś przyjdzie po UART to zapisujesz i zamieniasz na strukturę.
Deklarujesz struktury: to są moje dla przykładu w nadajniku w odbiorniku mają tylko zamienione DaneOdebrane z DaneDoWyslania
struct RamkaMala{
float WilgWew ;
float TempWew ;
byte SterRek = 1 ;
} DaneOdebrane;
struct RamkaDuza{
float CisAtm ;
float TempRek ;
float WilgNaw ;
float TempNaw ;
float PmZew ;
float PmWew ;
float WilgZew ;
float TempZew ;
} DaneDoWyslania;
deklarujesz stringi
char StringDoNadania[sizeof(DaneDoWyslania)];
char StringOdebrany[sizeof(DaneOdebrane)];
Teraz podprogramy do wysyłania i odbierania po UART programowym o nazwie np S1 i w odbiorniki i nadajniku
void writeserial_S1 ()
{
if (aktualnyczas - zapamietany_czas_wysylu_danych >= 2010UL) //tu wysyłam co 2 sekundy ale można inaczej
{
zapamietany_czas_wysylu_danych = aktualnyczas ;
memcpy(StringDoNadania,&DaneDoWyslania,sizeof(DaneDoWyslania));
S1.write(StringDoNadania,sizeof(DaneDoWyslania));
}
}
void readserial_S1 ()
{
if(S1.available()>0)
{
delay (100);
if(S1.available()==sizeof(DaneOdebrane))
{
S1.readBytes(StringOdebrany,sizeof(DaneOdebrane));
memcpy(&DaneOdebrane,StringOdebrany,sizeof(DaneOdebrane));
}
else
{
while (S1.available()> 0)
{
int czyszczenie = S1.read();
}
}
}
}
Można zrobić tak, że nadajnik nadaje rytm wymiany danych a odbiornik jak coś otrzyma to odsyła swoje.
Może trochę chaotycznie, ale może Ci się przyda
Jestem początkującym w tych tematach a seniorem w latach