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

Θέμα: Arduino Nano αντιστροφος Counter

  1. #1
    Μέλος
    Όνομα
    vagelis
    Εγγραφή
    Nov 2019
    Περιοχή
    Αθήνα
    Μηνύματα
    316

    Προεπιλογή Arduino Nano αντιστροφος Counter

    Χαιρετω και προχωρω σε ερωτηση.
    Βρηκα ενα κωδικα που κανει αντιστροφη μετρηση (display) απο 8 εως 0

    Μπορει καποιος να βοηθησει σε 2..3 αλλαγες;

    1. Αφαιρεση του 8 και μετρηση απο 7 εως 0

    2. Οταν εκκινησει η αντιστροφη μετρηση να ενεργοποιει ελα led για εως το 0 , μετα σβησιμο
    και οταν σβησει 2ο led αναμενο για 20''

    Οι γνωσεις μου περι ειναι πολυ λιγες, το προσπαθησα παντως πριν forum.

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



    // C++ code
    #define A 13
    #define B 12
    #define C 11
    #define D 10
    #define E 9
    #define F 8
    #define G 7


    #define CLK 2
    #define DT 3
    #define SW 4


    boolean ledCathode = false; //if you using anode 7 segment display, Make it true


    int currentStateCLK, lastStateCLK, start;
    unsigned long lastButtonPress = 0;
    unsigned int counter = 0;


    int countDelay = 1000; // Countdown delay


    byte numeral[11] = {
    B0000001,//0
    B1001111,//1
    B0010010,//2
    B0000110,//3
    B1001100,//4
    B0100100,//5
    B0100000,//6
    B0001111,//7
    // B0000000,//8 αφαιρεσα το 8 αλλα το ξαναδειχνει
    // B0001100,//9 δεν το ξαναδειχνει ο.κ.
    // B0111000 //F δεν το ξαναδειχνει ο.κ.
    };


    const int segmentPins[7] = {G, F, E, D, C, B, A};


    void setup()
    {
    Serial.begin(9600);
    for (int i = 0; i < 7; i++)
    {
    pinMode(segmentPins[i], OUTPUT);
    }


    pinMode(CLK, INPUT);
    pinMode(DT, INPUT);
    pinMode(SW, INPUT_PULLUP);
    lastStateCLK = digitalRead(CLK);
    counter = 0;
    }


    void loop()
    {
    currentStateCLK = digitalRead(CLK);
    if (currentStateCLK != lastStateCLK && currentStateCLK == 1) {
    if (digitalRead(DT) != currentStateCLK) {
    counter ++;
    } else {
    counter --;
    }
    }
    lastStateCLK = currentStateCLK;
    Serial.println(counter);
    if (counter > 0 && counter <= 10) {
    showDigit(counter);
    } else if (counter == 11) {
    counter = 0;
    showDigit(counter);
    } else {
    counter = 0;
    showDigit(counter);
    }

    int btnState = digitalRead(SW);
    if (btnState == LOW) {
    if (millis() - lastButtonPress > 50) {
    Serial.println("Button pressed!");
    for (start = counter; start >= 0; start -- ) {
    showDigit(start);
    delay(countDelay);
    }
    counter = 0;
    showDigit(counter);
    }
    lastButtonPress = millis();
    }
    delay(1);
    }


    void showDigit( int number)
    {
    boolean isBitSet;
    for (int segment = 0; segment < 7; segment++)
    {
    isBitSet = bitRead(numeral[number], segment);
    if (ledCathode == true) {
    isBitSet = ! isBitSet;
    }
    digitalWrite( segmentPins[segment], isBitSet);
    }
    }

    0 Not allowed! Not allowed!

  2. #2
    Μέλος
    Όνομα
    Καλαρακης Μιχαλης
    Εγγραφή
    Jan 2011
    Περιοχή
    Ηρακλειο
    Μηνύματα
    2.043

    Προεπιλογή

    Δεν έχεις αλλάξει τα ότι που θα δείχνει
    Τα όρια είναι το >0 και το <=10
    To 10 μικρανε
    Αυτό που το ξαναγυρίζει στο 0ειναι το 11

    0 Not allowed! Not allowed!

  3. #3
    Μέλος
    Όνομα
    vagelis
    Εγγραφή
    Nov 2019
    Περιοχή
    Αθήνα
    Μηνύματα
    316

    Προεπιλογή

    Καλημερα και σωστος.
    Παει τωρα απο 0 εως 7.

    Για τελευταιο : Οταν εκκινησει η αντιστροφη μετρηση να ενεργοποιει ελα led για εως το 0 , μετα σβησιμο
    και οταν σβησει 2ο led αναμενο για 20'' ειναι εφικτο ; 'Η εστω 1 led , ας αφησουμε το 2ο.
    Ευχαριστω και παλι.

    0 Not allowed! Not allowed!

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

    Προεπιλογή

    πέρασε και δοκίμασε τον παρακάτω κώδικα.
    Τα LED θα τα βάλεις από τα πιν του arduino που θα επιλέξεις, άνοδος στο πιν και η κάθοδος με μια αντίσταση 150Ωμ στο GND

    όπου έχω κάνει αλλαγές έχω βάλλει τα ++++ σε σχόλιο ή έχω σχoλιάσει, για να δεις τον κώδικα



    #define A 13
    #define B 12
    #define C 11
    #define D 10
    #define E 9
    #define F 8
    #define G 7




    #define CLK 2
    #define DT 3
    #define SW 4
    #define LED1 XX // το ΧΧ θα το αλλάξεις με το πιν που θα βάλεις το LED1 ++++++++++++++++
    #define LED2 XX // το ΧΧ θα το αλλάξεις με το πιν που θα βάλεις το LED2 ++++++++++++++++


    boolean ledCathode = false; //if you using anode 7 segment display, Make it true




    int currentStateCLK, lastStateCLK, start;
    unsigned long lastButtonPress = 0;
    unsigned int counter = 0;




    int countDelay = 1000; // Countdown delay




    byte numeral[11] = {
    B0000001,//0
    B1001111,//1
    B0010010,//2
    B0000110,//3
    B1001100,//4
    B0100100,//5
    B0100000,//6
    B0001111,//7
    B0000000, //8 αφαιρεσα το 8 αλλα το ξαναδειχνει ++++++++ εδώ απλά ορίζονται τα ψηφία δεν
    B0001100, //9 δεν το ξαναδειχνει ο.κ. ++++++++ έχεις λόγο να τα αφαιρέσεις μπορείς
    B0111000 //F δεν το ξαναδειχνει ο.κ. ++++++++ να τα ξαναχρησιμοποιήσεις όποτε χρειαστει
    };




    const int segmentPins[7] = {G, F, E, D, C, B, A};




    void setup()
    {
    Serial.begin(9600);
    for (int i = 0; i < 7; i++)
    {
    pinMode(segmentPins[i], OUTPUT);
    }
    pinMode(LED1, OUTPUT); //++++++++++++++++++++++++++
    pinMode(LED2, OUTPUT); //++++++++++++++++++++++++++
    pinMode(CLK, INPUT);
    pinMode(DT, INPUT);
    pinMode(SW, INPUT_PULLUP);
    lastStateCLK = digitalRead(CLK);
    counter = 0;
    }




    void loop()
    {
    currentStateCLK = digitalRead(CLK);
    if (currentStateCLK != lastStateCLK && currentStateCLK == 1) {
    if (digitalRead(DT) != currentStateCLK) {
    counter ++;
    } else {
    counter --;
    }
    }
    lastStateCLK = currentStateCLK;
    Serial.println(counter);
    if (counter > 0 && counter <= 10) {
    showDigit(counter);
    } else if (counter == 11) {
    counter = 0;
    showDigit(counter);
    } else {
    counter = 0;
    showDigit(counter);
    }


    int btnState = digitalRead(SW);
    if (btnState == LOW) {
    if (millis() - lastButtonPress > 50) {
    Serial.println("Button pressed!");
    digitalWrite(LED1, HIGH); // ====================== εδώ θα ανάψει το LED1
    for (start = counter; start >= 0; start -- ) {
    showDigit(start);
    delay(countDelay);
    if (start==0){
    digitalWrite(LED1, LOW); // ====================== εδώ θα σβήσει το LED1
    digitalWrite(LED2, HIGH); // ====================== εδώ θα ανάψει το LED2
    delay(20000); //================ εδώ καθυστέρηση 20 sec
    // === καθυστέρηση με ταυτόχρονο πάγωμα του προγράμματος
    //==== αν αυτό δεν βολεύει θα πρέπει να γίνει καθυστέρηση με την millis()
    digitalWrite(LED2, LOW); // ====================== εδώ θα σβήσει το LED2
    }
    }
    counter = 0;
    showDigit(counter);
    }
    lastButtonPress = millis();
    }
    delay(1);
    }




    void showDigit( int number)
    {
    boolean isBitSet;
    for (int segment = 0; segment < 7; segment++)
    {
    isBitSet = bitRead(numeral[number], segment);
    if (ledCathode == true) {
    isBitSet = ! isBitSet;
    }
    digitalWrite( segmentPins[segment], isBitSet);
    }
    }

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

  5. #5
    Μέλος
    Όνομα
    vagelis
    Εγγραφή
    Nov 2019
    Περιοχή
    Αθήνα
    Μηνύματα
    316

    Προεπιλογή

    Ευχαριστω για χρονο σου elektronio . Θα το παλεψω αυριο. Καλη εβδομαδα, Ευχαριστω και παλι.

    0 Not allowed! Not allowed!

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

  1. Εγκατάσταση arduino nano
    By galman in forum Μικροελεγκτές
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 13-05-20, 16:40
  2. Arduino Nano
    By leuteris107 in forum Μικροελεγκτές
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 24-12-16, 10:04
  3. ARDUINO NANO
    By electricalgian in forum Ηλεκτρονικά
    Απαντήσεις: 17
    Τελευταίο Μήνυμα: 17-05-16, 19:13
  4. arduino nano
    By FMTRIKALA in forum Μικροελεγκτές
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 26-11-15, 09:29
  5. Ραδιόφωνο FM με Arduino nano
    By CLOCKMAN in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 27
    Τελευταίο Μήνυμα: 16-02-15, 17:38

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

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