Είναι απλό να ξεχάσετε, ωστόσο το Arduino χρησιμοποιεί C ++. Συνήθως, το τμήμα C ++ βρίσκεται στις βιβλιοθήκες καθώς και το πλαίσιο καθώς και πολλοί άνθρωποι τείνουν να κωδικοποιούν τα κύρια προγράμματα που χρησιμοποιούν ένα στυλ C μόνο χρησιμοποιώντας τα αντικείμενα της βιβλιοθήκης όπως επεκτάσεις γ γλώσσα. [Fredllll] μόλις πρόσφατα παρήγαγε μια βιβλιοθήκη προτύπων σχεδίασης για να επιταχύνει το Arduino I / O καθώς και το μοιράστηκε στο GitHub.
Εάν έχετε κάνει ποτέ κάτι σημαντικό με το Arduino, κατά πάσα πιθανότητα καταλάβεις ότι ενώ το DigitalWrite είναι βολικό, κάνει μια μεγάλη δουλειά πίσω από τις σκηνές για να βεβαιωθείτε ότι ο πείρος είναι διαμόρφωση καθώς και αυτό προσθέτει εναέρια σε κάθε κλήση. Οι εκδόσεις προτύπου σχεδιασμού [Fredllll] μπορούν να αλλάξουν το PIN να ορίζει σε δύο κύκλους. Μπορείτε να κόψετε αυτό στο μισό αν δεν σας πειράζει να ενοχλεί το καθορίστε άλλους καρφίτσες στην ίδια ίδια θύρα.
Μπορείτε να χρησιμοποιήσετε μια σταθερή για να ενεργοποιήσετε ένα PIN, όπως αυτό:
switchon <1> ();
Εάν δεν σας αρέσει να χρησιμοποιείτε τους μαγικούς αριθμούς (και αυτό είναι έξυπνο) μπορείτε να ορίσετε μια σταθερά:
const uint8_t Ledpin = 1;
switchon ();
Επειδή πιθανότατα θέλετε να κάνετε κάποιο κομψό χρονισμό, υπάρχει επίσης ένα πρότυπο σχεδίασης NOP που σας επιτρέπει να καθυστερήσετε έναν καθορισμένο αριθμό κύκλων. Εδώ είναι κάποιος κώδικας δοκιμής από το Reddit που παράγει ένα τετράγωνο κύμα 1,3 MHz, για παράδειγμα:
const uint8_t mypin = 5;
κενό βρόχο () {
CLI (); // Απενεργοποιήστε τις διακοπές καθώς θα βιδόταν το χρονοδιάγραμμα
κάνω {
liftonexclusive (); // 1 κύκλος
nop <5> (); // 5 κύκλοι
switchoffportofpin (); // 1 κύκλος
nop <3> (); // 3 κύκλοι
} ενώ (1) // το άλμα πίσω για να κάνετε είναι 2 κύκλοι
}
Προφανώς, αυτό δεν είναι το μέγιστο, είτε, επειδή υπάρχουν οκτώ κύκλοι καθυστέρησης στον βρόχο.
Δεν χρειάζεται να καταλάβετε πολλά για τα πρότυπα για να χρησιμοποιήσετε αυτή τη βιβλιοθήκη, ωστόσο, αν θέλετε να καταλάβετε περισσότερα, τα καλύψαμε στο παρελθόν. Σημείωσαμε πριν από αυτό το digitalwrite είναι περίπου πενήντα φορές πιο αργά από μια άμεση πρόσβαση λιμένα, καθώς και οι άλλες πράξεις εισόδου / εξόδου δεν είναι πολύ καλύτερες. Θα ήταν συναρπαστικό να ελέγξετε αν τα πρότυπα ενδέχεται να κάνουν άλλες πράξεις πολύ πιο αποτελεσματικές.