0
Καλησπέρα, εχω καταφέρει και έχω φτιαξει το παρακάτω κωδικα ο οποιος αφορά μια βαση 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); } }