Razidargh Creative Commons License 2014.08.17 0 0 364

Sziasztok!

 

Egy mozgásérzékelőt kötöttem egy Nano-ra, s a kapott adatokat RF24 rádióval átlőni egy másik RF24-gyel felszerelt Uno-ra. A következő kódom van adó oldalon:

 


void loop()
{

  xtengely=(analogRead(xpin));
  ytengely=(analogRead(ypin));
  ztengely=(analogRead(zpin));
  helyzet=(xtengely/3+ytengely/3+ztengely/3);

  riaszt=abs(helyzet-x);
  if (riaszt > erzekenyseg)   // csak mozgás esetén küld rádiójelet
  {
    joystick[0] = 1;
    joystick[1] = riaszt;
    joystick[2] = ztengely;
    radio.write( joystick, sizeof(joystick) );
  }


  // 2 másodperces eltolással vizsgálja a helyzetet - lassú mozgásokra
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > 2000) {
    previousMillis = currentMillis;   
    riaszt=abs(longhelyzet-x);

    if (riaszt > erzekenyseg)
    {
      joystick[0] = 2;
      joystick[1] = riaszt;
      joystick[2] = ztengely;
      radio.write( joystick, sizeof(joystick) );

    }
    longhelyzet=(xtengely/3+ytengely/3+ztengely/3);
  }

  // Bejelentkezés 2 másodpercenként
  if(currentMillis - previousMillis2 > 2000) {
    previousMillis2 = currentMillis;
    joystick[0] = 3;
    joystick[1] = riaszt;
    joystick[2] = ztengely;
    radio.write( joystick, sizeof(joystick) );
  }
  x = helyzet+1;

}//--(end main loop )---

 

Az a gondom vele, hogy a mozgást simán átlövi, és annak megfelelően a vevő rendesen megkapja az adatokat. Tehát az első if lefut. A második és harmadik feltétel is lefut, de ott a rádió már nem küld jelet. A Nano-n látom felvillanni a 13. kimenethez csatlakozó ledet, ami jelzi, hogy rádiókommunikáció van. A vevő mégis csak az első feltétel teljesülése esetén fogadja az adatokat. A vevő lényes kódja:

 

      done = radio.read( joystick, sizeof(joystick) );

 

Ugyanazt a tömböt használom, a tömb minden eleme mindig integer, mégsem kapom meg a két másodpercenkénti bejelentkező jelet. A bejelentkezést néha akkor kapom meg véletlenszerűen, ha megmozgatom a szenzort, s akkor több csomag között esetleg megy egy bejelentkezés is. Van valakinek esetleg ötlete? Próbáljak más libraryt a rádiókhoz?