Skocz do zawartości
belkocik

Silniki DC nie ruszaja sie (joystick shield +nrf)

Pomocna odpowiedź

Napisano (edytowany)

Czesc. Zmontowalem sobie uklad ktory bedzie sterowal silnikami: przod i tyl. Program wgrany do nadajnika i odbiornika, ladnie pieknie wszystko pokazane w monitorze portu szergowego, ze pozycje joysticka sa odczytane lecz silniki nie ruszaja sie.  Moze mi ktos wytlumaczyc dlaczego tak sie dzieje? Zasilanie 2x 18650 przetwornica wyregulowane na 6V - silniki + arduino uno/ joystick shield + uno - zasilanie z portu usb. Silniki normalne kreca sie podpiete jak na schemacie i podanie tych wartosci co w kodzie, ale bez nrfa i joysticka wiec sa sprawne oraz mostek h. Sprawdzalem tez na innym joystick shieldzie i tez tez nie dziala 😞 

Czasami mi w terminalu takie cos wyskakuje (zalacznik) To nie sa bledy? 

RF24 wersja 1.1.6

Kod Nadajnika (joystick shield+ uno):

#include <SPI.h>
#include "RF24.h"

#define ce   9
#define csn 10

RF24 myRadio (ce, csn);
byte addresses[][6] = {"0"};

struct package
{
  int X=1;
  int Y=1;
};


typedef struct package Package;
Package data;

void setup()  
{
  Serial.begin(115200);
  delay(100);
  myRadio.begin();  
  myRadio.setChannel(115); 
  myRadio.setPALevel(RF24_PA_MIN);
  myRadio.setDataRate( RF24_250KBPS ) ; 
  myRadio.openWritingPipe( addresses[0]);
  delay(100);
}


void loop()  
{
  myRadio.write(&data, sizeof(data)); 

  Serial.print("X:");
  Serial.print(data.X);
  Serial.print("    Y");
  Serial.println(data.Y);
  data.X = analogRead(A0);
  data.Y = analogRead(A1);
  delay(100);
      
}

Kod odbiornika (uno + silniki):

#include <SPI.h>
#include "RF24.h"

#define ce 9
#define csn 10

RF24 myRadio (ce, csn); 
struct package
{
  int X=351;
  int Y=328;
};

byte addresses[][6] = {"0"}; 
int OUT1 = 5;
int OUT2 = 6;
int OUT3 = 7;
int OUT4 = 8;

typedef struct package Package;
Package data;


void setup()   
{
  Serial.begin(115200);
  delay(1000);
  
  myRadio.begin(); 
  myRadio.setChannel(115); 
  myRadio.setPALevel(RF24_PA_MAX);
  myRadio.setDataRate( RF24_250KBPS ) ; 
  myRadio.openReadingPipe(1, addresses[0]);
  myRadio.startListening();
  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);

  
}


void loop()  
{
  if ( myRadio.available()) 
  {
    while (myRadio.available())
    {
      myRadio.read( &data, sizeof(data) );
    }
    Serial.print("X:");
    Serial.print(data.X);
    Serial.print("      Y");
    Serial.println(data.Y);
    int X = data.X;
    int Y = data.Y;

             if(Y>400){
              digitalWrite(OUT1,1);
              digitalWrite(OUT2,0);
              digitalWrite(OUT3,0);
              digitalWrite(OUT4,1);
            }else if(Y<200){
              digitalWrite(OUT1,0);
              digitalWrite(OUT2,1);
              digitalWrite(OUT3,1);
              digitalWrite(OUT4,0);
            }
            else{
              digitalWrite(OUT1,0);
              digitalWrite(OUT2,0);
              digitalWrite(OUT3,0);
              digitalWrite(OUT4,0);
              }


  }
}

 

eh_bb.png

66723710_637815310065441_5478770629077368832_n.jpg

Bez tytułu.png

66393856_363661097866453_7532000923413905408_n.jpg

wgrywanie do odbiornika.png

term1.png

term2.png

term3.png

term4.png

narzedzia.png

Edytowano przez belkocik

Udostępnij ten post


Link to post
Share on other sites

Chwila moment...

Gdzie na tym czymś co uznałeś pewnie za schemat (czyli ładnym kolorowym obrazku z Fritzinga) masz jakąś przetwornicę? Mnie np. nie interesuje  to, że potrafisz ładnie narysować z natury jak wygląda Arduino czy bateryjka ale gdzie te zasilanie podłączyłeś (bo pewnie źle)... jeśli nie potrafisz wysłać schematu (tam we Fritzingu jest taki przełącznik na widok schematu) to machnij to ołówkiem na kartce i zrób zdjęcie komórką - da nam to dużo więcej, a obrazek płytki stykowej kunsztownie w kolorach namalowany powieś sobie na ścianie.

W programie masz zadeklarowane, że silniki mają się ruszać jak dla Y < 200 lub Y > 400. Czy wartość Y=328 spełnia ten warunek? Bo innych nie pokazałeś... nie wiem, czy te 328 to wynik przesłanego przez radio odczytu joysticka czy może pozostałość po inicjalizacji... czy w ogóle cokolwiek jest czytane...

Jeśli nie stosujesz zmiennej długości pakietów to daj dla pewności w setup (zarówno w odbiorniku jak i w nadajniku) coś w stylu:

radio.setPayloadSize(sizeof(Package));

Tak przy okazji w ten sposób się nie robi inicjalizacji - nie wiem dlaczego kompilator nie wyrzucił ostrzeżenia. Powinno być co podobnego do:

typedef struct {
  int X;
  int Y;
} Package;

Package data = {351, 328};

I jeszcze jedno: jak przesyłasz wyniki z terminala to je skopiuj i wklej na forum używając funkcji "Wstaw kod" w treści, zamiast wklejać screenshoty jako załączniki, bo przede wszystkim nie każdy lubi czytanie z obrazków (szczególnie na komórkach nic nie widać), w większości przypadków połowa (ta ważniejsza) jest ucięta, nie wiadomo do którego zdjęcia odnosi się określenie "w załączniku"  i w efekcie możesz w zamian dostać zdjęcie odpowiedzi zamiast odpowiedzi.

Jeszcze przy okazji: nieprzypadkowo w każdym praktycznie przykładzie z nRF24 masz wywołanie radio.printDetails() - przynajmniej wiesz, że radio działa (albo nie) prawidłowo, a wyrzucić z gotowego kodu zawsze możesz.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Na wstepie dziekuje, ze sie zainteresowales tematem bo to dla mnie bardzo wazne 🙂 W zalaczniku jest schemat. Mam nadzieje ze jest czytelny. Zasilanie 6V z jest wpiete do gniazda zasilajacego 2.1/5.5 w arduino.

8 godzin temu, ethanak napisał:

W programie masz zadeklarowane, że silniki mają się ruszać jak dla Y < 200 lub Y > 400. Czy wartość Y=328 spełnia ten warunek? Bo innych nie pokazałeś... nie wiem, czy te 328 to wynik przesłanego przez radio odczytu joysticka czy może pozostałość po inicjalizacji... czy w ogóle cokolwiek jest czytane...

Czyta pozycje joysticka jak przechylam w tyl i przod. Jest warunek, jesli zadnych z tych nie jest spelniony to silniki nie kreca sie (jak joystick jest na srodku): 

  else{
              digitalWrite(OUT1,0);
              digitalWrite(OUT2,0);
              digitalWrite(OUT3,0);
              digitalWrite(OUT4,0);
              }

Czy raczej zrobic to tak?:

if ( 300 < Y < 350)
{
   
 digitalWrite(OUT1,0);
 digitalWrite(OUT2,0);
 digitalWrite(OUT3,0);
 digitalWrite(OUT4,0);
             
}

No coz ide dalej testowac.

schemat_schem.png

Edytowano przez belkocik

Udostępnij ten post


Link to post
Share on other sites

Tak na szybko: Arduino wymaga co najmniej 7V na gnieździe zasilania. Możesz akumulatory podłączyć bezpośrednio, a przetwornicą zasilać tylko silniki.

Kod odbiornika (przynajmniej ten rosochaty if) jest w porządku, nie musisz nic kombinować, tyle że pokazałeś nam sytuację kiedy silniki powinny być zatrzymane... coś pisałem o ślicznych fotkach z ekranu? Chciałbym wiedzieć co się dzieje kiedy joystick jest w innej pozycjo niż na środku - bo tu akurat wszystko działa prawidłowo.

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
33 minuty temu, ethanak napisał:

Tak na szybko: Arduino wymaga co najmniej 7V na gnieździe zasilania. Możesz akumulatory podłączyć bezpośrednio, a przetwornicą zasilać tylko silniki.

Kod odbiornika (przynajmniej ten rosochaty if) jest w porządku, nie musisz nic kombinować, tyle że pokazałeś nam sytuację kiedy silniki powinny być zatrzymane... coś pisałem o ślicznych fotkach z ekranu? Chciałbym wiedzieć co się dzieje kiedy joystick jest w innej pozycjo niż na środku - bo tu akurat wszystko działa prawidłowo.

 

Przechylam joystick w osi y na przod -> ponad 600 = 0 reakcji ze strony silnikow, tak samo w druga strone. Ide pokombinowac z tym zasilaniem.

https://drive.google.com/open?id=1-HuTl9_AoYUIMBWx9DNJNppB8HiJU4-C

Czasami cos przycina i te wartosci powoli sie pojawiaja gdy zmieniam polozenie joysticka.

Edytowano przez belkocik

Udostępnij ten post


Link to post
Share on other sites
46 minut temu, belkocik napisał:

if ( 300 < Y < 350) {

Takie konstrukcje w C++ (a więc i w Arduino) oznaczają co innego niż w Pythonie. Napisz to jako dwa warunki.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Podziel sobie problem na cztery etapy.

Pierwszy: przesyłanie danych. Nie podłączasz do Arduino nic poza radyjkiem, zasilasz z USB, doprowadzasz do tego, że odbiornik (jakiś print na serialu) będzie prawidłowo reagował na joystick w nadajniku.

Drugi: Napisz kod sterujący silnikami (to już podobno masz).

Trzeci: podłącz prawidłowo zasilanie.

Czwarty: połącz to wszystko do kupy.

@deshipu: to nie jest konstrukcja Pythona tylko Icona, jeden z ostatnich iconismów w Pythonie, niestety mimo podobnego wyglądu nie działa tak jak w oryginale, lepiej tego nie stosować.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
17 minut temu, ethanak napisał:

@deshipu: to nie jest konstrukcja Pythona tylko Icona, jeden z ostatnich iconismów w Pythonie, niestety mimo podobnego wyglądu nie działa tak jak w oryginale, lepiej tego nie stosować.

Masz rację, autor na pewno nauczył się tej konstrukcji z Icona.

Udostępnij ten post


Link to post
Share on other sites

Dokładnie tak. Konstrukcja typu a<b<c powstała właśnie z Iconowego GDE, chodziło o to, aby w Pythonie było to dopuszczalne.

Różnica jest taka, że wyrażenie a<b albo zwraca prawą stronę, albo pada. Jeśli padnie - to dalej nic się nie robi. Jeśli nie - sprawdzamy, czy prawdziwe jest wyrażenie b < c (bo b jest wynikiem działania a<b).

W Pythonie powstała jakaś dziwaczna konstrukcja...

Trochę szacunku i poznania języków które były przed Pythonem na pewno by Ci nie zaszkodziło. Proponuję zacząć od Snobol4 (bo to był prekursor dzisiejszych języków przeznaczonych do operacjach na tekstach, z regexpami włącznie).

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Jestem pewien, że twój post bardzo pomoże autorowi. Mi już bardzo pomógł. Wielkie dzięki!

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Zaczalem od komunikacje pomiedzy dwoma nrfami. Wgralem kod do sprawdzania z robotbloga (nie wiem czy moge kopiowac, ale skopiowalem zeby nie trzeba bylo wchodzic):

kod nadajnika

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

#define CE_PIN   9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1

const uint64_t pipe = 0xE8E8F0F0E1LL;

RF24 radio(CE_PIN, CSN_PIN);
int joystick[6];
int upbut = 2;
int rightbut = 3;
int downbut = 4;
int leftbut = 5;

void setup()  
{
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
 
   pinMode(upbut,INPUT);
  digitalWrite(upbut,LOW);
  pinMode(rightbut,INPUT);
  digitalWrite(upbut,LOW);
   pinMode(downbut,INPUT);
  digitalWrite(downbut,LOW);
  pinMode(leftbut,INPUT);
  digitalWrite(leftbut,LOW);
}


void loop()  
{
  joystick[0] = analogRead(JOYSTICK_X);
  joystick[1] = analogRead(JOYSTICK_Y);
  joystick[2] = digitalRead(upbut);
  joystick[3] = digitalRead(rightbut);
  joystick[4] = digitalRead(downbut);
  joystick[5] = digitalRead(leftbut);
  
  radio.write( joystick, sizeof(joystick) );


      Serial.print("X = ");
      
      Serial.print(analogRead(JOYSTICK_X));
      Serial.print(" Y = ");  
      
      Serial.print(analogRead(JOYSTICK_Y));
        Serial.print(" Y = ");  
      Serial.print(" Up = "); 
      Serial.print(digitalRead(upbut));
      Serial.print(" Right = "); 
      Serial.print(digitalRead(rightbut));
      Serial.print(" Down = "); 
      Serial.print(digitalRead(downbut));
      Serial.print(" Left = "); 
      Serial.println(digitalRead(leftbut));
      
}

kod odbiornika:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10

const uint64_t pipe = 0xE8E8F0F0E1LL; 
RF24 radio(CE_PIN, CSN_PIN); 
int joystick[6];  

void setup()   
{
  Serial.begin(9600);
  delay(1000);
  Serial.println("START");
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();;
}


void loop()  
{
  if ( radio.available() )
  {
    bool done = false;
    while (!done)
    {
      done = radio.read( joystick, sizeof(joystick) );
      int joystickX = map(joystick[0],0,1023,0,180); 
      int joystickY = map(joystick[1],0,1023,0,180);
      
      int upbut = joystick[2];
      int rightbut = joystick[3];
      int downbut = joystick[4];
      int lefttbut = joystick[5];
      
      Serial.print("X = ");
      
      Serial.print(joystickX);
      Serial.print(" Y = ");  
      
      Serial.print(joystickY);
      Serial.print(" Up = ");
      
      Serial.print(joystick[2]);
      Serial.print(" Right = ");  
      
      Serial.print(joystick[3]);
      Serial.print(" Down = ");
      
      Serial.print(joystick[4]);
      Serial.print(" Left = ");  
      
      Serial.println(joystick[5]);
     
     delay(15); 
    }
  }
  else
  {    
      Serial.println("Nie znaleziono nadajnika");
  }

}

Do tego zmienilem linijke:

void loop()  
{
  if ( radio.available() )
  {
    bool done = false;
    while (!done)
    {
      done = radio.read( joystick, sizeof(joystick) );
      int joystickX = map(joystick[0],0,1023,0,180); 
      int joystickY = map(joystick[1],0,1023,0,180);
      
     (...)

na 

void loop()  
{
  if ( radio.available() )
  {
    
      radio.read( joystick, sizeof(joystick) );
    
      int joystickX = map(joystick[0],0,1023,0,180); 
      int joystickY = map(joystick[1],0,1023,0,180);
      
     (...)

bo nie chcialo sie kompilowac i to rozwiazanie znalazlem w sieci: https://forum.arduino.cc/index.php?topic=302380.0

I pozniej w monitorze portu szeregowego nadajnika pokazuje mi te wspolrzedne joysticka i zmieniaja sie przy zmianie polozenia joysticka oraz stany na przyciskach.

Z drugiej strony w monitorze portu szeregowego odbiornika wyskakuje ze "nie znaleziono nadajnika" i jak ruszam to nie pokazuje wspolrzednych joysticka i stanow na przyciskach podczas klikania jak w przypadku nadajnika. Juz nie wiem co robic kompletnie. 

Edytowano przez belkocik

Udostępnij ten post


Link to post
Share on other sites

"Nie znaleziono nadajnika" w Twoim przypadku oznacza, że próbowałeś coś odebrać i nie wyszło bo nadajnik akurat w tym momencie nie nadawał.

Dałem Ci przykład z ustaleniem rozmiaru przesyłanego pakietu - nie chciałeś go, to Twoja sprawa. Ale więcej nie proś.

@deshipu wybacz, że nie uważam Ciebie za "Omnipotens, Omnisapiens et Opera Omnia" (mam nadzieję że wiesz skąd to cytat) ale trochę pokory. Być może mój post nie pomógł koledze (przynajmniej ten o iconismach) ale Twój tym bardziej.

Zadzwoń sobie do Rossuma i zapytaj skąd się ta konstrukcja wzięła, może jak będzie miał dobry humor to Ci wyjaśni. A teraz marsz do książek, jak chcesz być postrzegany jako znawca Pythona to poczytaj sobie skąd on się wziął, jak poczytasz to się zgłoś. Nie wcześniej.

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Tresc z monitoru portu szereowego:

19:11:45.517 -> CheckConnection Starting
19:11:45.517 -> 
19:11:45.517 -> FIRST WITH THE DEFAULT ADDRESSES after power on
19:11:45.550 ->   Note that RF24 does NOT reset when Arduino resets - only when power is removed
19:11:45.618 ->   If the numbers are mostly 0x00 or 0xff it means that the Arduino is not
19:11:45.721 ->      communicating with the nRF24
19:11:45.755 -> 
19:11:45.755 -> STATUS		 = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0
19:11:45.821 -> RX_ADDR_P0-1	 = 0x0000000000 0x0000000000
19:11:45.855 -> RX_ADDR_P2-5	 = 0x00 0x00 0x00 0xff
19:11:45.889 -> TX_ADDR		 = 0xffffffffff
19:11:45.924 -> RX_PW_P0-6	 = 0xff 0x00 0x00 0x00 0x00 0x00
19:11:45.992 -> EN_AA		 = 0x00
19:11:45.992 -> EN_RXADDR	 = 0x00
19:11:46.026 -> RF_CH		 = 0x00
19:11:46.026 -> RF_SETUP	 = 0x00
19:11:46.060 -> CONFIG		 = 0x00
19:11:46.060 -> DYNPD/FEATURE	 = 0x00 0x00
19:11:46.095 -> Data Rate	 = 1MBPS
19:11:46.129 -> Model		 = nRF24L01
19:11:46.129 -> CRC Length	 = Disabled
19:11:46.164 -> PA Power	 = PA_MIN
19:11:46.199 -> 
19:11:46.199 -> 
19:11:46.199 -> AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
19:11:46.268 ->  and 250KBPS data rate
19:11:46.268 -> 
19:11:46.268 -> STATUS		 = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0
19:11:46.336 -> RX_ADDR_P0-1	 = 0x0000000000 0x0000000000
19:11:46.403 -> RX_ADDR_P2-5	 = 0x00 0x00 0x00 0xff
19:11:46.436 -> TX_ADDR		 = 0xffffffffff
19:11:46.469 -> RX_PW_P0-6	 = 0xff 0x00 0x00 0x00 0x00 0x00
19:11:46.503 -> EN_AA		 = 0x00
19:11:46.536 -> EN_RXADDR	 = 0x00
19:11:46.536 -> RF_CH		 = 0x00
19:11:46.571 -> RF_SETUP	 = 0x00
19:11:46.571 -> CONFIG		 = 0x00
19:11:46.605 -> DYNPD/FEATURE	 = 0x00 0x00
19:11:46.638 -> Data Rate	 = 1MBPS
19:11:46.638 -> Model		 = nRF24L01
19:11:46.672 -> CRC Length	 = Disabled
19:11:46.705 -> PA Power	 = PA_MIN
19:11:46.705 -> 
19:11:46.705 -> 

po wgraniu tego kodu do sprawdzania polaczenia pomiedzy arduino a nrfem ( w tym przypadku joystick shield + arduino i nrf. Jest duzo tych 0x00 wiec cos jest nie tak.



// 18 Mar 2018 - simple program to verify connection between Arduino
//      and nRF24L01+
//  This program does NOT attempt any communication with another nRF24

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#include <printf.h>

#define CE_PIN   9
#define CSN_PIN 10

const byte thisSlaveAddress[5] = {'R','x','A','A','A'};

RF24 radio(CE_PIN, CSN_PIN);

char dataReceived[10]; // this must match dataToSend in the TX
bool newData = false;


void setup() {
    Serial.begin(9600);
    printf_begin();

    Serial.println("CheckConnection Starting");
    Serial.println();
    Serial.println("FIRST WITH THE DEFAULT ADDRESSES after power on");
    Serial.println("  Note that RF24 does NOT reset when Arduino resets - only when power is removed");
    Serial.println("  If the numbers are mostly 0x00 or 0xff it means that the Arduino is not");
    Serial.println("     communicating with the nRF24");
    Serial.println();
    radio.begin();
    radio.printDetails();
    Serial.println();
    Serial.println();
    Serial.println("AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1");
    Serial.println(" and 250KBPS data rate");
    Serial.println();
    radio.openReadingPipe(1, thisSlaveAddress);
    radio.setDataRate( RF24_250KBPS );
    radio.printDetails();
    Serial.println();
    Serial.println();
}


void loop() {

}

 

A tutaj sam nrf i arduino:

19:17:14.033 -> CheckConnection Starting
19:17:14.033 -> 
19:17:14.033 -> FIRST WITH THE DEFAULT ADDRESSES after power on
19:17:14.101 ->   Note that RF24 does NOT reset when Arduino resets - only when power is removed
19:17:14.168 ->   If the numbers are mostly 0x00 or 0xff it means that the Arduino is not
19:17:14.271 ->      communicating with the nRF24
19:17:14.304 -> 
19:17:14.304 -> STATUS		 = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
19:17:14.372 -> RX_ADDR_P0-1	 = 0x3130303030 0x4141417852
19:17:14.405 -> RX_ADDR_P2-5	 = 0xc3 0xc4 0xc5 0xc6
19:17:14.438 -> TX_ADDR		 = 0xe7e7e7e7e7
19:17:14.472 -> RX_PW_P0-6	 = 0x20 0x20 0x00 0x00 0x00 0x00
19:17:14.539 -> EN_AA		 = 0x3f
19:17:14.539 -> EN_RXADDR	 = 0x02
19:17:14.572 -> RF_CH		 = 0x4c
19:17:14.572 -> RF_SETUP	 = 0x01
19:17:14.606 -> CONFIG		 = 0x0e
19:17:14.606 -> DYNPD/FEATURE	 = 0x00 0x00
19:17:14.640 -> Data Rate	 = 1MBPS
19:17:14.674 -> Model		 = nRF24L01+
19:17:14.674 -> CRC Length	 = 16 bits
19:17:14.674 -> PA Power	 = PA_MIN
19:17:14.708 -> 
19:17:14.708 -> 
19:17:14.708 -> AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
19:17:14.775 ->  and 250KBPS data rate
19:17:14.775 -> 
19:17:14.775 -> STATUS		 = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
19:17:14.842 -> RX_ADDR_P0-1	 = 0x3130303030 0x4141417852
19:17:14.911 -> RX_ADDR_P2-5	 = 0xc3 0xc4 0xc5 0xc6
19:17:14.946 -> TX_ADDR		 = 0xe7e7e7e7e7
19:17:14.981 -> RX_PW_P0-6	 = 0x20 0x20 0x00 0x00 0x00 0x00
19:17:15.016 -> EN_AA		 = 0x3f
19:17:15.051 -> EN_RXADDR	 = 0x02
19:17:15.051 -> RF_CH		 = 0x4c
19:17:15.086 -> RF_SETUP	 = 0x21
19:17:15.086 -> CONFIG		 = 0x0e
19:17:15.121 -> DYNPD/FEATURE	 = 0x00 0x00
19:17:15.154 -> Data Rate	 = 250KBPS
19:17:15.154 -> Model		 = nRF24L01+
19:17:15.187 -> CRC Length	 = 16 bits
19:17:15.221 -> PA Power	 = PA_MIN
19:17:15.221 -> 
19:17:15.221 -> 

EDIT: Zmienilem joystick shield na inny bo mam drugi i przesyla dane (wczesniej zrobiilem ten test i nie bylo duzo tych 0x00. Boze ale mam przeboje.

Wszystko dziala tak jak nalezy - winny byl joystick shield. Na cale szczescie mialem zapasowy.

Edytowano przez belkocik

Udostępnij ten post


Link to post
Share on other sites

Fajnie że działa!

Co do tych zer: w praktyce moduł radiowy albo działa, albo nie jest wykryty. Wystarczy spojrzeć na "Model" - jeśli jest nRF24L01+ (tak, z plusem na końcu) to znaczy że został wykryty. To samo RX_ADDR i TX_ADDR - mają się zgadzać z tym co podałeś i nie trzeba dalej analizować wyników printDetails() bo na tym etapie są mało interesujące 🙂

 

 

  • Pomogłeś! 1

Udostępnij ten post


Link to post
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!

Gość
Napisz odpowiedź...

×   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...