Witam,
porwałem się na drugi w moim życiu projekt na arduino. Tym razem sterowanie wózka z nadajnikiem i odbiornikiem opartym o NRF24L01.
Mam pewien problem. Otóż wygląda na to, że nie za każdym razem kiedy powinien zostać wysłany pakiet danych jest on wysyłany. Wysyłam go co 70 milisekund. Sprawdziłem to tak: na monitorze portu wyświetlam sobie komunikat kiedy jest wykonywany fragment kodu przed i po wysyłce. Z reguły te dwa komunikaty dzieli około 35 milisekund (pewnie tyle czasu potrzebne jest na wysłanie danych, swoją drogą trochę długo). Jednak co jakiś czas, z reguły co około sekundę komunikat przed i po wyświetlany jest w tej samej milisekundzie więc wnioskuję, że wtedy nic nie zostało wysłane. A bardzo mi zależy żeby co te około 70 milisekund pakiet został wysłany bo odbiornik sprawdza co ile otrzymuje dane i jeśli ich nie otrzyma w określonych odstępach czasu to wyłącza silniki - a im dłuższy ten czas ustawię w odbiorniku tym większą mam bezwładność zatrzymania się wózka w razie problemów z łącznością.
Dlaczego nie za każdym razem są wysyłane dane i jak najprościej uporać się z tym problemem?
Przesyłam w sumie za każdym razem 6 bajtów. Tutaj fragment kodu odpowiadający za wysyłkę.
porwałem się na drugi w moim życiu projekt na arduino. Tym razem sterowanie wózka z nadajnikiem i odbiornikiem opartym o NRF24L01.
Mam pewien problem. Otóż wygląda na to, że nie za każdym razem kiedy powinien zostać wysłany pakiet danych jest on wysyłany. Wysyłam go co 70 milisekund. Sprawdziłem to tak: na monitorze portu wyświetlam sobie komunikat kiedy jest wykonywany fragment kodu przed i po wysyłce. Z reguły te dwa komunikaty dzieli około 35 milisekund (pewnie tyle czasu potrzebne jest na wysłanie danych, swoją drogą trochę długo). Jednak co jakiś czas, z reguły co około sekundę komunikat przed i po wyświetlany jest w tej samej milisekundzie więc wnioskuję, że wtedy nic nie zostało wysłane. A bardzo mi zależy żeby co te około 70 milisekund pakiet został wysłany bo odbiornik sprawdza co ile otrzymuje dane i jeśli ich nie otrzyma w określonych odstępach czasu to wyłącza silniki - a im dłuższy ten czas ustawię w odbiorniku tym większą mam bezwładność zatrzymania się wózka w razie problemów z łącznością.
Dlaczego nie za każdym razem są wysyłane dane i jak najprościej uporać się z tym problemem?
Przesyłam w sumie za każdym razem 6 bajtów. Tutaj fragment kodu odpowiadający za wysyłkę.
Kod:
static unsigned long timeWyslaniaPakietu = 0;
if (millis() > timeWyslaniaPakietu + 70 && (xJoystickNeutral - 25 > daneDoWyslania.xValue || xJoystickNeutral + 25 < daneDoWyslania.xValue || yJoystickNeutral - 25 > daneDoWyslania.yValue || yJoystickNeutral + 25 < daneDoWyslania.yValue || daneDoWyslania.liftValue != 0)) {
Serial.println("przed");
radio.stopListening();
radio.write (&daneDoWyslania, sizeof(daneDoWyslania));
radio.startListening();
Serial.println("po");
timeWyslaniaPakietu = millis();
}