Skocz do zawartości

I2c wzmocnienie sygnału


Pitraszek1

Pomocna odpowiedź

Nie mam dla Ciebie gotowej odpowiedzi. Co ja bym zrobił:

  1. Skęcił przewody aby była jakaś skrętka 
  2. Podłączył dwie pary przewodów. 
  3. Wziął ten program, który działa i sprawdził w dwie strony komunikację. To znaczy, że działa A->B a potem B->A (nie jednocześnie oczywiście)

Potem można spróbować wyciągnąć wnioski... 

Link do komentarza
Share on other sites

poprawiłem kod i działa


// Definiujemy strukturę
struct strukturaDanych {
  int temperatura;
  int wilgotnosc;
  int cisnienie;
  int termopara;
  int obroty;
} mojeDane;



Timer klapa;
Timer zapis;





// Definiujemy strukturę
struct strukturaDanych1 {
  int temperatura1;
  int wilgotnosc1;
  int cisnienie1;
  int termopara1;
  int obroty1;
} *mojeDane1;

uint8_t  usartBuffer[sizeof(strukturaDanych1)]   = {0};

int temperatura1 = 0; // Jakaś przykładowa zmienna
int wilgotnosc1 = 0; 
void setup() { // put your setup code here, to run once:

  Serial.begin(9600);
  Serial1.begin(9600);
   klapa.begin(1000);
zapis.begin(500);
  // Wypełniamy strukturę jakimiś danymi
  mojeDane.temperatura = 25;
  mojeDane.wilgotnosc  = 50;
  mojeDane.cisnienie   = 995;
  mojeDane.termopara   = 70;
  mojeDane.obroty      = 200;
}

void loop() { // put your main code here, to run repeatedly:
if (zapis.available()) {
  // Wysyłamy dane przez USART: Serial.write(buf, len)
  // Rzutowanie typów (uint8_t *)&mojeDane
  // powoduje, że Serial.Write() "widzi" zmienną mojeDane jako tablicę składającą się z bajtów
  Serial1.write((uint8_t *)&mojeDane, sizeof(mojeDane));

  // Krótka przerwa przed kolejnym wysłaniem danych
  zapis.restart();
  }
if (klapa.available()) {
  if (Serial1.readBytes(usartBuffer, sizeof(strukturaDanych1)))
    
    mojeDane1 = (strukturaDanych1*)usartBuffer;

    // W odbiorniku zmienna mojeDane jest zmienną wskaźnikową
    // więc aby uzyskać dostęp elementów struktury używamy innego operatora
    // jak poniżej. 
    temperatura1= mojeDane1->temperatura1;
    wilgotnosc1 = mojeDane1-> wilgotnosc1;
     Serial.println(temperatura1);
       Serial.println(wilgotnosc1 );
      klapa.restart();
  }
}
#include <Timers.h>
#include <SoftwareSerial.h>
// Odbiornik
SoftwareSerial mySerial(2,3);
// Definiujemy strukturę
struct strukturaDanych {
  int temperatura;
  int wilgotnosc;
  int cisnienie;
  int termopara;
  int obroty;
} *mojeDane;

uint8_t  usartBuffer[sizeof(strukturaDanych)]   = {0};

int temperatura = 0; // Jakaś przykładowa 

int wilgotnosc = 0; // Jakaś przykładowa
Timer klapa;
Timer zapis;


// Definiujemy strukturę
struct strukturaDanych1 {
  int temperatura1;
  int wilgotnosc1;
  int cisnienie1;
  int termopara1;
  int obroty1;
} mojeDane1;

void setup() { // put your setup code here, to run once:

  Serial.begin(9600);
  mySerial.begin(9600);
  klapa.begin(1000);
zapis.begin(500);
  // Wypełniamy strukturę jakimiś danymi
  mojeDane1.temperatura1 = 40;
  mojeDane1.wilgotnosc1  = 200;
  mojeDane1.cisnienie1   = 995;
  mojeDane1.termopara1   = 70;
  mojeDane1.obroty1      = 200;
}

void loop() { // put your main code here, to run repeatedly:
  if (zapis.available()) {
  if (mySerial.readBytes(usartBuffer, sizeof(strukturaDanych))) 
    
    mojeDane = (strukturaDanych*)usartBuffer;

    // W odbiorniku zmienna mojeDane jest zmienną wskaźnikową
    // więc aby uzyskać dostęp elementów struktury używamy innego operatora
    // jak poniżej. 
    temperatura = mojeDane->temperatura;
      wilgotnosc = mojeDane->wilgotnosc;
    Serial.println(temperatura);
    Serial.println(wilgotnosc);
      zapis.restart();
  }
if (klapa.available()) {
  mySerial.write((uint8_t *)&mojeDane1, sizeof(mojeDane1));

  // Krótka przerwa przed kolejnym wysłaniem danych
  klapa.restart();
  }
}

 

  • Lubię! 2
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.