Εμφάνιση αποτελεσμάτων : 1 έως 9 από 9

Θέμα: Αρχή με τον Atmega8 - Κουμπιά σε MC

  1. #1
    Μέλος Το avatar του χρήστη master3763
    Όνομα
    master3763
    Εγγραφή
    Aug 2007
    Περιοχή
    Αλεξανδρούπολη
    Μηνύματα
    83

    Προεπιλογή Αρχή με τον Atmega8 - Κουμπιά σε MC

    Φίλες και φίλοι συνεχίζουμε..
    Σ αυτό το μάθημα θα ήθελα να σας δείξω πώς μπορούμε με τον μικρεολεγκτή να παίξουμε με τα κουμπιά... Θα φτιάξουμε ένα πρόγραμμα μία εφαρμογή που θα λειτουργεί σαν συναγερμός. Έχουμε λυπών έναν διακόπτη ο οποίος είναι κλειστός και γειωμένος από την μία άκρη του. Η άλλη άκρη του καταλήγει στο pin B.0 του MC. Οπότε το Β.0 παίρνει 0 volt. Αν τώρα ανοίξουμε τον διακόπτη το pin B.0 δεν θα έχει ποια το απόλυτο 0 volt αλλά κάποια άλλη τάση (δεν μας ενδιαφέρει). Σημασία έχει ότι η συνθήκη while(PINB.0==1) θα είναι αληθής και θα εκτελεστεί το πρόγραμμα που βρίσκεται ανάμεσα στις αγκύλες {} του while. Δηλαδή θα αρχίσει να αναβοσβήνει το LED.


    Πάμε λυπών να γράψουμε τον κώδικα

    Κώδικας:
    #include <mega8.h> // vivliothiki gia ton atmega 8
    #include <delay.h> // vivliothiki gia xronokathisteriseis
    
    void main(void) 
    {        
    // Port B rithmiseis
      PORTB=0xFF;       // Energopoiume ta Pull-up resistors
      DDRB=0x00;          // Orizume to port B san eisodo
    // Port D rithmiseis
      PORTD=0x00;       // Apenergopoiume ta Pull-up resistors
      DDRD=0xFF;          // Orizume to port D san exwdo 
      
    
      while(PINB.0==0) // elegxos katastasis tu kumpiu
      {
      
      } 
    while(PINB.0==1) //  An to kumpi den einai patimeno ekteleitai o parakato vrogxos
     
          while(1)     // atermon vrogxos
            {  
              PORTD.0=1;
              delay_ms(100);
              PORTD.0=0;
              delay_ms(100); 
            }
        }                                             
     
    }
    Να πούμε επίσης ότι ακόμα κ αν ξανακλείσει η επαφή του διακόπτη στο συγκεκριμένο πρόγραμμα, το λαμπάκι θα συνεχίσει να αναβοσβήνει.
    Καλό θα ήταν να βάλουμε μία αντίσταση το λιγότερο 150 Ohm σε σειρά με το LED για να μην κάψουμε τον MC.

    Από εδώ και πέρα μπορείτε να βλέπετε τα μαθήματα MC και από το καινούριο μου site Greek Electronics που θα ανεβάζω διάφωρα τεχνικά άρθρα.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη master3763 : 18-03-12 στις 00:36

  2. #2
    Μέλος
    Εγγραφή
    Dec 2004
    Μηνύματα
    1.422

    Προεπιλογή

    ωραια ...παμε τωρα να το κανουμε να κλείνει το led ?

    0 Not allowed! Not allowed!
    ...

  3. #3
    Μέλος Το avatar του χρήστη master3763
    Όνομα
    master3763
    Εγγραφή
    Aug 2007
    Περιοχή
    Αλεξανδρούπολη
    Μηνύματα
    83

    Προεπιλογή

    ωραια ...παμε τωρα να το κανουμε να κλείνει το led ?
    Ε ναι να αφήσουμε και κάτι για ανάλυση και συζήτηση )) ΟΧΙ ΟΛΑ ΕΤΥΜΑ )

    0 Not allowed! Not allowed!

  4. #4
    Μέλος
    Εγγραφή
    Dec 2004
    Μηνύματα
    1.422

    Προεπιλογή

    εντάξει Γιάννη δεν διαφωνω για το οχι ολα ΕΤΟΙΜΑ ...και αφου αναλυθει το πρωτο μια δεύτερη ιδεα είναι...

    και μετα να το κάνουμε να εχει κλειση το Led αλλα ενα αλλο Led ( Led νουμερο 2 σε κάποια αλλη πόρτα ) να αναβοσβήνει η να μενει αναμένο οταν εχει δοθεί εστω και για μια φορα λογ.1 στο PINB.0 για να δουμε οτι κατα την απουσία μας ειχαμε τουλάχιστο μια παραβίαση
    δηλ.εχουμε συναγερμό κτυπα και οταν κλείσει παλι ο διακόπτης σταματά αλλα θα εχουμε ενδειξη οτι κάποια στιγμή κτύπησε

    και σε καποιο επομενο βάζουμε και κάποιο χρόνο για το πόσο χρόνο θα κτυπά αλλα ας τα πάμε ενα ενα...

    0 Not allowed! Not allowed!
    ...

  5. #5
    Μέλος Το avatar του χρήστη master3763
    Όνομα
    master3763
    Εγγραφή
    Aug 2007
    Περιοχή
    Αλεξανδρούπολη
    Μηνύματα
    83

    Προεπιλογή

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

    Μέχρι τότε ας κάνουμε μία προσπάθεια με τον κώδικα , να σβήσουμε το λαμπάκι ξαναπατώντας το κουμπί

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη master3763 : 18-03-12 στις 01:35

  6. #6
    Μέλος
    Εγγραφή
    Dec 2004
    Μηνύματα
    1.422

    Προεπιλογή

    εαν κανουμε αυτη την αλλαγή θα εχουμε συνεχως αναμενο Led ?
    πχ.
    while(PINB.0==1) // An to kumpi den einai patimeno ekteleitai o parakato vrogxos


    {
    PORTD.0=1;

    }
    }

    }

    0 Not allowed! Not allowed!
    ...

  7. #7
    Μέλος Το avatar του χρήστη master3763
    Όνομα
    master3763
    Εγγραφή
    Aug 2007
    Περιοχή
    Αλεξανδρούπολη
    Μηνύματα
    83

    Προεπιλογή

    εαν κανουμε αυτη την αλλαγή θα εχουμε συνεχως αναμενο Led ?
    Ναι ακριβώς. Διότι η συνθήκη while(PINB.0==1) ισχύει, και όσο αληθεύει αυτή η συνθήκη θα μπούμε στον βρόγχο και δεν θα ξαναβγούμε ... Μία φόρα θα γίνει αυτό. Εννοώ μετά, και να πατήσεις το κουμπί θα βρίσκεσαι μέσα στον κάτω βρόγχο, στον πάνω δεν μπαίνεις άλλο ..

    Με τον πάνω εννοώ την γραμμή
    while(PINB.0==0) // elegxos katastasis tu kumpiu

    Με τον κάτω εννοώ την γραμμή

    while(PINB.0==1) // An to kumpi den einai patimeno ekteleitai o parakato vrogxos

    0 Not allowed! Not allowed!

  8. #8
    Μέλος Το avatar του χρήστη FILMAN
    Όνομα
    Φίλιππος
    Εγγραφή
    Dec 2009
    Περιοχή
    Δάφνη, Αθήνα
    Μηνύματα
    11.991

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από master3763 Εμφάνιση μηνυμάτων
    καταλήγει στο pin B.0 του MC. Οπότε το Β.0 παίρνει 0 volt. Αν τώρα ανοίξουμε τον διακόπτη το pin B.0 δεν θα έχει ποια το απόλυτο 0 volt αλλά κάποια άλλη τάση (δεν μας ενδιαφέρει). Σημασία έχει ότι η συνθήκη while(PINB.0==1) θα είναι αληθής.
    Εεεεεε! Γιατί δεν μας ενδιαφέρει; Θέλει οπωσδήποτε pull up αντίσταση (εκτός αν ενεργοποιήσεις τις εσωτερικές)
    Παράθεση Αρχικό μήνυμα από master3763 Εμφάνιση μηνυμάτων
    Καλό θα ήταν να βάλουμε μία αντίσταση το λιγότερο 150 Ohm σε σειρά με το LED για να μην κάψουμε τον MC.
    Απαραίτητο, όχι καλό!

    0 Not allowed! Not allowed!

  9. #9
    Μέλος Το avatar του χρήστη master3763
    Όνομα
    master3763
    Εγγραφή
    Aug 2007
    Περιοχή
    Αλεξανδρούπολη
    Μηνύματα
    83

    Προεπιλογή

    Φίλιππε έχεις δίκιο για την αντίσταση των 150 Ohm ) Είναι ΑΠΠΑΡΑΙΤΗΤΗ. Για τα pull-up μπορείτε να διαβάσετε εδώ:
    http://en.wikipedia.org/wiki/Pull-up_resistor
    Το κακό είναι ότι δεν μπορώ να τα γράφω όλα απ ότι καταλαβαίνεται φαντάζομαι ) θα γράψω τα ουσιώδη και ας τα συμπληρώσουμε εδώ από κάτω.

    0 Not allowed! Not allowed!

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

  1. Κουμπιά για ανακατασκευή παλιάς συσκευής
    By SV1EOR in forum Όργανα & Εξοπλισμός
    Απαντήσεις: 25
    Τελευταίο Μήνυμα: 27-03-16, 22:28
  2. Αρχή με τον Atmega8 - Διακοπές
    By master3763 in forum Μικροελεγκτές
    Απαντήσεις: 0
    Τελευταίο Μήνυμα: 19-03-12, 14:45
  3. Απαντήσεις: 37
    Τελευταίο Μήνυμα: 16-03-12, 18:22
  4. Αρχή με τον Atmega8 - μαθήματα μικροελεγκτών
    By master3763 in forum Μικροελεγκτές
    Απαντήσεις: 44
    Τελευταίο Μήνυμα: 15-03-12, 10:27
  5. κουμπιά αφής
    By kostas1987 in forum Ηλεκτρονικά
    Απαντήσεις: 10
    Τελευταίο Μήνυμα: 07-02-09, 01:37

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

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