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

Φως σήματος ποδηλάτου: 10 βήματα (με εικόνες)
Φως σήματος ποδηλάτου: 10 βήματα (με εικόνες)

Βίντεο: Φως σήματος ποδηλάτου: 10 βήματα (με εικόνες)

Βίντεο: Φως σήματος ποδηλάτου: 10 βήματα (με εικόνες)
Βίντεο: ΣΟΚ: ΒΡΗΚΑ ΚΑΡΧΑΡΙΑ😱😱 2024, Νοέμβριος
Anonim
Φως σήματος ποδηλάτου
Φως σήματος ποδηλάτου

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

Σημείωση: Αυτό απαιτεί προηγούμενη γνώση του τρόπου συγκόλλησης και μια ιδέα για τον τρόπο προγραμματισμού AVR είναι ένα μεγάλο πλεονέκτημα. Έχοντας αυτό κατά νου, διασκεδάστε, κάντε υπομονή και δημοσιεύστε φωτογραφίες του προϊόντος σας παρακάτω! Εδώ είναι ένα βίντεο: Και εδώ είναι μια φωτογραφία μου:

Βήμα 1: Μέρη

Ανταλλακτικά
Ανταλλακτικά

x1 ATmega 32L 8PU (www.digikey.com) x1 40-pin DIP socket (www.digikey.com) x1 8x8 LED Array (www.sparkfun.com) x1 74138 De-multiplexer (www.digikey.com) x2 Flex αισθητήρες (www.sparkfun.com) x (Πολλοί) Αντιστάσεις 180 ohm και 10k ohmx2 Πίνακας Η / Υ (www.sparkfun.com) x6 Standoffs (www.sparkfun.com) και βίδες που ταιριάζουν (Local Hardware Store) x1 Επιταχυνσιόμετρο σε διάτρητη σανίδα (www.sparkfun.com) κεφαλίδες x2 - Αρσενικές (www.sparkfun.com), Γυναίκες (www.sparkfun.com) και Δεξιά γωνία (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 πρίζες (Πήρα το δικό μου στο Radio Shack) x1 9v μπαταρία x 1 πόδι stick-on velcrox1 Πλήρες δάχτυλο ποδηλάτου γάντι 1 καρούλι πολυεστέρας threadx1 Προγραμματιστής (το έχω αυτό) x1 Wire stripper και clipx1 Multimeter Μερικά από τα μέρη:

Βήμα 2: Προετοιμάστε τους πίνακες

Προετοιμάστε τους πίνακες
Προετοιμάστε τους πίνακες
Προετοιμάστε τους πίνακες
Προετοιμάστε τους πίνακες
Προετοιμάστε τους πίνακες
Προετοιμάστε τους πίνακες
Προετοιμάστε τους πίνακες
Προετοιμάστε τους πίνακες

Πρώτα, προσθέστε τις αντιδράσεις. Θα πρέπει να βιδώσετε δύο μαζί για να αποκτήσετε το σωστό ύψος. Βεβαιωθείτε ότι οι στάσεις κατεβαίνουν από το πλάι με τα μαξιλάρια SQUARE. Με αυτόν τον τρόπο μπορείτε να γεφυρώσετε τακάκια με κόλλα στο κάτω μέρος και να γεφυρώσετε με το κοινό μαξιλάρι στην κορυφή για να συνδεθείτε στο έδαφος. Στη συνέχεια, προσθέστε τον πίνακα LED και συγκολλήστε τον. Θα πρέπει να είναι όσο το δυνατόν πιο μακριά στην άκρη του πίνακα με τα δύο στάνταρ, με το YS να βλέπει στην αντίθετη πλευρά. Ο πείρος στο κάτω αριστερό μέρος είναι ο ακροδέκτης 1. (Σημειώνεται επίσης στην εικόνα.) Στη συνέχεια, προσθέστε τις δύο πρίζες των 8 ακίδων η μία πάνω στην άλλη, ώστε να σχηματιστεί μία υποδοχή 16 ακίδων. Βεβαιωθείτε ότι έχετε ένα κενό προς τα αριστερά και, στη συνέχεια, κολλήστε το. Στη συνέχεια, χωρίστε τις αντρικές και τις γυναικείες κεφαλίδες σε 10 και 11 ακίδες. Θα χρειαστείτε διπλάσιες γυναίκες κεφαλίδες. Συγκολλήστε όσους είναι όπως φαίνεται στη φωτογραφία. Όσον αφορά τις αρσενικές κεφαλίδες, πρέπει να αλλάξετε τον πείρο έτσι ώστε να είναι ίσος με την κάθε πλευρά του πλαστικού. Είναι πιο εύκολο να κοιτάξετε μια εικόνα για να δείτε τι εννοώ. Χρησιμοποίησα μερικές πένσες και λειτούργησε αρκετά καλά. Τώρα αν πάρετε τις αρσενικές κεφαλίδες και τις τοποθετήσετε ανάμεσα στις 2 γυναικείες κεφαλίδες θα δείτε ότι έχουν πλέον το σωστό μέγεθος για να συνδέσουν την πάνω και την κάτω σανίδα μεταξύ τους.

Βήμα 3: Προσθέστε τις αντιστάσεις

Προσθέστε τις αντιστάσεις
Προσθέστε τις αντιστάσεις
Προσθέστε τις αντιστάσεις
Προσθέστε τις αντιστάσεις
Προσθέστε τις αντιστάσεις
Προσθέστε τις αντιστάσεις

Αυτές οι αντιστάσεις περνούν μεταξύ της συστοιχίας LED και της 74138 (Ground) για να προστατεύσουν τη συστοιχία. Διπλώστε ένα από τα καλώδια από την αντίσταση στην κορυφή, έτσι ώστε τα δύο καλώδια να είναι παράλληλα. Τοποθετήστε τα στις ακίδες 7, 9, 10, 11, 12, 13, 14 και 15 και κολλήστε. Διαπίστωσα ότι λειτουργεί καλύτερα αν εναλλάσσετε την κατεύθυνση της αντίστασης όπως μπορείτε να δείτε στη δεύτερη και την τρίτη εικόνα.

Βήμα 4: Σύρμα στην κορυφή

Σύρμα στην κορυφή
Σύρμα στην κορυφή
Σύρμα στην κορυφή
Σύρμα στην κορυφή
Σύρμα στην κορυφή
Σύρμα στην κορυφή
Σύρμα στην κορυφή
Σύρμα στην κορυφή

Αυτό είναι μακράν το μεγαλύτερο βήμα του έργου, οπότε ελπίζω να σας αρέσει η συγκόλληση! Απλώς ακολουθήστε το παρακάτω σχήμα και βεβαιωθείτε ότι έχετε δοκιμάσει τη συνέχεια με το πολύμετρο. Σε περίπτωση που θέλετε να μάθετε πώς μας ήρθε με τη σχηματική ματιά στο φύλλο δεδομένων για τον πίνακα και το 74138.

Βήμα 5: Συμπληρώστε το Κάτω

Συμπληρώστε το Κάτω
Συμπληρώστε το Κάτω
Συμπληρώστε το Κάτω
Συμπληρώστε το Κάτω
Συμπληρώστε το Κάτω
Συμπληρώστε το Κάτω
Συμπληρώστε το Κάτω
Συμπληρώστε το Κάτω

Τώρα ήρθε η ώρα να τοποθετήσουμε τα βασικά μας στοιχεία στον κάτω πίνακα. Πρώτα θα κάνουμε την πρίζα 40 ακίδων DIP η οποία πηγαίνει όσο πιο κοντά μπορεί πάνω αφήνοντας μία σειρά χώρου στην αριστερή πλευρά. (Δείτε εικόνα #1.) Συγκολλήστε το και τοποθετήστε τις κεφαλίδες. Ο ευκολότερος τρόπος για να γίνει αυτό είναι να συνδέσετε αυτά που βρίσκονται στην κορυφή με αυτά που θα μπουν στο κάτω μέρος χρησιμοποιώντας τις τροποποιημένες αντρικές κεφαλίδες σας. Εάν κάνατε τα πάντα σωστά, θα πρέπει να καταλήξετε με τις τρεις κορυφαίες τρεις καρφίτσες στην αριστερή κεφαλίδα δίπλα στις κάτω δεξιά ακίδες στην πρίζα. Αυτό είναι εντάξει. Χρησιμοποιούμε μόνο τον πιο κάτω πείρο στα δεξιά και όπως μπορείτε να δείτε έχουμε μια καθαρή βολή από άλλη κατεύθυνση. Τώρα προσθέστε τον ρυθμιστή τάσης όπως φαίνεται στην εικόνα. Ασφάλισα το δικό μου μέσα από την τρύπα του μεταλλικού θερμοσίφωνα με μια βίδα και παξιμάδι. Ο θερμοσίφωνας είναι ένας άλλος τρόπος γείωσης του τσιπ και το βίδωμα του στον πίνακα παρέχει μια σταθερή επαφή με την κοινή σύνδεση. Αυτό συνδέεται με το κάτω μέρος καθώς και το επάνω μέρος επειδή τα δύο συνδέονται με μεταλλικές προεξοχές. Ωστόσο, εάν δεν χρησιμοποιείτε την κοινή σύνδεση γείωσης ΜΗ βιδώνετε τη ψύκτρα στην πλακέτα, καθώς η ψύκτρα λειτουργεί ως γείωση και πιθανότατα θα βραχυκυκλώσετε κάτι. Επόμενο καλώδιο στο κλιπ μπαταρίας. Το κόκκινο πηγαίνει στον πείρο στα αριστερά (Με την ψύκτρα επάνω και τις καρφίτσες κάτω) μαύρο στη μέση και ο δεξιός πείρος παράγει +5v. Τώρα μπορείτε να συνδέσετε την τροφοδοσία στην κορυφή (δείτε εικόνα #2). Τώρα για το πρόγραμμα σύνδεσης προγραμματιστή. Έχω έναν προσαρμογέα που έφτιαξα για τον προγραμματιστή μου, αλλά πιθανότατα θα θέλετε να ενσωματώσετε μια κεφαλίδα 6 ακίδων (3x2) στο σχεδιασμό σας. Ωστόσο, αν έχετε έναν προσαρμογέα όπως εγώ, εδώ είναι αυτό που έκανα. Πήρα μια κεφαλίδα ορθής γωνίας και μια γυναίκα κεφαλίδα και τις κόλλησα μαζί (Εικόνα #3). Στη συνέχεια, το έβαλα στον πίνακα με τον πρώτο πείρο συνδεδεμένο στον πείρο 6. Τώρα πρέπει να τροφοδοτήσετε και να γειώσετε το τσιπ καθώς και καλωδίωση σε μια αντίσταση για να τραβήξετε την επαναφορά ψηλά. Έτρεξα μια αντίσταση 10k από τον πείρο 9 στον πείρο 10 και στη συνέχεια συνέδεσα τον πείρο 10 με +5v. Ο επόμενος πείρος (11) πηγαίνει στην κοινή σύνδεση (Ground). Τέλος, κοιτάξτε την εικόνα #4 για να ολοκληρώσετε αυτό το βήμα (Είναι αρκετά αυτονόητο).

Βήμα 6: Σύρμα στο κάτω μέρος

Σύρμα στο κάτω μέρος
Σύρμα στο κάτω μέρος
Σύρμα στο κάτω μέρος
Σύρμα στο κάτω μέρος
Σύρμα στο κάτω μέρος
Σύρμα στο κάτω μέρος

Θυμάστε αυτό το πραγματικά διασκεδαστικό βήμα όπου πρέπει να περάσετε πάνω από 30 καλώδια για να λειτουργήσει μια σειρά LED; Τώρα πρέπει να το ξανακάνεις! Στον πάτο!. Αυτό είναι λίγο πιο γρήγορο αλλά όχι το δικό μου. Για άλλη μια φορά, κοιτάξτε το σχηματικό και ελέγξτε όλες τις συνδέσεις σας με το πολύμετρό σας. Μην ανησυχείτε, αυτό είναι το τελευταίο μεγάλο κομμάτι συγκόλλησης του έργου και σχεδόν τελειώσατε.

Βήμα 7: Flex αισθητήρες και επιταχυνσιόμετρο

Flex αισθητήρες και επιταχυνσιόμετρο
Flex αισθητήρες και επιταχυνσιόμετρο
Flex αισθητήρες και επιταχυνσιόμετρο
Flex αισθητήρες και επιταχυνσιόμετρο
Flex αισθητήρες και επιταχυνσιόμετρο
Flex αισθητήρες και επιταχυνσιόμετρο

Θα αντιμετωπίσουμε πρώτα τους εύκαμπτους αισθητήρες, αλλά εσείς βρίσκεστε στο σπίτι, όσο πάει το υλικό. Νομίζω ότι οι παρακάτω εικόνες εξηγούν λίγο πολύ τι πρέπει να κάνουμε. Συνδέστε το ένα pin στο +5v το άλλο στο τρίτο ή τέταρτο pin από το επάνω μέρος στη δεξιά πλευρά του AVR (Ο μικροελεγκτής στην καρδιά αυτού του έργου). Όταν το έβαλα για πρώτη φορά, σκέφτηκα ότι αυτό ήταν το μόνο που έπρεπε να κάνω, αλλά αποδεικνύεται ότι για να διαβάσει το AVR τους ευέλικτους αισθητήρες πρέπει να βάλετε μια αντίσταση από τον πείρο στον αισθητήρα που πηγαίνει στο AVR στη γείωση (Δείτε τις εικόνες # 10 και 11). Χρησιμοποίησα 10k. Αυτό διαιρεί την τάση που πηγαίνει στο AVR και πρακτικά διπλασιάζει την ευαισθησία του αισθητήρα. Τώρα για το επιταχυνσιόμετρο. Επειδή το επιταχυνσιόμετρο είναι μόνο ένα τρίχωμα ψηλότερο από το διάστημα μεταξύ των δύο σανίδων και επειδή μπορεί να θέλουμε να το αντικαταστήσουμε κάποια μέρα, αποφάσισα να χρησιμοποιήσω κεφαλίδες για να το βγάλω από τον πίνακα και να το συνδέσω. Χρησιμοποιήστε κεφαλίδα ορθής γωνίας για να συνδεθείτε με τους 6 πείρους στον πίνακα ανάρτησης. Τώρα πάρτε μια άλλη κεφαλίδα ορθής γωνίας και κολλήστε μια γυναικεία κεφαλίδα στις κοντές καρφίτσες και στη συνέχεια κολλήστε την στο κάτω αριστερό μέρος της σανίδας σας. Συνδέστε το επιταχυνσιόμετρο για να βεβαιωθείτε ότι ταιριάζει, αποσυνδέστε το και, στη συνέχεια, συνδέστε τις κατάλληλες ακίδες με Vcc (+5v) και Gnd. Στη συνέχεια, συνδέστε τον ακροδέκτη εξόδου Χ στον πείρο 40 και τον Υ τον πείρο 39. Τώρα πρέπει να ρυθμίσετε την προσθήκη των IC (Ολοκληρωμένα κυκλώματα) και ενεργοποίηση.

26 Δεκεμβρίου 2009: Διαπίστωσα ότι ο τρόπος τοποθέτησης του αισθητήρα κάμψης του δείκτη έκανε το υλικό που συνδέει τον αισθητήρα με τις ακίδες να υποβαθμιστεί. Έκτοτε αγόρασα έναν αισθητήρα αντικατάστασης και κόλλησα θερμά ένα κομμάτι λεπτού πλαστικού στον αισθητήρα για να αποτρέψω αυτήν την περιοχή να αποτελεί το μεγαλύτερο μέρος της κάμψης. Έχω επισημάνει την τοποθεσία στην παρακάτω φωτογραφία.

Βήμα 8: Προσθήκη IC και του πρώτου προγράμματος

Προσθήκη IC και του πρώτου προγράμματος
Προσθήκη IC και του πρώτου προγράμματος
Προσθήκη IC και του πρώτου προγράμματος
Προσθήκη IC και του πρώτου προγράμματος
Προσθήκη IC και του πρώτου προγράμματος
Προσθήκη IC και του πρώτου προγράμματος
Προσθήκη IC και του πρώτου προγράμματος
Προσθήκη IC και του πρώτου προγράμματος

Αυτό είναι πιθανώς το ευκολότερο βήμα της όλης διαδικασίας. Για άλλη μια φορά η εικόνα βοηθά. Βεβαιωθείτε ότι έχετε τις μάρκες με τον σωστό τρόπο όπως εξηγείται στην εικόνα #3. Πρώτα θα συνδέσω την τροφοδοσία με τίποτα συνδεδεμένο και θα αγγίξω τη ψύκτρα στον ρυθμιστή τάσης. Εάν κάνει ζέστη τότε κάτι βραχυκυκλώνει και πρέπει να επιστρέψετε και να ελέγξετε τις συνδέσεις σας. Προχωρήστε με αυτόν τον τρόπο, προσθέτοντας ένα τσιπ κάθε φορά, αισθάνεστε θερμότητα και μόλις όλα είναι στη θέση τους σφίξτε τα παξιμάδια στον κάτω πίνακα, ώστε οι δύο σανίδες να στερεώνονται καλά μεταξύ τους. Στη συνέχεια θα προγραμματίσετε το AVR. Εάν δεν το έχετε ξανακάνει αυτό, μια γρήγορη αναζήτηση στο google αποφέρει μια πληθώρα αποτελεσμάτων. Αν ήμουν στη θέση σας, θα έβαζα το AVR μου σε ένα breadboard και θα έκανα πρόγραμμα εκεί πριν το επιχειρήσετε στη σκληρή δουλειά σας. Έγραψα ένα απλό πρόγραμμα για την έξοδο των πληροφοριών που λαμβάνονται από τους ευέλικτους αισθητήρες στη συστοιχία LED. Αυτό θα σας δώσει μια βασική ιδέα για το τι λειτουργεί και τι δεν λειτουργεί στο κύκλωμά σας. Ακολουθεί ένα βίντεο του κώδικα σε δράση …… και εδώ είναι ο κωδικός: #define F_CPU 800000UL #include #include #include void ADCINIT () { ADMUX = 0b01100000; ADCSRA = 0b10000000;} int main () {int a; a = 0? int β? b = 0; DDRD = 0xFF; DDRB = 0xFF; DDRA = 0b11100000; ADCINIT (); ενώ (1) {ADMUX = 0b01100011; ADCSRA | = 0b01000000; ενώ (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _delay_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; ενώ (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _delay_ms (1); PORTB = 0x00; }}

Βήμα 9: Τοποθέτηση του κυκλώματός σας σε γάντι

Τοποθέτηση του κυκλώματός σας σε γάντι
Τοποθέτηση του κυκλώματός σας σε γάντι
Τοποθέτηση του κυκλώματός σας σε γάντι
Τοποθέτηση του κυκλώματός σας σε γάντι
Τοποθέτηση του κυκλώματός σας σε γάντι
Τοποθέτηση του κυκλώματός σας σε γάντι

Νομίζω ότι υπάρχουν πολλοί τρόποι για να συνδέσετε το κύκλωμά σας στο χέρι και για λίγο σκέφτηκα ότι θα το άφηνα στον αναγνώστη, αλλά μετά αποφάσισα ότι το διδακτικό δεν θα ήταν πλήρες χωρίς αυτό το κλείσιμο. Πήγα στο τοπικό μου κατάστημα ποδηλάτων και πήρα το φθηνότερο γάντι πλήρους δακτύλου που μπορούσα να βρω. Το πλήρες δάχτυλο είναι απαραίτητο, διότι διαφορετικά δεν μπορείτε να συνδέσετε τους εύκαμπτους αισθητήρες πολύ καλά. Πήγα στη συνέχεια σε ένα κατάστημα υφασμάτων και πήρα λίγο νήμα από πολυεστέρα και κολλητό velcro. Έβαλα το γάντι και τοποθέτησα το κύκλωμα στο χέρι μου. Μέρος της τοποθέτησης είναι η άνεση, αλλά ένα άλλο μέρος είναι οι αισθητήρες κάμψης. Θα πρέπει να κατεβαίνουν στη μέση των δύο δακτύλων. Έραψα βρόχους γύρω από τις τρεις στάσεις για να κρατήσω την κύρια σανίδα (Βλέπε εικόνα #2) και έπειτα έλυσα τους βρόχους 3/4 του δρόμου προς τα κάτω κάθε εύκαμπτο αισθητήρα (#3 και 4). Βεβαιωθείτε ότι δεν ράβετε το γάντι σας κλειστό. Στη συνέχεια κόλλησα ένα κομμάτι velcro στο πλάι του αντίχειρά μου για να κρατήσει την μπαταρία. Έχω διαπιστώσει μετά από δοκιμές ότι πραγματικά αποδίδει το ράψιμο, καθώς το ραβδί δεν διαρκεί για πολύ. Στη συνέχεια, έβαλα ένα βρόχο velcro γύρω από το 9v (Εικόνα 5). Αυτή η ρύθμιση φαίνεται να λειτουργεί αρκετά καλά. Όπως βλέπετε στις εικόνες της πρώτης και της τελευταίας διαφάνειας, τώρα έχω προσθέσει μανίκια για τους ευέλικτους αισθητήρες, αλλά αν δεν έχετε χρόνο, οι βρόχοι πρέπει να πάνε καλά. Όταν τελειώσετε με το έργο σας, δημοσιεύστε φωτογραφίες του τελικού προϊόντος σας παρακάτω. Θα ήθελα πολύ να δω τι καταλήξατε για να συνδέσετε το κύκλωμα!

Βήμα 10: Ο πραγματικός κώδικας

Ο πραγματικός κώδικας
Ο πραγματικός κώδικας

Ευχαριστώ που με αντέξατε μέχρι τώρα. Λάβετε υπόψη ότι ο κωδικός μου δεν είναι τέλειος. Διαπίστωσα ότι χρειάζεται λίγη μάθηση για να λειτουργήσει σωστά το σήμα. Θα συνεχίσω να προσπαθώ να τελειοποιήσω το σύστημά μου και θα διατηρήσω αυτήν τη σελίδα ενημερωμένη με νέο κώδικα μόλις το γράψω. 26 Δεκεμβρίου 2009: ΝΕΟΣ ΚΩΔΙΚΟΣ! Αναρτήθηκε εκεί που ήταν ο παλιός κώδικας. Ευχαριστώ πολύ τον Jacob για την απλοποίηση. Πραγματικά λειτουργεί καλά. Εδώ είναι. Ευχαριστούμε που διαβάσατε και μην ξεχάσετε να ψηφίσετε! #include #include #include // Ορίζει ή καθαρίζει bit σε καταχωρητές #καθορίζει setBit (sfr, bit) (sfr | = (1 << bit)) #define clearBit (sfr, bit) (sfr & = ~ (1 << bit)) #define flipBit (sfr, bit) (sfr ^= (1 << bit)) #define FALSE 0 #define TRUE 1 #define matrixX (x) (PORTA = (x - 1) << 5) #define matrixGY (y) (PORTD = y) #define matrixRY (y) (PORTB = y) void delay (unsigned int int delay) {unsigned int x = 0; ενώ (x <καθυστέρηση) {x ++; }} void initMatrix () {DDRD = 0xFF; // Πράσινο χειριστήριο DDRB = 0xFF; // Κόκκινο χειριστήριο DDRA = 0xE0; // Έλεγχος εδάφους} void matrixRowDraw (charmasmask, char redmask, char char) {matrixX (στήλη); int i = 0; για (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (redmask & (1 << i)); _delay_us (150); } matrixGY (0x00); matrixRY (0x00); } void matrixLeft () {matrixRowDraw (0x10, 0, 1); matrixRowDraw (0x20, 0, 2); matrixRowDraw (0x40, 0, 3); matrixRowDraw (0xFF, 0, 4); matrixRowDraw (0xFF, 0, 5); matrixRowDraw (0x40, 0, 6); matrixRowDraw (0x20, 0, 7); matrixRowDraw (0x10, 0, 8); } void matrixRight () {matrixRowDraw (0x18, 0, 1); matrixRowDraw (0x18, 0, 2); matrixRowDraw (0x18, 0, 3); matrixRowDraw (0x18, 0, 4); matrixRowDraw (0x99, 0, 5); matrixRowDraw (0x5A, 0, 6); matrixRowDraw (0x3C, 0, 7); matrixRowDraw (0x18, 0, 8); } void adcInit () {ADMUX = 0x60; ADCSRA = 0x80; } char adcGet (char chan) {ADMUX = 0x60 | chan? ADCSRA | = 0x40; ενώ (bit_is_clear (ADCSRA, ADIF)); επιστροφή ADCH? } char adcAvg (char chan, char avgnum) // Μόνο κατά μέσο όρο έως 256 δείγματα {int i = 0; ανυπόγραφο int σύνολο = 0; για (i = 0; i <avgnum; i ++) {total+= adcGet (chan); } επιστροφή συνόλου/avgnum; } int main () {initMatrix (); adcInit (); while (1) {while (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Οι δεκαεξαδικές τιμές εδώ θα πρέπει να αλλάξουν ανάλογα με τη ρύθμιση των χρηστών για να καθοριστεί η ευαισθησία των εύκαμπτων αισθητήρων. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } if (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} επιστροφή 0; } Ιδιαίτερες ευχαριστίες στους Chamberlains, τους γονείς και τους φίλους μου που βοήθησαν.

Φιναλίστ στον Διαγωνισμό Σπιτικών Διακοπών

Συνιστάται: