Keresés

Részletes keresés

Prof Creative Commons License 2014.08.30 0 0 390

Az alap DS1307 eleve rohadt pontatlan, erre még rátesz egy lapáttal, hogy rossz minőségű (vagyis pontatlan) kristályt tesznek mellé és rosszul méretezett ellenállásokkal rakják körbe. Leveleztem erről egyszer egy emberrel, majd visszakeresem.

DS3231 eddig bevált, de a pontosságát ennyire még nem mértem (az biztos, hogy napi 20 mp alatt van, sokkal).

Előzmény: vfp (389)
vfp Creative Commons License 2014.08.28 0 0 389

Sziasztok!

 

Szerintem az eredeti kérdés az volt, hogy a PC-ről le lehet-e kérdezni az időt (ha már úgy is rá van dugva). Gondolom a soros monitoron keresztül.

 

Én erre nem tudok egyszerű megoldást.

 

Az RTC-vel nekem annyi gondom volt, hogy mindig sietet, sokat. 3 RTC-t próbáltam (ds1307), kb. állandó szoba hőmérsékleten, és kb. mindegyik ugyanúgy járt. További érdekesség, hogy ha az arduino ki volt kapcsolva, akkor kevesebbet, ha ment az arduino akkor többet. (napi 20mp-t én soknak érzek) (két RTC modul és egy data logger shield, de ezen is DS1307 van)

 

Itt megakadtam, és kitört a jó idő és az Arduino félre lett téve. Most csak 2 helyen mér hőmérsékletet és naplozza a thingspeak-ra. Majd ha újra beszorulok a szobába, akkor nekilátok újra.

Előzmény: Razidargh (388)
Razidargh Creative Commons License 2014.08.28 0 0 388

Prof egy kicsit misztikusan fejezte ki magát, nem gondolt bele, hogy olyan ember tette fel a kérdést, aki nem olvasott egyéb Arduino fórumot, könyveket, és még nem böngészett órákig ebajos kínálatokat.

Tehát az óra (RTC=Real Time Clock) modul valahogy így néz ki:

Van egy kis gombelem benne, hogy akkor is tárolja az időt, amikor az Arduino alszik, rebootol vagy ki van kapcsolva. Van rajta IRQ, ami roppant hasznos, ha szabott időben alvásból fel kell ébreszteni az Arduino-t (nem mindegy, hogy üresjáratban 1 mA-t vagy 16 mA-t fogyaszt az egység). Kínában 2 dolcsi körül van darabja.

Itt kapható például: http://gyujtemeny.vatera.hu/makett_modell/modell_alkatreszek/arduino_i2c_rtc_ds1307_at24c32_clock_modul_avr_arm_1963347116.html

Itt a programozása: https://www.sparkyswidgets.com/portfolio-item/arduino-rtc-tutorial/

Prof Creative Commons License 2014.08.25 0 0 387

Igen, jó a meglátás.

Viszont a legtöbb arduino panelen, különösen az óccó kínai másolatokon durva varianciák vannak a kristályokkal, ezért roppant pontatlanok (15 perc alatt simán összehoz 10-20 mp eltérést a valós időhöz képest).

Megfelelő pontosságú időméréshez én inkább valamilyen RTC-t javaslok, inkább a jobbik fajtából.

Előzmény: alfredo223 (385)
John Zero Creative Commons License 2014.08.25 0 0 386

Keresd meg és olvasd el a GPS modul datasheet-jét.

 

Például ez küldi az aktív műholdak listáját is, pozíció pontosságot, stb.:

 

http://cdn.sparkfun.com/datasheets/GPS/EM506_um.pdf

Ld. GSA - GNSS DOP and Active Satellites

Előzmény: Fergabor1 (384)
alfredo223 Creative Commons License 2014.08.24 0 0 385

Hello, szerintem az idő tartományt tudod ilyen formátumba átkonvertálni, ugyanis tulajdonképpen a vezérlő csak számolja az időt, valamitől kezdve (milisekundumban), ha ebből napot percet órát akarsz akkor azt konvertálja át, szóval mint a rendes óránál először be kell állítani, hogy hány óra hány perc van, és ehhez adja hozzá a saját kis számolását 24 óránként újrakezdve. Van egy ilyen parancs h millis (50 nap után automatikusan újra kezdi 0-tól)

 

http://arduino.cc/en/Reference/millis

 

Ezzel próbálj kezdeni valamit! Szerintem... Az biztos, hogy nem tárol semmi ilyesmi adatot magában.

Előzmény: Tomizom (383)
Fergabor1 Creative Commons License 2014.08.24 0 0 384

Arduino GPS module beszerzését, programozását tervezem. Az eszköz célja a bejárt helyek pozíciójának naplózása.

Sok példaprogramot átnéztem, és egy feltételre nem találtam választ, ebben kérem hozzáértők segítségét:

Hogyan lehet szoftveresen meggyőződni az eszköz állapotáról, azaz arról, hogy sikerült-e legalább 4 szatellit adását fognia, és így készen áll a pozíció naplózására. Az eszköz olyan helyre lesz beépítve, hogy az szemmel nem lehet ellenőrizni, így vizuális jelzése haszontalan (pl. villogó led). Csak olyan programozási függvény jöhet szóba, amelyik "igaz" értéket ad vissza, vagy legalábbis logikaira konvertálható értéket (pl. a fogott szatellitek számát).

 

Tomizom Creative Commons License 2014.08.23 0 0 383

Most már kezd idegesíteni, hogy mennyire béna vagyok. Az arduinoval, valahogy le lehet kérdezni a pontos időt? Az alap felállás össze van kötve az arduino meg a pc, és serial monitorra, ki szettném íratni a a pontos időt.

 

 

Eddig ezzel szenvedtem http://playground.arduino.cc/code/time de nem igazán működik, én rontottam el valamit, vagy van valami más megoldás is?

John Zero Creative Commons License 2014.08.21 0 0 382

Nálam a központ az erősítős változat, de a többi (node-ok) a sima chip antennás változatok. Amúgy tök ugyanez az NRF24L01+

 

Előzmény: Razidargh (379)
Tomizom Creative Commons License 2014.08.21 0 0 381

Köszi, igen kicsit több a munka veled, de igazából annyira nem fontos, össze hozom, valahogy csak kíváncsi voltam, hogy meglehet mert ha igen akkor megépítem, mert nekem az arduino, saját magam fejlesztésére használom, tanuljak belőle.

És még egyszer köszi a választ.

Előzmény: Razidargh (380)
Razidargh Creative Commons License 2014.08.21 0 0 380

Szerintem szopás van az ilyen LCD kijelzőkkel. Persze meg lehet csinálni, de a kelleténél több forrasztással jár. Itt a szükséges kapcsolási rajz és a kód, ami neked kell:

http://arduino.cc/en/Tutorial/LiquidCrystalDisplay

 

Nekem ilyen van, kinézetre ugyanaz, de a nehezét már elvégezték helyettem, és az Arduinonak csak 2 pinjét foglalja 6 helyett:

http://www.ebay.com/itm/New-Blue-IIC-I2C-TWI-1602-16x2-Serial-LCD-Module-Display-for-Arduino-/221439853893

Előzmény: Tomizom (377)
Razidargh Creative Commons License 2014.08.21 0 0 379

Ma tesztelem a hatótávot falakon keresztül, mert nemrég kifogytam a 9V elemekből. Ezek a rádiók nagyon le tudják zabálni folyamatos üzemmódban. Nézted a linket, hogy milyen rádiót használok? Neked is az erősítős változat van? Az NRF24L01+PA+LNA közvetlen rálátással 1 km-ig garantálja az átvitelt.

Előzmény: John Zero (378)
John Zero Creative Commons License 2014.08.21 0 0 378

Nekem is az a tapasztalatom, hogy 250 KBps-en sokkal jobb a hatótávolság, és az is bőven elég (nekem). Milyen messzire kellett átvinni a jelet? Szobán belül?

Nekem 250 kbps-el két falat és 5-10 métert átvisz, bár a másik irányba 3 falat már nem.

Előzmény: Razidargh (376)
Tomizom Creative Commons License 2014.08.21 0 0 377

Nemrég jutottam, hozzá egy BC1602HYPLEH típusú led panelhez, az lenne a kérdésem, hogy ezt a arduino, meg tujda-e hajtani, és ha igen, akkor egy bekötési rajz nem ártana, vagy az jó e ami az alap honlapon van led panelekhez.

 

Razidargh Creative Commons License 2014.08.19 0 0 376

A tökéletes átvitelhez a következők is hiányoztak a void setup() részből:

  radio.setRetries(15,15);
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_HIGH);

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!

Razidargh Creative Commons License 2014.08.18 0 0 374

Néztem az ACK választ, de azzal az a gondom, hogy ahhoz vételi módba kell raknom az adót is, hogy megvárja a választ. Az adó pedig elemről megy, és én nem a kis gyenge 1 mA antennateljesítményű NRF24L01+ változatot használom, hanem a 115 mA NRF24L01+PA+LNA változatot (link). Aláírom, az antenna 2 dBm, de azt még lehet javítani. A rádió elég intelligens ahhoz, hogy nem vesz fel folyamatosan ennyi áramot, csak akkor van tüske a fogyasztásban, amikor lead egy csomagot. De ha vételre kapcsolom, akkor elkezdi zabálni az elemet, Ardunino Minivel együtt 130 mA körülre ugrik a fogyasztás. A vevőegység nagyrészt hálózatról fog menni, ott nem szempont a fogyasztás.

 

Millis túlcsordulás - valóban nem szempont, hamarabb cserélek elemet.

 

Szekvenciaszám - Tudom, hogy vesznek el csomagok, a gyakorlatban négy pöckölésből hármat mutat a vevő. Az jobban aggaszt, hogy nullás csomagok is érkeznek, amikor a tömb egyik vagy az összes eleme nulla. Pedig két bitang rádióról beszélek egymástól 20 centire.

Razidargh Creative Commons License 2014.08.18 0 0 373

Köszönöm az eddigi válaszokat, de mivel még nem vagyok okosabb, közlöm a teljes kódot, hogy ne legyen félreértés.

 

/* transmit
 YourDuinoStarter Example: nRF24L01 Transmit Joystick values
 - WHAT IT DOES: Reads Analog values and transmits
 them over a nRF24L01 Radio Link to another transceiver.
 - SEE the comments after "//" on each line below
 - CONNECTIONS: nRF24L01 Modules See:
 http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
 1 - GND
 2 - VCC 3.3V !!! NOT 5V
 3 - CE to Arduino pin 9
 4 - CSN to Arduino pin 10
 5 - SCK to Arduino pin 13
 6 - MOSI to Arduino pin 11
 7 - MISO to Arduino pin 12
 8 - UNUSED
 
 Based on examples at http://www.bajdi.com/

/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10
#define xpin A3
#define ypin A2
#define zpin A1

// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[3];  // 3 element array holding Joystick readings
int erzekenyseg = 10;
int helyzet=1;
int longhelyzet=1;
int x=1;
int riaszt=1;
int increment=1;
long previousMillis = 0;
long previousMillis2 = 0;
int xtengely = 0;
int ztengely = 0;
int ytengely = 0;

void setup()   /****** SETUP: RUNS ONCE ******/
{
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
}//--(end setup )---


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;
    radio.write( joystick, sizeof(joystick) );
  }


  // 2 másodperces eltolással vizsgálja a helyzetet - lassú mozgásokra
  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 )---

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


 

====================================================

 

/*
  Receive
 - CONNECTIONS: nRF24L01 Modules See:
 http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
 1 - GND
 2 - VCC 3.3V !!! NOT 5V
 3 - CE to Arduino pin 9
 4 - CSN to Arduino pin 10
 5 - SCK to Arduino pin 13
 6 - MOSI to Arduino pin 11
 7 - MISO to Arduino pin 12
 8 - UNUSED

 Based on examples at http://www.bajdi.com/

/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

// LCD //////////////////////////////////////////////
#include "printf.h"

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// LCD kijelző inicilaizálása
#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin,BACKLIGHT_PIN,POSITIVE);  // Set the LCD I2C address

// LCD //////////////////////////////////////////////

/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10

const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe

/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[3];  // 3 element array holding Joystick readings

void setup()   /****** SETUP: RUNS ONCE ******/
{
  lcd.begin(16,2);
  lcd.clear();
  Serial.begin(9600);
  delay(1000);
  Serial.println("Nrf24L01 Receiver Starting");
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  if ( radio.available() )
  {
    // Read the data payload until we've received everything
    bool done = false;
    while (!done)
    {
      // Fetch the data payload
      done = radio.read( joystick, sizeof(joystick) );
      Serial.print("Uzenet = ");
      Serial.print(joystick[0]);
      Serial.print(" parameter = ");      
      Serial.print(joystick[1]);
      Serial.print(" # = ");      
      Serial.println(joystick[2]);

      if (joystick[0] > 0) {  // fals jelek kiszűrésére
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Msg:");
        lcd.setCursor(5,0);
        lcd.print(joystick[0]);
        lcd.setCursor(8,0);
        lcd.print("P:");
        lcd.setCursor(10,0);
        lcd.print(joystick[1]);
        lcd.setCursor(0,1);
        lcd.print(joystick[2]);
      }
    }
  }
  else
  {    
    //  Serial.println("No radio available");
  }

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

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

//*********( THE END )***********

John Zero Creative Commons License 2014.08.18 0 0 372

Ja, még egy ötlet: csinálj egy szekvenciaszámot (1,2,3,...) amit folyamatosan növelsz. Ezt küldd el a csomag elején. Így látni fogod, hogy vannak-e kieső (elveszett) csomagok! Lehet, hogy más csomag is elveszik, nem csak amit keresel.

Előzmény: Razidargh (370)
John Zero Creative Commons License 2014.08.18 0 0 371

Ha ez RF24 - NRF24L01+ akkor az már önmagában csomagokat küldő, CRC-zett, akár még ACK-zott is protokollt használ. Még automatikus újrapróbálkozást is tud.

Ez elég robusztus, ráadásul 250kbps - 1/2 mbps sebességet tud, ami szintén elég jó.

 

Nekem a tippjeim: 1. rossz felparaméterezés (bár nem valószínű) 2. vevő oldalon hibás kezelés, esetleg puffer betellik??

 

Másrészt érdemes arra is gondolni majd a jövőben, hogy a millis() túlcsordul, bár ez csak 49 nap után történik meg, lehet, hogy itt felesleges ezt kezelni. (Utolsó szavak.)

Előzmény: Vargham (366)
Razidargh Creative Commons License 2014.08.18 0 0 370

Egyszerre tudom most is monitorozni putty nélkül a két eszközt. Az adót olvassa a serial monitor, a vevőre pedig egy LCD kijelzőt kötöttem, és ott jeleníti meg a kapott adatokat (ha kap).

Előzmény: Vargham (367)
Razidargh Creative Commons License 2014.08.18 0 0 369

Köszi, akkor ebben az irányban keresek tovább. Nem tudsz valami példakódot (esetleg linkelni) erre a módszerre?

Előzmény: Vargham (366)
Razidargh Creative Commons License 2014.08.18 0 0 368

A serial.print köröket már lefutottam, mindhárom ciklusban kiírja adó oldalon a megfelelő értékeket, tehát a ciklus lefut a feltételek teljesülése esetén, a paraméterek pedig megfelelők.

Előzmény: Prof (365)
Vargham Creative Commons License 2014.08.18 0 0 367

Az Arduino IDE-ben nem lehet.

Javaslom a Putty nevű, full extrás terminál programot. Akárhányat lehet egyszerre futtatni.

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Előzmény: Prof (365)
Vargham Creative Commons License 2014.08.18 0 0 366

A rádió nagyon megbízhatatlan csatorna. Azt feltételezed, hogy mindig, minden byte a megfelelő helyen érkezik. Pedig a két eszköz nincs szinkronizálva.

 

Szerintem nem jó ötlet folyamatosan küldeni az adatokat. Ha lemarad egy-egy byte, azt honnan tudja a vevő?

Először készíts belőle adatcsomagokat (packet).

Adj hozzá headert, footert, esetleg CRC-t.

A vevő oldal pedig keresse ki a stream-ből a csomagot, dekódolja, és utána adjon értéket a tömb elemeinek.

 

Ha kétirányú a rádiód:

Utána legyen mindig nyugtázás. Amíg nem jött a másik féltől nyugtázás, addig ne küldje a következő csomagot.

 

Röviden: A rádiós library annyit tesz, hogy a kapott adatokat ráülteti a fizikai rétegre. Nem ellenőriz, nem szinkronizál, stb. Ezeket neked kell megoldanod.

Előzmény: Razidargh (364)
Prof Creative Commons License 2014.08.18 0 0 365

Nem volt időm alaposan átrágni magam rajta. Első körben a Serial.print a megoldáshoz vezető első kulcs a változók kiírásával. A kódfejtésben mondjuk némi segítség lenne a void.Setup().

Persze mindez az adó és a vevő oldalon is (szívás, mert ugye két futó terminálképernyő kell hozzá, és nem tudom, hogy ez megvalósítható-e, soha nem próbáltam).

Előzmény: Razidargh (364)
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?

Prof Creative Commons License 2014.08.04 0 0 363

Honnan kapja a tápot?

Tippem szerint (nem mértem) táp-gond lesz. A 3 ultrahang plusz ez a negyedik opto már határra húzhatja a Nano-t. Bár a specifikációk szerint összesen nincs ki 100 mA, de jobb kétszer mérni. Feszültséget és áramokat is mérj, külön-külön és egybe is.

Plusz nem lenne nagyon hátrány egy Fritzing rajz sem a bekötésről.

 

Előzmény: Spike89 (361)
Törölt nick Creative Commons License 2014.08.04 0 0 362

Nem vagyok guru, de nem is értem a problémát. Az ultrahangos szenzorokkal nem távolságot mérsz? Akkor miért kell ez a cucc? Vagy ezzel elmozdulást akarsz érzékelni? A specifikáció egyébként 10 uF-ot javasol, és az eszköz közelében.

Előzmény: Spike89 (361)
Spike89 Creative Commons License 2014.08.04 0 0 361

Üdv.

 

Arduino nano-ra van rákötve 3 ultrahangos szenzor, amik jól is működnek, míg rá nem csatlakoztatom ezt:

http://www.sharpsma.com/webfm_send/1487 Ekkor ugyanis elkezdek hibás értékeket kapni az ultrahangos szenzorok felől. 100 nF -os kondit kötöttem az 5V és a GND közé. Mi lehet a hiba? 

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!