Σελίδα 3 από 3 ΠρώτηΠρώτη 1 2 3
Εμφάνιση αποτελεσμάτων : 21 έως 30 από 30

Θέμα: RF arduino

  1. #21
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Αυτο τι σχεση εχει;Για καποιο λογο το θελει σαν ενιαιο αριθμο.

    0 Not allowed! Not allowed!

  2. #22
    Μέλος
    Όνομα
    Νίκος
    Εγγραφή
    Feb 2014
    Περιοχή
    Μοσχάτο
    Μηνύματα
    607

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από SavKok Εμφάνιση μηνυμάτων
    Αυτο τι σχεση εχει;Για καποιο λογο το θελει σαν ενιαιο αριθμο.
    Με την προυπόθεση ότι η "μονάδα" αποστολής είναι ένα byte τότε αυτός είναι ένας τρόπος για να μην χρειάζετε ο ίδιος να "σπάει" τα δεδομένα του σε byte.

    Αν θέλει να στείλει περισσότερους του ενός integers (ή float ή ότι άλλο) εγω το κάνω έτσι:

    union transmitInt
    {
    int Value;
    byte byteValue[2];
    };


    transmitInt steering;
    transmitInt throttle;
    transmitInt reverse;


    byte tempData[sizeof(steering)+sizeof(throttle)+sizeof(reverse)];

    /* Map data to temporary structure */
    tempData[0] = steering.byteValue[0];
    tempData[1] = steering.byteValue[1];
    tempData[2] = throttle.byteValue[0];
    tempData[3] = throttle.byteValue[1];
    tempData[4] = reverse.byteValue[0];
    tempData[5] = reverse.byteValue[1];

    Και μετά στέλνω ένα ένα τα tempData. Απο την άλλη μεριά υπάρχει ακριβώς τι ίδιο structure, δηλαδή τα bytes που λαμβάνονται μπαίνουν σε ένα tempData array και γίνονται assign στο byteValue portion ενός union και βουαλά, έχεις πάλι αυτά που θες.

    Ούτε tokenizer ούτε τίποτα. Δεν είναι και ότι ποιο elegant (καθόλου για την ακρίβεια), αλλά δουλεύει καλά και υλοποίείτε εύκολα. Και μιας και τις περρισότερες φορές ξέρουμε απο πριν τι ΑΚΡΙΒΩΣ θα στείλουμε, δεν βλέπω τον λόγο να μπλέκω με άλλες λύσεις...

    0 Not allowed! Not allowed!

  3. #23
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Και ενα-ενα bit γινεται.Δες διαφορα στη συνοχη του κωδικα και στο ποσο πιο ευαναγνωστο ειναι.

    Λειτουργικα ειναι σωστο,πρακτικα δεν μου αρεσει.

    0 Not allowed! Not allowed!

  4. #24
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Παιδια στο Post #17 δεν εβαλα ολο τον κωδικα και δεν εβγαζε νοημα οπως ηταν.Εαν καποιος τον χρειαστει ειναι προχειρα αυτος:

    Κώδικας:
    
    
    
    
    • #define SOP '<' // χαρακτήρας έναρξης πακέτου
    • #define EOP '>' // χαρακτήρας λήξης πακέτου
    • char *val1; // Δήλωση μεταβλητής όπου φυλάσουμε την πληροφορία της PWM τιμής που έρχεται
    • char *val2; // Δήλωση μεταβλητής όπου φυλάσουμε την πληροφορία της Dir τιμής που έρχεται
    • int pwm_var=0;
    • int mode=0;
    • bool started = false; // -----------------------------------------------------------------------------------------------
    • bool ended = false; // Αρχικοποιήσεις/Δηλώσεις για την αποθήκευση της εισερχόμενης πληροφορίας στη μεταβλητή inData
    • char inData[80]; //------------------------------------------------------------------------------------------------
    • byte index; //------------------------------------------------------------------------------------------------
    • void setup()
    • {
    • while (!Serial);
    • Serial.begin(9600);
    • }
    • void loop()
    • {
    • while(Serial.available() > 0) // Έλεχγος αν υπάρχουν δεδομένα στην σειριακή για να διαβάσουμε
    • {
    • char inChar = Serial.read(); // Αποθήκευση του εισερχόμενου στοιχείου στη μεταβλητή inChar
    • if(inChar == SOP) // Έλεχγος αν το στοιχείο είναι το στοιχείο '<' ( χαρακτήρας έναρξης πακέτου )
    • {
    • index = 0; // Δείκτης για το πρώτο στοιχείο
    • inData[index] = '\0'; // Σβήσιμο του χαρακτήρα '<' για τον διαχωρισμό της πληροφορίας στην συνέχεια
    • started = true; // Δήλωση ότι έχει έρθει στοιχείο που αντιπροσωπεύει την έναρξη του πακέτου
    • ended = false; // Δήλωση ότι δεν έχει έρθει στοιχείο που αντιπροσωπεύει την λήξη του πακέτου
    • }
    • else if(inChar == EOP)
    • {
    • ended = true; // Δήλωση ότι έχει έρθει στοιχείο που αντιπροσωπεύει την λήψη του πακέτου
    • break; // Τέλος λήψης πακέτου
    • }
    • else // Εαν έχει έρθει στοιχείο που δεν είναι ουτε '<' ούτε '>'
    • {
    • if(index < 79) // Όριο μεγέθους πληροφορίας που περιμένουμε, για να μην έχουμε memory overflow
    • {
    • inData[index] = inChar; // Αποθήκευση της πληροφορίας στην μεταβλητή inData
    • index++; //Αύξηση του δείκτη
    • inData[index] = '\0'; // Σβήσιμο του χαρακτήρα '>' για τον διαχωρισμό της πληροφορίας στην συνέχεια
    • }
    • }
    • }
    • //--------------------------------------------------------------------------------------------------------------
    • // Εδώ είμαστε είτε γιατί όλα τα εκκρεμή δεδομένα διαβάστηκαν είτε γιατι ήρθε ο χαρακτήρας λήψης πακέτου
    • //--------------------------------------------------------------------------------------------------------------
    • if(started && ended) // Σηματοδότηση ότι έχει έρθει χαρακτήρας λήξης πακέτου '>'
    • {
    • // Διαχορισμός της πληροφορίας με βάση το χαρακτήρα '|' ανάμερα από τις τιμές μας
    • val1 = strtok(inData,"|"); // ------------------------------------------------------------------------------------
    • val2 = strtok( NULL,"|"); // Βάλε στις μεταβλητές val1,val2,val3 τα στοιχεία που χωρίζονται από τον χαρακτήρα '|'
    • pwm_var = atoi(val1); //--------------------------------------------------------------------------------------------------------------------------------------------
    • mode = atoi(val2); // Βάλε στις μεταβλητές pwm_var,mode,dir τις αντιστοιχες τιμές από την πληροφορία του διαχωρίσαμε σε μορφή int με χρήση της εντολής atoi()
    • Serial.print("Esteiles -> ");
    • Serial.print(pwm_var);
    • Serial.print(" kai ");
    • Serial.println(mode);
    • started = false; //-------------------------------------------------------------
    • ended = false; // Eπαναφορά των μεταβλητών ender,started για τα νέα πακέτα
    • index = 0; // Επαναφορά του δείκτη για τα νέα πακέτα
    • inData[index] = '\0';
    • }
    • }

    2 Not allowed! Not allowed!

  5. Ένα μέλος ευχαρίστησε τον SProg για αυτό το χρήσιμο μήνυμα:

    thanasis 1 (07-11-16)

  6. #25
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.123

    Προεπιλογή

    Έχω σε ένα ενιαίο χώρο τρία ζευγάρια πομπού -€“ δέκτη.

    3 πομποί και 3 δέκτες. Ο κάθε πομπός επικοινωνεί μόνο με έναν δέκτη. Παρατηρώ ότι όταν είναι ανοιχτοί οι πομποί μπλέκονται τα σήματα με αποτέλεσμα να μην λαμβάνω δεδομένα. Να φταίει ο κώδικας ή δεν κάνουν για την δουλειά που τα θέλω; Να ανεβάσω κώδικα;

    0 Not allowed! Not allowed!

  7. #26
    Μέλος
    Όνομα
    Θόδωρος
    Εγγραφή
    Jun 2014
    Περιοχή
    Αθήνα
    Μηνύματα
    45

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    Έχω σε ένα ενιαίο χώρο τρία ζευγάρια πομπού -�� δέκτη.

    3 πομποί και 3 δέκτες. Ο κάθε πομπός επικοινωνεί μόνο με έναν δέκτη. Παρατηρώ ότι όταν είναι ανοιχτοί οι πομποί μπλέκονται τα σήματα με αποτέλεσμα να μην λαμβάνω δεδομένα. Να φταίει ο κώδικας ή δεν κάνουν για την δουλειά που τα θέλω; Να ανεβάσω κώδικα;
    Σίγουρα θα έχεις προβλήματα με 3 ζευγάρια στον ίδιο χώρο. Γιατί δε χρησιμοποιείς NRF24L01 ή RFM69 που είναι φτιαγμένα για τέτοιες περιπτώσεις;

    Tapatalked from my Nexus 5

    0 Not allowed! Not allowed!

  8. #27
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.123

    Προεπιλογή

    Σε ευχαριστώ Θοδωρή. Θα πάρω το nrf24l01

    0 Not allowed! Not allowed!

  9. #28
    Μέλος
    Όνομα
    Θόδωρος
    Εγγραφή
    Jun 2014
    Περιοχή
    Αθήνα
    Μηνύματα
    45

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    Σε ευχαριστώ Θοδωρή. Θα πάρω το nrf24l01
    Απλά έχε υπόψη σου ότι το NRF δουλεύει στα 2.4GHz, και αν οι αποστάσεις είναι μεγάλες ενώ παρεμβάλλονται τοίχοι ή υπάρχουν πολλά wi-fi δικτυα, ίσως να έχεις προβλήματα.
    Το RFM69 παίζει στους 915, 868 ή 433MHz, ανάλογα με το μοντέλο. Έχουν μεγαλύτερη εμβέλεια, αλλά και καμηλοτερο bitrate.
    Καμμία σχέση πάντως με τα απλά αναλογικα μοντουλάκια.

    Tapatalked from my Nexus 5

    0 Not allowed! Not allowed!

  10. #29
    Μέλος
    Όνομα
    ΑΛΕΞΑΝΔΡΟΣ
    Εγγραφή
    Jan 2012
    Περιοχή
    ¶νω Αχαρναί
    Μηνύματα
    717

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    Έχω σε ένα ενιαίο χώρο τρία ζευγάρια πομπού -€“ δέκτη.

    3 πομποί και 3 δέκτες. Ο κάθε πομπός επικοινωνεί μόνο με έναν δέκτη. Παρατηρώ ότι όταν είναι ανοιχτοί οι πομποί μπλέκονται τα σήματα με αποτέλεσμα να μην λαμβάνω δεδομένα. Να φταίει ο κώδικας ή δεν κάνουν για την δουλειά που τα θέλω; Να ανεβάσω κώδικα;
    Μα σε αυτές τις περιπτώσεις πριν ξεκινήσει ένα transmitter να στέλνει πακέτο, ελέγχεις πρώτα τον δέκτη αν υπάρχει λήψη πακέτου. Αφήνεις ένα μικρό χρονικό παράθυρο (ανάλογα με το είδος του πακέτου), και μετά αρχίζει ο transmitter να εκπέμπει το δικό του πακέτο.

    Ένα πρόβλημα που υπάρχει με τους πολλούς σταθμούς, είναι η περίπτωση της διακοπής ρεύματος και κατά την επαναφορά της τάσης, το ταυτόχρονο ξεκίνημα των σταθμών. Σε αυτή την περίπτωση μια λύση είναι να υπάρχει μια random χρονική καθυστέρηση σε κάθε σταθμό, ή χρονική καθυστέρηση ανάλογα με το id του σταθμού πριν στείλει ο κάθε σταθμός αναγνωριστικό πακέτο.

    Επίσης, το σετ των πομποδεκτών που δείχνεις στις φώτο, ανήκουν στην νέα γενιά που έχουν κατακλίσει το ebay οι Κινέζοι. Αν και έχω προμηθευτεί αρκετά από αυτά (και στους 315MHz και στους 433MHz), ακόμα δεν έχω κάνει δοκιμές για να δω αν είναι αξιόπιστα όπως τα παλιά που έχω από Grobotronics.

    0 Not allowed! Not allowed!

  11. #30
    Μέλος
    Όνομα
    ΑΛΕΞΑΝΔΡΟΣ
    Εγγραφή
    Jan 2012
    Περιοχή
    ¶νω Αχαρναί
    Μηνύματα
    717

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από kted Εμφάνιση μηνυμάτων
    Σίγουρα θα έχεις προβλήματα με 3 ζευγάρια στον ίδιο χώρο. Γιατί δε χρησιμοποιείς NRF24L01 ή RFM69 που είναι φτιαγμένα για τέτοιες περιπτώσεις;

    Tapatalked from my Nexus 5
    Σκέφτομαι να δοκιμάσω τα transceivers modules με το CC1101, που αν δεν απατώμαι είναι της Texas Ins. Τα RFM69 είναι πιο αξιόπιστα από αυτά; Απ' ότι είδα υπάρχουν και παραλλαγές του RFM69, όπως CW, HW, W...

    0 Not allowed! Not allowed!

Σελίδα 3 από 3 ΠρώτηΠρώτη 1 2 3

Παρόμοια Θέματα

  1. arduino?
    By nikakis30 in forum Μικροελεγκτές
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 19-04-17, 00:50
  2. arduino help
    By giorgosm3 in forum Μικροελεγκτές
    Απαντήσεις: 49
    Τελευταίο Μήνυμα: 27-03-17, 09:16
  3. arduino
    By lefteris_gr in forum Μικροελεγκτές
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 23-11-13, 00:07
  4. arduino
    By Γιαννάκης 7 in forum Μικροελεγκτές
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 30-12-12, 17:36
  5. arduino
    By chrisn in forum Μικροελεγκτές
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 27-06-12, 01:44

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας