![]() |
|
Arduino Nano Every i XBee Pro - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Arduino Nano Every i XBee Pro (/watek-arduino-nano-every-i-xbee-pro) |
Arduino Nano Every i XBee Pro - Truck - 07-02-2025 Serdecznie witam, Podłączyłem do Arduino Nano Every moduł XBee Pro. Jak wskazać podczas inicjacji tego modułu, że pracuje on na Serial1 a nie Serial? Dziękuję za pomoc. RE: Arduino Nano Every i XBee Pro - kaczakat - 07-02-2025 Opis problemu jest niekompletny, jaki schemat, kod, biblioteka i skąd. W jednej bibliotece może to się robi inaczej niż w innej, trudno zgadnąć co tam masz. RE: Arduino Nano Every i XBee Pro - Truck - 08-02-2025 (07-02-2025, 20:48)kaczakat napisał(a): Opis problemu jest niekompletny, jaki schemat, kod, biblioteka i skąd. W jednej bibliotece może to się robi inaczej niż w innej, trudno zgadnąć co tam masz.Używam biblioteki XBee-Arduino library by Andrew Rapp z menadżera bibliotek Poniżej kod: #include "XBee.h" // biblioteka XBee XBee xbee = XBee(); XBeeResponse response = XBeeResponse(); Rx16Response rx = Rx16Response(); uint8_t payload[10]; // zmienna hex na dane do wysĹ‚ania uint16_t addr16 = 0x0000; Tx16Request zbTx = Tx16Request(addr16, payload, sizeof(payload)); void setup() { // put your setup code here, to run once: XBee xbee = XBee(); xbee.begin(57600); // inicjalizacja XBee Serial1.begin(57600); // inicjalizacja XBee payload[0] = 'O'; payload[1] = 'K'; payload[2] = ' '; zbTx = Tx16Request(addr16, payload, 3); xbee.send(zbTx); // wysylanie potwierdzenia } void loop() { // put your main code here, to run repeatedly: } RE: Arduino Nano Every i XBee Pro - Truck - 08-02-2025 Udało mi się uruchomić wysyłanie danych. Rozbudowałem program o odbiór danych (listing poniżej). Wysyłanie danych działa, sygnał z modułu XBee dochodzi do wejścia portu Serial1, ale program nie odbiera danych. #include <XBee.h> XBee xbee = XBee(); XBeeResponse response = XBeeResponse(); // create reusable response objects for responses we expect to handle ZBRxResponse rx = ZBRxResponse(); ModemStatusResponse msr = ModemStatusResponse(); //Rx16Response rx = Rx16Response(); uint8_t payload[20]; // zmienna hex na dane do wysĹ‚ania uint16_t addr16 = 0x0000; Tx16Request zbTx = Tx16Request(addr16, payload, sizeof(payload)); int statusLed = 13; int errorLed = 13; int dataLed = 13; void flashLed(int pin, int times, int wait) { for (int i = 0; i < times; i++) { digitalWrite(pin, HIGH); delay(wait); digitalWrite(pin, LOW); if (i + 1 < times) { delay(wait); } } } void setup() { pinMode(statusLed, OUTPUT); pinMode(errorLed, OUTPUT); pinMode(dataLed, OUTPUT); XBee xbee = XBee(); // Start the serial port Serial1.begin(57600); // Tell XBee to use Hardware Serial. It's also possible to use SoftwareSerial xbee.setSerial(Serial1); Serial.begin(9600); Serial.println("Start"); flashLed(statusLed, 3, 50); addr16 = 0; payload[0] = 'O'; payload[1] = 'K'; payload[2] = '!'; zbTx = Tx16Request(addr16, payload, 3); xbee.send(zbTx); // wysylanie potwierdzenia } // continuously reads packets, looking for ZB Receive or Modem Status void loop() { xbee.readPacket(); // Serial.println("readPacket"); if (xbee.getResponse().isAvailable()) { // got something Serial.println("isAvailable"); if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) { // got a zb rx packet // now fill our zb rx class xbee.getResponse().getZBRxResponse(rx); Serial.println("Dane"); // set dataLed PWM to value of the first byte in the data analogWrite(dataLed, rx.getData(0)); } } } RE: Arduino Nano Every i XBee Pro - kaczakat - 09-02-2025 Przykład tak nie wygląda, zerknij do przykładów dołączonych do biblioteki, jeden jest pokazany np. tak: Kod: void setup() {nie robi tu autor begin dla serial wykorzystywanego dla Xbee. Robi begin dla serial o nazwie nss, bo Serial oddał do Xbee. RE: Arduino Nano Every i XBee Pro - Truck - 09-02-2025 Dziękuję za pomoc. Układ zadziałał. |