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

Θέμα: Arduino. Αδυναμία επικοινωνίας πομποδεκτών nRF24L01+

  1. #21
    Μέλος Το avatar του χρήστη Fire Doger
    Όνομα
    Στέφανος
    Εγγραφή
    Jan 2015
    Περιοχή
    .
    Μηνύματα
    1.519

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από thanasis 1 Εμφάνιση μηνυμάτων
    Βγαλε τις εντολες

    lcd.clear();
    delay(500);

    που βρισκονται στην αρχη της void loop απο το προγραμμα του δεκτη δεν θα αναβοσβηνουν πλεον.
    Θα είναι καλύτερα εφόσον τα δεδομένα (θερμοκρασία) σου δεν είναι σταθερού μεγέθους (έτσι νομίζω δλδ) και μπορεί κάποια στιγμή αν έχει λιγότερα ψηφία η τιμή να φαίνονται χαρακτήρες από προηγούμενες θερμοκρασίες.

    Βγάλε την clear και το delay από εκεί που σου είπε ο Θανάσης και βάλε την εντολή "lcd.clear();" ανάμεσα στις υπογραμμισμένες στην φωτογραφία. Δεν θα αναβοσβήνει, απλώς όταν υπάρχουν καινούρια δεδομένα θα την καθαρίζει όλη και θα γράφει τα καινούρια, αν δεν την ανανεώνεις πολύ γρήγορα δεν το παρατηρείς, αν την ανανεώνεις όσο ποιο γρήγορα γίνεται τότε την βλέπεις να τρεμοπαίζει.

    * To lcd.setCursor(0,0); που είναι στα υπογραμμισμένα μπορείς να το αφαιρέσεις μετά καθώς το clear πάει και τον κέρσορα στο 0,0

    0 Not allowed! Not allowed!

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

    sotron1 (17-01-17)

  3. #22
    Μέλος Το avatar του χρήστη sotron1
    Όνομα
    Σωτήρης
    Εγγραφή
    Aug 2007
    Περιοχή
    Αθήνα, Περιστέρι.
    Μηνύματα
    950

    Προεπιλογή

    Καταρχάς ευχαριστώ για τον χρόνο σας. Τώρα δεν αναβοσβήνουν οι χαρακτήρες αλλά δημιουργήθηκε ένα άλλο πρόβλημα το οποίο είναι αυτό.

    2017-01-18 20.26.36.jpg


    Εάν αποσυνδεθεί ο πομπός πρέπει να γράφει "No radio available"

    0 Not allowed! Not allowed!

  4. #23
    Μέλος Το avatar του χρήστη Fire Doger
    Όνομα
    Στέφανος
    Εγγραφή
    Jan 2015
    Περιοχή
    .
    Μηνύματα
    1.519

    Προεπιλογή

    Ωπ μου ξέφυγε αυτό, πρόσθεσε την εντολή lcd.clear(); στο σημείο που δείχνω παρακάτω.

    Κώδικας:
    .
    .
    .
    else{
    lcd.clear();
    lcd.println("No radio available");
    }
    delay(1000);
    }
    *Παρακάτω έχω κάνει μερικές αλλαγές για να μην τυπώνει κάθε 1 λεπτό no radio available αλλά μόνο κάθε πρώτη φορά που δεν βρίσκει σήμα.
    Κώδικας:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Wire.h>
    #include <LCD.h>
    #include <LiquidCrystal_I2C.h>
    
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity
    
    float temp1, temp2;
    bool NoRadioDisp=true; //Για να βγάλει το μήνυμα αν δεν υπάρχει σήμα κατά την εκκίνηση
    
    RF24 radio(9, 10);
    const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };
    
    void setup(void) {
    Serial.begin(9600);
    radio.begin();
    radio.setDataRate(RF24_250KBPS);
    radio.openReadingPipe(1, pipes[1]);
    radio.openReadingPipe(2, pipes[2]);
    radio.startListening();
    lcd.begin(16, 2);
    lcd.backlight();
    lcd.clear();
    lcd.print("nRF24L01+ Temp");
    delay(1000);
    lcd.clear();
    lcd.print("Connecting.....");
    delay(1000);
    }
    
    void loop(void)
    {
    if ( radio.available() )
    {
    NoRadioDisp=false; //Δεν τυπώθηκε το μήνυμα
    delay(50);
    radio.read(&temp1, sizeof(temp1));
    lcd.clear();
    lcd.print("Temp 1");
    lcd.setCursor(9, 0);
    lcd.print(temp1);
    lcd.print(" C");
    
    delay(50);
    radio.read(&temp2, sizeof(temp2));
    lcd.setCursor(0, 1);
    lcd.print("Temp 2");
    lcd.setCursor(9, 1);
    lcd.print(temp2);
    lcd.print(" C");
    }
    else
    {
       if(!NoRadioDisp){ //Αν δεν τυπώθηκε το μήνυμα
          lcd.clear();
          lcd.println("No radio available");
          NoRadioDisp=true; //Τυπώθηκε το μήνυμα
        }
    }
    delay(1000);
    }

    1 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη Fire Doger : 18-01-17 στις 22:01

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

    sotron1 (19-01-17)

  6. #24
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.381

    Προεπιλογή

    Με 7€ παίρνεις logic analyzer ,θα σε βοηθήσει πολύ στο debug

    0 Not allowed! Not allowed!

  7. #25
    Μέλος Το avatar του χρήστη sotron1
    Όνομα
    Σωτήρης
    Εγγραφή
    Aug 2007
    Περιοχή
    Αθήνα, Περιστέρι.
    Μηνύματα
    950

    Προεπιλογή

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

    Αυτό που έκανα είναι να διαγραψω τις σειρές ανάμεσα στις διακεκομένες γραμμές, που έβαλα εγώ για να δείξω τι έσβυσα.

    Καμμιά βοήθεια ;

    Πριν χωρίς σβησμένο σημείο 2017-01-19 19.53.12.jpg


    Με σβησμένο το σημείο ανάμεσα στις διακεκομμένες γραμμές 2017-01-19 19.23.54.jpg


    Κώδικας:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Wire.h>
    #include <LCD.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity
    float temp1, temp2;
    bool NoRadioDisp=true; //Για να βγάλει το μήνυμα αν δεν υπάρχει σήμα κατά την εκκίνηση
    RF24 radio(9, 10);
    const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };
    void setup(void) {
    Serial.begin(9600);
    radio.begin();
    radio.setDataRate(RF24_250KBPS);
    radio.openReadingPipe(1, pipes[1]);
    radio.openReadingPipe(2, pipes[2]);
    radio.startListening();
    lcd.begin(16, 2);
    lcd.backlight();
    lcd.clear();
    lcd.print("nRF24L01+ Temp");
    delay(1000);
    lcd.clear();
    lcd.print("Connecting.....");
    delay(1000);
    }
    void loop(void)
    {
    if ( radio.available() )
    {
    NoRadioDisp=false; //Δεν τυπώθηκε το μήνυμα
    ---------------------------------------------------------------------------
    delay(50);
    radio.read(&temp1, sizeof(temp1));
    lcd.clear();
    lcd.print("Temp 1");
    lcd.setCursor(9, 0);
    lcd.print(temp1);
    lcd.print(" C");
    ---------------------------------------------------------------------------
    delay(50);
    radio.read(&temp2, sizeof(temp2));
    lcd.setCursor(0, 1);
    lcd.print("Temp 2");
    lcd.setCursor(9, 1);
    lcd.print(temp2);
    lcd.print(" C");
    }
    else
    {
       if(!NoRadioDisp){ //Αν δεν τυπώθηκε το μήνυμα
          lcd.clear();
          lcd.println("No radio available");
          NoRadioDisp=true; //Τυπώθηκε το μήνυμα
        }
    }
    delay(1000);
    }

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη sotron1 : 19-01-17 στις 19:58

  8. #26
    Μέλος Το avatar του χρήστη Fire Doger
    Όνομα
    Στέφανος
    Εγγραφή
    Jan 2015
    Περιοχή
    .
    Μηνύματα
    1.519

    Προεπιλογή

    Ξανά βάλε μόνο την clear που είναι μέσα στις διακεκομμένες, βγάλε τα υπόλοιπα όπως έκανες και θα είσαι άρχοντας
    Απλώς τώρα κρατάει τους παλιούς χαρακτήρες και στην 2η γραμμή τυπώνει από πάνω ενώ στην 1η που δεν τυπώνει κάτι φαίνονται οι παλιοί.

    1 Not allowed! Not allowed!

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

    sotron1 (19-01-17)

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

    Προεπιλογή

    Γεια σας.
    Προσπαθώ να τροποποιήσω το αρχικό κώδικα του Σωτήρη έτσι ώστε να επιτύχω 2 ασύρματοι πομποί να μεταφέρουν έναν αριθμό στον δέκτη.

    Δέκτης :
    Κώδικας:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Wire.h>
    
    float temp1, temp2;
    
    RF24 radio(6, 7);
    const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };
    
    void setup(void) {
    Serial.begin(9600);
    radio.begin();
    radio.setDataRate(RF24_250KBPS);
    radio.openReadingPipe(1, pipes[1]);
    radio.openReadingPipe(2, pipes[2]);
    radio.startListening();
    
    }
    
    void loop(void)
    {
    
    if ( radio.available() )
    {
    delay(50);
    radio.read(&temp1, sizeof(temp1));
    Serial.print ("Temp 1 : ");
    Serial.println(temp1);
    
    
    delay(50);
    radio.read(&temp2, sizeof(temp2));
    Serial.print("Temp 2  ");
    Serial.println(temp2);
    
    }
    else
    {
    Serial.println ("No radio available");
    }
    delay(100);
    }

    Πομπός:
    Κώδικας:
    #include <SPI.h>
    #include "nRF24L01.h"
    #include "RF24.h"
    
    int temp1;
    
    RF24 radio(6, 7);
    const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL };
    
    void setup(void) {
    radio.begin();
    radio.setDataRate(RF24_250KBPS);
    radio.openWritingPipe(pipes[1]);
    radio.stopListening();
    }
    
    void loop(void)
    {
    temp1 ++;
    radio.write(&temp1, sizeof(temp1));
    delay(10);
    }

    Αρχικά τις δόκιμες τις κάνω με ένα πομπό και ένα δέκτη. Το πρόγραμμα Hello μου δουλεύει κανονικά.
    Το λάθος είναι εδώ ;;;

    Κώδικας:
    temp1 ++;
    radio.write(&temp1, sizeof(temp1));

    0 Not allowed! Not allowed!

  11. #28
    Μέλος Το avatar του χρήστη thanasis 1
    Όνομα
    Θανάσης
    Εγγραφή
    Jul 2010
    Περιοχή
    ΑΘΗΝΑ
    Μηνύματα
    1.382

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    Το λάθος είναι εδώ ;;;
    Κώδικας:
    temp1 ++;
    radio.write(&temp1, sizeof(temp1));
    Οχι,στον δεκτη εχεις ορισει ως float το temp1,temp2 αν τις ορισεις ως int οπως και στον πομπο θα σου τον στελνει μια χαρα.

    1 Not allowed! Not allowed!

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

    her (28-01-17)

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

    Προεπιλογή

    Θανάση σε ευχαριστώ παρά πολύ. Πράγματι δούλεψε αλλά έχω όμως ένα πρόβλημα ακόμα.
    Έχω ορίσει τιμή temp1 = 111 και temp2 = 222.
    Στη σειριακή διαβάζω :

    Κώδικας:
    Temp 1 : 111
    Temp 2  111
    
    Temp 1 : 222
    Temp 2  222
    
    Temp 1 : 111
    Temp 2  111
    
    Temp 1 : 111
    Temp 2  111
    
    Temp 1 : 111
    Temp 2  222
    
    No radio available
    No radio available
    Temp 1 : 222
    Temp 2  222
    Πως μπορώ να το κάνω να διαβάζει από τον κάθε δέκτη την τιμή και να μην τα μπλέκει;
    Αρχικά έχω βάλει 2 πομπούς και έναν δέκτη. Αλλά θέλω συνολικά να βάλω 10 πομπούς.

    0 Not allowed! Not allowed!

  14. #30
    Μέλος Το avatar του χρήστη thanasis 1
    Όνομα
    Θανάσης
    Εγγραφή
    Jul 2010
    Περιοχή
    ΑΘΗΝΑ
    Μηνύματα
    1.382

    Προεπιλογή

    Κανονικα δεν θα επρεπε να τις μπερδευει,μηπως υπαρχει καποιο λαθος στον κωδικα σου?
    Για να ειμαι σιγουρος οτι οντως δουλευει μολις τωρα το δοκιμασα και μου στελνει κανονικα τις δυο τιμες.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη thanasis 1 : 29-01-17 στις 13:16

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

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

  1. Βοήθεια: Πτυχιακή Arduino με nrf24l01 και Raspberry
    By QRTSIDAKIS in forum Μικροελεγκτές
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 09-02-17, 19:20
  2. Επικοινωνία Arduino με NRF24L01+ (Πτυχιακή)
    By QRTSIDAKIS in forum Μικροελεγκτές
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 25-03-16, 09:26
  3. Απαντήσεις: 19
    Τελευταίο Μήνυμα: 08-06-15, 01:39
  4. Απαντήσεις: 14
    Τελευταίο Μήνυμα: 09-01-13, 17:54
  5. STK500: Αδυναμία επικοινωνίας με το PC
    By FILMAN in forum Μικροελεγκτές
    Απαντήσεις: 23
    Τελευταίο Μήνυμα: 03-03-11, 15:37

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

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