Πίνακας περιεχομένων:

LED και βαρύτητα;: 4 βήματα
LED και βαρύτητα;: 4 βήματα

Βίντεο: LED και βαρύτητα;: 4 βήματα

Βίντεο: LED και βαρύτητα;: 4 βήματα
Βίντεο: Μαθαίνω ποδήλατο σε 4 βήματα 2024, Ιούλιος
Anonim
LED και βαρύτητα
LED και βαρύτητα

Αυτό το έργο δεν έχει καθόλου πρακτική χρήση, αλλά ξεκίνησε ως άσκηση στην εφαρμογή τύπων φυσικής που σχετίζονται με τη βαρύτητα στον κώδικα C σε ένα Arduino. Για να γίνουν ορατά τα πράγματα, χρησιμοποιήθηκε μια λωρίδα LED neopixel με 74 LED. Η επίδραση της βαρυτικής επιτάχυνσης σε ένα αντικείμενο αποδεικνύεται χρησιμοποιώντας επιταχυνσιόμετρο MPU-6050 και τσιπ γυροσκοπίου. Αυτό το τσιπ είναι φυσικά προσαρτημένο στη λωρίδα LED, οπότε όταν η λωρίδα LED κρατιέται σε μια συγκεκριμένη γωνία, το τσιπ μετρά τη γωνία της λωρίδας LED και το Arduino χρησιμοποιεί αυτές τις πληροφορίες για να ενημερώσει τη θέση ενός εικονικού αντικειμένου σαν να ήταν μια μπάλα που είναι ισορροπημένη σε μια δοκό και κυλά από τη μία πλευρά στην άλλη εάν η δέσμη συγκρατείται υπό γωνία. Η θέση του εικονικού αντικειμένου υποδεικνύεται στη λωρίδα LED ως ενιαίο LED που φωτίζεται.

Για να ενημερώσουμε τη θέση ενός εικονικού αντικειμένου που πέφτει στη γη υπό την επίδραση της βαρύτητας, χρησιμοποιούμε τον τύπο:

y = y0 + (V0 * t) + (0.5 * a * t^2)

Με:

y = απόσταση που διανύθηκε σε μέτρα y0 = απόσταση εκκίνησης σε μέτρα v0 = ταχύτητα έναρξης σε μέτρα/δευτερόλεπτο a = επιτάχυνση (βαρύτητα) σε μέτρα/δευτερόλεπτο^2 t = χρόνος σε δευτερόλεπτα

Βήμα 1: Κύκλωμα

Κύκλωμα
Κύκλωμα

Το Arduino Pro Mini τροφοδοτείται τροφοδοτώντας μια παροχή +5V απευθείας στον πείρο +5V, η οποία είναι η έξοδος του ενσωματωμένου ρυθμιστή 5V. Αυτό μπορεί να φαίνεται λίγο ορθόδοξο, αλλά όταν το Vin παραμένει ανοιχτό, δεν δημιουργεί πρόβλημα εφόσον δεν αντιστρέψετε την πολικότητα, γιατί αυτό σίγουρα θα φρυγανίσει το Arduino σας.

Το επιταχυνσιόμετρο MPU6050 και το τσιπ γυροσκοπίου τροφοδοτείται μέσω μονάδας μετατροπέα χαμηλής ισχύος 5V σε 3V3 και συνομιλεί με το Arduino μέσω διεπαφής I2C (SDA, SCL). Με το Arduino Pro Mini, το SDA συνδέεται με το A4 και το SCL με το A5, τα οποία βρίσκονται και τα δύο στο Arduino Pro Mini PCB. Με την έκδοση Pro Mini που χρησιμοποιώ, το A4 και το A5 βρίσκονταν μέσα στο PCB (2 οπές) και δεν ήταν προσβάσιμα μέσω των κεφαλίδων των ακίδων στα πλαϊνά του PCB. Το MPU6050 έχει επίσης έξοδο διακοπής (INT) που χρησιμοποιείται για την ενημέρωση του Arduino όταν υπάρχουν διαθέσιμα νέα δεδομένα. Η λωρίδα LED neopixel WS2812B με 74 LED τροφοδοτείται απευθείας από την τροφοδοσία 5V και διαθέτει 1 γραμμή δεδομένων (DIN) που συνδέεται με έξοδο του Arduino.

Βήμα 2: Λογισμικό

Έβαλα όλα τα προγράμματα οδήγησης που χρησιμοποιούνται από το σκίτσο (.ino) στον ίδιο φάκελο με το σκίτσο αντί για βιβλιοθήκες. Ο λόγος για αυτό είναι ότι δεν θέλω να ενημερώνονται τα προγράμματα οδήγησης, να αποφεύγονται τα κρυφά σφάλματα και ότι οι αλλαγές που έκανα στα προγράμματα οδήγησης θα αντικατασταθούν από ενημερώσεις.

Ακολουθεί μια λίστα με τα αρχεία του έργου:

  • Balancing_LED_using_MPU6050gyro.ino: σκίτσο αρχείο
  • MPU6050.cpp / MPU6050.h: επιταχυνσιόμετρο MPU6050 και πρόγραμμα οδήγησης γυροσκοπίου
  • MPU6050_6Axis_MotionApps20.h: ορισμοί και λειτουργίες MPU6050 DMP (ψηφιακός επεξεργαστής κίνησης)
  • helper_3dmath.h: Ορισμοί κλάσης για τεταρτημόρια και ακέραια ή διανύσματα πλωτήρα.
  • I2Cdev.cpp / I2Cdev.h: Πρόγραμμα οδήγησης I2C που χρησιμοποιεί τη βιβλιοθήκη σύρματος Arduino
  • LEDMotion.cpp / LEDMotion.h: Υλοποίηση του ισοζυγίου βαρύτητας LED χρησιμοποιώντας τη λωρίδα LED και τη γωνία που μετράται από το MPU6050

Βήμα 3: Εικόνες

Συνιστάται: