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

Θέμα: arduino driver motοr κώδικας

  1. #1
    Μέλος
    Όνομα
    Παντελής
    Εγγραφή
    Jun 2010
    Περιοχή
    Πελλοπονησος
    Μηνύματα
    274

    Προεπιλογή arduino driver motοr κώδικας

    Καλησπέρα, εχω καταφέρει και έχω φτιαξει το παρακάτω κωδικα ο οποιος αφορά μια βαση pan & titl για καμερα. Ειναι 2 βηματικα μοτερ μαζι με τους drivers τους ,έχω βάλει 4 μπουτον όπου τα 2 μπουτον ελεγχουν το ένα μοτερ αριστερά-δεξια και τα άλλα 2 το άλλο μοτερ πάνω-κάτω,εως εδω λειτουργουν όλα κανονικά.Αυτό που θέλω είναι να βάλω 2 τερματικους διακόπτες ,εναν αριστερά ή δεξια και αλλον έναν πάνω η κάτω. Δε ξέρω αν πρεπει να εκμεταλευτώ το χρονο η τα steps και με ποιο τρόπο.Επισης θα πρεπει φαντάζομαι όταν δίνω ρευμα να αρχικοποιουνται προς τους διακοπτες ετσι ώστε να γνωρισζουν που βρίσκονται.Δυστηχώς δε μπορώ να βάλω 4 τερματικους διακόπτες αλλά μονο 2 , πως μπορεί να γίνει αυτο

    Κώδικας:
    
    
    
    // δεξια-αριστερα
    const int stepPinM2 = 6;
    const int dirPinM2 = 7; 
    const int buttonPinM2 = 5;  //δεξια
    int buttonStateM2 = 0;
    int enableState = 12;
    
    
    int buttonStateM3 = 0;
    const int buttonPinM3 = 9; //αριστερα
    
    
    
    
    int buttonStateM4 = 0;
    const int buttonPinM4 = 8;  //κατω
    
    
     
    // πανω -κατω
    const int stepPinM1 = 3;
    const int dirPinM1 = 4; 
    const int buttonPinM1 = 2;   //πανω
    int buttonStateM1 = 0;
    
    
    
    
    
    
    
    
    
    
    
    
     
    void setup() {
    
    
    
    
                                       //δεξια-αριστερα
       pinMode(stepPinM2,OUTPUT);
         pinMode(dirPinM2,OUTPUT);
          int buttonStateM2 = LOW; 
           int buttonStateM3 = LOW; 
             pinMode(buttonPinM2, INPUT);
              pinMode(buttonPinM3, INPUT); 
    pinMode (enableState,OUTPUT);
            
                                        //πανω-κατω
      // Sets the two pins as Outputs
      pinMode(stepPinM1,OUTPUT); 
       pinMode(dirPinM1,OUTPUT);
        int buttonStateM1 = LOW; 
          int buttonStateM4 = LOW; 
            pinMode(buttonPinM1, INPUT);
              pinMode(buttonPinM4, INPUT);
           
    }
    void loop() {
    
    
                                  //enable pin a4988 for sleep mode
    if (buttonStateM2 == HIGH ||
    buttonStateM1 == HIGH ||
    buttonStateM3 == HIGH ||
    buttonStateM4 == HIGH)
    {
      digitalWrite(enableState, LOW);
    
    
     }
    else
    {
     digitalWrite(enableState, HIGH);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    //δεξια
       buttonStateM2 = digitalRead(buttonPinM2);     
    if (buttonStateM2 == HIGH) {
      digitalWrite(dirPinM2,HIGH); 
      digitalWrite(stepPinM2, HIGH);
      delayMicroseconds(1000);
      digitalWrite(stepPinM2, LOW);
      delayMicroseconds(1000);
     }
    
    
    
    
    
    
    
    
    
    
    //αριστερα
       buttonStateM3 = digitalRead(buttonPinM3);   
    if (buttonStateM3 == HIGH) {
      digitalWrite(dirPinM2,LOW); 
      digitalWrite(stepPinM2, HIGH);
      delayMicroseconds(1000);
      digitalWrite(stepPinM2, LOW);
      delayMicroseconds(1000);
     }
    
    
    
    
    
    
      //πανω
      buttonStateM1 = digitalRead(buttonPinM1);
     if (buttonStateM1 == HIGH) {
    
    
      digitalWrite(dirPinM1,HIGH); 
      digitalWrite(stepPinM1, HIGH);
      delayMicroseconds(1000);
      digitalWrite(stepPinM1, LOW);
      delayMicroseconds(1000);
     }
    
    
    
    
    //κατω
     buttonStateM4 = digitalRead(buttonPinM4);
     if (buttonStateM4 == HIGH) {
    
    
      digitalWrite(dirPinM1,LOW); 
      digitalWrite(stepPinM1, HIGH);
      delayMicroseconds(1000);
      digitalWrite(stepPinM1, LOW);
      delayMicroseconds(1000);
     }
     
    }

    0 Not allowed! Not allowed!

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

    Προεπιλογή

    Θα κάνεις 1 άλλο προγραμματάκι για να μετρήσεις βήματα. 1 πάτημα = 1 βήμα και να σου στέλνει το άθροισμα σειριακή.
    Θα μετρήσεις πόσα βήματα είναι απ' το σημείο που πατιέτε ο τερματικός μέχρι την άλλη άκρη.

    Όταν ξεκινάει θα το πας σιγά σιγά προς τους τερματικούς και θα έχεις στον κώδικα τον μέγιστο αριθμό βημάτων που του επιτρέπεις.Μόλις πατηθεί θα ξέρεις πως έχει Χ βήματα (όσα μέτρησες) διαθέσιμα προς την άλλη κατεύθυνση. Αν δεν χρειάζεται να πάει τσίμα τσίμα μπορείς να το σταματάς και λίγο πριν την άλλη άκρη μειώνοντας τον μέγιστο αριθμό διαθέσιμων βημάτων.
    Και κάθε φορά που θα το μετακινείς θα αλλάζεις τον αριθμό διαθέσιμων βημάτων ανάλογα με την μετατόπιση που έκανες.
    Επίσης για να μην το κοπανάς συνέχεια στους τερματικούς μπορείς να μειώσεις τα βήματα και να πας όλη την περιοχή λίγο πιο δίπλα απ' τον τερματικό.

    0 Not allowed! Not allowed!

  3. #3
    Μέλος
    Όνομα
    Παντελής
    Εγγραφή
    Jun 2010
    Περιοχή
    Πελλοπονησος
    Μηνύματα
    274

    Προεπιλογή

    φιλε Στεφανε σε ευχαριστω γιατο κοπο σου ,βασικα εγω θελω οσο κραταω το κουμπι να γυρναει και οταν το αφησω να σταματησει,για να ξεκινησω να ψαχνω πιστευεις ιτθ γινεται με μια μετυαβλητη που θα τρεχει στη for kai οταν φτασει στο τερμα θα το πω stop ?

    0 Not allowed! Not allowed!

  4. #4
    Συντονιστής Το avatar του χρήστη nestoras
    Όνομα
    Παναγιώτης
    Εγγραφή
    Feb 2006
    Περιοχή
    Ξάνθη
    Μηνύματα
    4.615

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από alfadex Εμφάνιση μηνυμάτων
    Δυστηχώς δε μπορώ να βάλω 4 τερματικους διακόπτες αλλά μονο 2 , πως μπορεί να γίνει αυτο
    Δεν μπορείς "κατασκευαστικά" να τοποθετήσεις 4 τερματικούς διακόπτες ή είναι θέμα του μικροελεγκτή σου (πχ έχεις ξεμείνει από εισόδους/εξόδους);

    0 Not allowed! Not allowed!
    FreeBsD For Ever

  5. #5
    Μέλος
    Όνομα
    Παντελής
    Εγγραφή
    Jun 2010
    Περιοχή
    Πελλοπονησος
    Μηνύματα
    274

    Προεπιλογή

    είναι θέμα χωρου ,δε χωρανε να μπουν αλλοι 2

    0 Not allowed! Not allowed!

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

    Προεπιλογή

    Δεν έχεις for, φαντάζομαι εννοείς την loop. Η loop είναι while(true){ ....} η for έχει πεπερασμένο αριθμό επαναλήψεων.


    Κάπως έτσι θα είναι το διάγραμμα ροής του προγράμματος για να μπορεί να πάει και πάνω-κάτω και αριστερά δεξιά ταυτόχρονα
    (ίσως είναι καλύτερα να αποθηκεύεις που θέλεις να πάει, να στέλνεις τις τιμές όλες μαζί στον driver στο τέλος και να κάνεις delay)
    Τα max τα έχεις ρυθμισμένα κάνοντας την μέτρηση μήκους όπως είπαμε, και στην αρχή μηδενίζεις τις θέσεις στέλνοντάς τα στους τερματικούς.


    1 Not allowed! Not allowed!

  7. #7
    Μέλος
    Όνομα
    Παντελής
    Εγγραφή
    Jun 2010
    Περιοχή
    Πελλοπονησος
    Μηνύματα
    274

    Προεπιλογή

    το πιασα Στεφανε ..θα το παλεψω

    0 Not allowed! Not allowed!

  8. #8
    Νέο Μέλος
    Όνομα
    Σπύρος
    Εγγραφή
    Dec 2011
    Περιοχή
    Νίκαια
    Μηνύματα
    7

    Προεπιλογή

    Καλησπερα! Mπορεις να χρησιμοποιησεις μια analog input για ολα τα button που εχεις. Ριξε μια ματια εδω http://forum.arduino.cc/index.php?topic=8558.0.Το ιδιο θα μπορουσες να κανεις και με τα end stops νομιζω. Αν οχι σου μενουν ελευθερες 4 digital inputs.

    0 Not allowed! Not allowed!

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

    N.Pneuma (24-03-17)

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

  1. Κώδικας και σύνδεση TFT(1.8SPI) με Arduino;
    By maki in forum Μικροελεγκτές
    Απαντήσεις: 9
    Τελευταίο Μήνυμα: 08-10-16, 15:07
  2. html κώδικας σε Arduino - ανεπαρκής μνήμη
    By lelek in forum Μικροελεγκτές
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 05-06-15, 09:26
  3. SOS ΒΟΗΘΕΙΑ ΓΙΑ LIBRARY ARDUINO+EASYSTEPPER DRIVER
    By ΓΙΑΝΝΗΣ ΚΑΣΤΟΡΙΑ in forum Μικροελεγκτές
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 24-02-12, 17:37
  4. Κώδικας Q
    By Giannis511 in forum Ραδιοερασιτεχνισμός
    Απαντήσεις: 13
    Τελευταίο Μήνυμα: 07-09-07, 23:23
  5. Κώδικας AVR
    By ALAMAN in forum Μικροελεγκτές
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 02-04-07, 11:21

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

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