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

Θέμα: Ερωτήσεις σχετικά με το ARDUINO

  1. #11
    Banned
    Όνομα
    tsimpidas
    Εγγραφή
    May 2012
    Περιοχή
    Αθηνα
    Μηνύματα
    1.028

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από SavKok Εμφάνιση μηνυμάτων
    Εαν πατηθει το Button ενω εισαι 'μεσα' στη Delay, τοτε το προγραμμα που εκανες δεν θα το αντιληφθει.


    Οποτε ή σπας τα Delay() σε πολυ μικροτερα χρονικα διαστηματα και χρησιμοποιεις μετρητες ή το κανεις με διακοπες.
    το παραπάνω δεν ισχύει.
    Οταν δεν έχεις πατήσει το κουμπί στον συγκεκριμένο κωδικά και είναι ας πούμε στην ''αναμονή''προσπερνά τα delay.

    αν θέλετε να το δοκιμάσετε αυτό άπλα βάλτε ενα πολυ μεγάλο delay και μετά προσπαθήστε να ''πέσετε μέσα''

    Αν δεν ειχε το '' if '' τότε θα ηταν σωστό αυτό που λες.


    όταν επιλέγουμε την εντολή '' if '' τότε επιλέγουμε ανάγνωση του κωδικά κατά το τι θέλουμε,, δηλ,
    δυο διαφορετικοί κώδικες [ή και περισσότεροι] μέσα στο ίδιο loop εναλλάσσονται από το '' if ''.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη tsimpidas : 24-02-18 στις 10:05

  2. #12
    Μέλος
    Όνομα
    Μάρκος
    Εγγραφή
    Mar 2012
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.945

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από tsimpidas Εμφάνιση μηνυμάτων
    το παραπάνω δεν ισχύει.
    Οταν δεν έχεις πατήσει το κουμπί στον συγκεκριμένο κωδικά και είναι ας πούμε στην ''αναμονή''προσπερνά τα delay.

    αν θέλετε να το δοκιμάσετε αυτό άπλα βάλτε ενα πολυ μεγάλο delay και μετά προσπαθήστε να ''πέσετε μέσα''

    Αν δεν ειχε το '' if '' τότε θα ηταν σωστό αυτό που λες.


    όταν επιλέγουμε την εντολή '' if '' τότε επιλέγουμε ανάγνωση του κωδικά κατά το τι θέλουμε,, δηλ,
    δυο διαφορετικοί κώδικες [ή και περισσότεροι] μέσα στο ίδιο loop εναλλάσσονται από το '' if ''.

    απορία πρωτη. στον παρακατω κωδικα αναβοσβήνει ενα led 10 φορες οταν πατηθει το button και γινει η ''i=10'' .
    πως θα κανω να ανανεωνετε η ''i'' πατωντας το button ενω τρεχει η while?
    Προφανώς δεν πρόσεξες καλά την ερώτηση στην οποία απευθύνεται η απάντηση.

    Την πρώτη φορά λειτουργεί σωστά. Μετά όταν βρίσκεται μέσα στο loop της while δεν ελέγχεται το button καθώς επίσης το πρόγραμμα παγώνει όταν μπαίνει στο delay, οπότε και δεν μπορεί να ανανεώσει το χρόνο. Αν μπει ο έλεγχος του button και μέσα στην while τότε αντί να περιμένεις να εκτελεστεί όλη η συνθήκη της while, για την περίπτωση 20 sec, θα μπορέσει να ανανεωθεί στα 2 sec εφόνον κρατιέται πατημένο το πλήκτρο. Αν πατήσεις και αφήσεις το πλήκτρο κατά την διάρκεια του delay το πρόγραμμα δεν θα καταλάβει ότι πατήθηκε το πλήκτρο.

    1 Not allowed! Not allowed!
    Όταν όλα τα άλλα έχουν αποτύχει..... RTFM.
    Short instructions: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>> Good Luck!
    https://diyelectronics-gr.blogspot.gr https://www.facebook.com/groups/872041030200567

  3. #13
    Banned
    Όνομα
    tsimpidas
    Εγγραφή
    May 2012
    Περιοχή
    Αθηνα
    Μηνύματα
    1.028

    Προεπιλογή

    Έχεις δικιο, δεν πρόσεξα καλά την ερώτηση.

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

    0 Not allowed! Not allowed!

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

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από aris285 Εμφάνιση μηνυμάτων
    Από τι διάβασα η millis είναι ένας "counter"που τρέχει ασταμάτητα. Και σε τι τιμή κάνει overflow φήμες λένε σε 50 μέρες λειτουργεί ας μιλάμε για τεράστια τιμή έτσι?
    Ασταματητα υπο προυποθεσεις.

    0 Not allowed! Not allowed!

  5. #15
    Μέλος Το avatar του χρήστη aris285
    Όνομα
    Αρης
    Εγγραφή
    Jul 2010
    Περιοχή
    Ελευσινα
    Μηνύματα
    1.637

    Προεπιλογή

    εκανα νεο πρόγραμμα χρησιμοποιωντας την ''millis'' διχνει να δουλευει.
    Δυστιχως πλακετα aeduino δεν εχω ακομα για να κανω real test.

    Κώδικας:
    
    
    const int led = 5;
    const int button = 6;
    
    
    int i = 0;
    int buttonstate;
    int ledstate = LOW;
    
    
    unsigned long previousTime = 0; // long = int > 32767
    
    
    void setup() {
    
    
    
    
      pinMode(led, OUTPUT);
      pinMode(button, INPUT_PULLUP);
    
    
    
    
    }
    
    
    void loop() {
      buttonstate = digitalRead(button);
      if (buttonstate == LOW) {
        i = 10;
      }
      if (i > 0) {
        unsigned long curentTime = millis();
        if (curentTime - previousTime >= 1000) {
          previousTime = curentTime;
          if (ledstate == LOW) {
            ledstate = HIGH;
          }
          else {
            ledstate = LOW;
            i = i - 1;
          }
        }
      }
    
    
    
    
    }
    Μια ερώτηση. Η ''unsigned'' που χρησιμεύει και τι κανει?

    0 Not allowed! Not allowed!

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

    Προεπιλογή

    Σημαίνει πως είναι απροσήμαστος αριθμός.
    Για παράδειγμα ένας προσημασμένος 8bit αριθμός πάει από -128 μέχρι 127, ένας απροσήμαστος πάει από 0 μέχρι 255.
    Αν πχ έχεις τον αριθμό 0xFF σε προσημασμένο είναι το -1 σε απροσήμαστο είναι το 255, βάζοντας το "unsigned" ο compiler του συμπεριφέρεται ως απροσήμαστο.

    2 Not allowed! Not allowed!

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

    aris285 (25-02-18)

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

    Προεπιλογή

    Δηλωνει οτι η μεταβλητη αφορα μη προσημασμενο αριθμο, δεν παιρνει αρνητικες τιμες.

    Και γιατι δεν τις βαζουμε ολες signed (να παιρνει και αρνητικες και θετικες τιμες); Γιατι για προσημασμενους αριθμους δεσμευεται το MSB (το πιο σημαντικο bit) και το ευρος τιμων (πχ στο θετικο μερος) της μεταβλητης γινεται /2 .


    Δες:

    chart-variable-types.png

    2 Not allowed! Not allowed!

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

    aris285 (25-02-18)

  10. #18
    Μέλος Το avatar του χρήστη aris285
    Όνομα
    Αρης
    Εγγραφή
    Jul 2010
    Περιοχή
    Ελευσινα
    Μηνύματα
    1.637

    Προεπιλογή

    αρα ετσι δηλώνουμε οτι ο αριθμος ειναι παντα θετικος πχ και γλυτωνουμε το bit του + η - για οικονομία στο προγραμμα.

    σωστα το καταλαβα?

    0 Not allowed! Not allowed!

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

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από aris285 Εμφάνιση μηνυμάτων
    αρα ετσι δηλώνουμε οτι ο αριθμος ειναι παντα θετικος πχ και γλυτωνουμε το bit του + η - για οικονομία στο προγραμμα.

    σωστα το καταλαβα?
    Τίποτα δεν γλιτώνεις, το πλήθος των πιθανών συνδυασμών παραμένει ίδιο, απλώς οι μισοί μεταφράζονται σε αρνητικούς αριθμούς.
    Το αν γλιτώσεις κάτι εξαρτάτε απ' το τι θέλεις να κάνεις, αν για παράδειγμα θέλεις να μετράς απ' το 0 μέχρι το 200 τότε ένας προσημασμένος αριθμός χρειάζεται 2byte (16bit) για να τον εκφράσει ενώ ένας απροσήμαστος 1byte(8bit). Αν θέλεις να μετράς απ' το 0 μέχρι το 10 τότε είναι το ίδιο.

    *Edit: 2 φορές απροσήμαστος έγραψα πριν

    1 Not allowed! Not allowed!

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

    aris285 (25-02-18)

  13. #20
    Μέλος Το avatar του χρήστη aris285
    Όνομα
    Αρης
    Εγγραφή
    Jul 2010
    Περιοχή
    Ελευσινα
    Μηνύματα
    1.637

    Προεπιλογή

    μια διορθωση στον κωδικα γιατι ετσι οπως ηταν δεν προκειται να αναψει ποτε το led.

    Κώδικας:
    
    
    const int led = 5;
    const int button = 6;
    
    
    int i = 0;
    int buttonstate;
    int ledstate = LOW;
    
    
    unsigned long previousTime = 0; // long = int > 32767
    
    
    void setup() {
    
    
    
    
      pinMode(led, OUTPUT);
      pinMode(button, INPUT_PULLUP);
    
    
    
    
    }
    
    
    void loop() {
      buttonstate = digitalRead(button);
      if (buttonstate == LOW) {
        i = 10;
      }
      if (i > 0) {
        unsigned long curentTime = millis();
        if (curentTime - previousTime >= 1000) {
          previousTime = curentTime;
          if (ledstate == LOW) {
            ledstate = HIGH;
          }
          else {
            ledstate = LOW;
            i = i - 1;
          }
        }
        digitalWrite(led, ledstate);
      }
    }

    0 Not allowed! Not allowed!

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

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

  1. Ερωτήσεις σχετικά με χρώματα φάσεων
    By dog80 in forum Ηλεκτρολογικά
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 08-10-15, 10:11
  2. Απαντήσεις: 16
    Τελευταίο Μήνυμα: 26-12-13, 18:33
  3. ερωτήσεις σχετικά με το TDA7375
    By ninolas in forum Κυκλώματα Εικόνας-'Ηχου & Φωτισμού
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 17-09-13, 12:34
  4. Απαντήσεις: 29
    Τελευταίο Μήνυμα: 02-10-11, 05:36
  5. Απαντήσεις: 17
    Τελευταίο Μήνυμα: 05-05-07, 09:46

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

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