1
johnkoreli (04-04-20)
Πολύ σωστά. Μπράβο. Έχω θολώσει κ δεν βλέπω βασικά πράγματα.
ΛΥΘΗΚΕ
Λοιπόν, 2 προβλήματα υπήρχαν τελικά και όχι ένα.
1. αρχικά η αριστερή μεριά που νόμιζα ότι τρέχει κανονικά, στην πράξη δεν άλλαζε την ταχύτητα του stepper ιδιαίτερα. Με μπέρδευαν οι τιμές του μόνιτορ γιατί έβλεπα ταυτόχρονα και το αποτέλεσμα της map και την τιμή του joy.
Στην ουσία η map έφερνε ψιλό κουλές τιμές από 380 μέχρι 450 αντί 0-450.
Το λάθος ήταν στην map. Μιας κ έχει πολλ/μους και διαιρέσεις λέω το out δε μπορεί να είναι ΙΝΤ. το γύρισα σε float και όλα καλά !!
Κώδικας:int mymap(int x, int in_min, int in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;}
2ο. Πρόβλημα, απ ότι κατάλαβα "δυσκολευόταν" να φέρει τιμές κοντά στο 0. κάτι παίζει με μαθηματικά φαντάζομαι στην map.
Οπότε άλλαξα την κατώτερη ταχύτητα σε 80 μιας και είναι αρκετά αργή στην ουσία και πρακτικά κάνω τη δουλειά μου με το παραπάνω.
όποτε..
Υ.Γ. Ευχαριστώ τους nkarama και SProg για την διευκρίνηση των τιμών με το "=". Ήταν το έναυσμα να λύσω όλα τα υπόλοιπα.Κώδικας:if ( (vrx_data >= 540) && (vrx_data <= 1023) ) //τιμες οπου το joy ειναι στην δεξια θεση { xMap = mymap(vrx_data, 540,1023, 80,450); myStepper.setSpeed(xMap); myStepper.step(-32); Serial.println(xMap); // Serial.println(vrx_data); }
Γενικά καλό είναι όπου υπάρχει IF να υπάρχει και ELSE. Ειδικά κατά την ανάπτυξη.