Razidargh Creative Commons License 2014.08.18 0 0 375

Megtaláltam a megoldást!

Nézegettem a nagy Arduino fórumon mások kódját, és sok ember tett delay(20)-at a rádióadás után, hogy ne zavarodjon meg a rádiójuk. Ezt beszúrtam mindhárom feltételem rádióadása után, és az lett az eredmény, hogy egy kumma rádióadás nem ment át. Abszolút süket volt a vétel. Ezen berágtam, és delay helyett megtöbbszöröztem a rádióadást így:

 

void loop()
{

  xtengely=(analogRead(xpin));
  ytengely=(analogRead(ypin));
  ztengely=(analogRead(zpin));
  helyzet=(xtengely/3+ytengely/3+ztengely/3);
  unsigned long currentMillis = millis();
  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;
    serialprinter (joystick[0],joystick[1],joystick[2]);
    radio.write( joystick, sizeof(joystick) );
    radio.write( joystick, sizeof(joystick) );
    radio.write( joystick, sizeof(joystick) );

  }


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

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



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

  // Bejelentkezés 5 másodpercenként
  else if(currentMillis - previousMillis2 > 5000) {
    previousMillis2 = currentMillis;
    joystick[0] = 3;
    joystick[1] = riaszt;
    joystick[2] = ztengely;
    serialprinter (joystick[0],joystick[1],joystick[2]);
    radio.write( joystick, sizeof(joystick) );
    radio.write( joystick, sizeof(joystick) );
    radio.write( joystick, sizeof(joystick) );

  }
 
  x = helyzet+1;

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

/*-----( Declare User-written Functions )-----*/

void serialprinter(int x, int y, int z) {
      Serial.print("Uzenet = ");
      Serial.print(x);
      Serial.print(" parameter = ");      
      Serial.print(y);
      Serial.print(" # = ");      
      Serial.println(z);
}

 

 

Láss csodát, minden csomagom átmegy hibátlanul!