Arduino: τι μπορεί να γίνει με αυτό. Arduino για αρχάριους: οδηγίες βήμα προς βήμα. Προγραμματισμός και έργα Arduino: Από πού να ξεκινήσετε; Σχέδια Arduino

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

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

Τι είναι το Arduino και σε τι χρησιμεύει;

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

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

Κιτ εκκίνησης Arduino

Για να ξεκινήσετε να μαθαίνετε Arduino, πρέπει να αποκτήσετε την ίδια την πλακέτα του μικροελεγκτή και πρόσθετα εξαρτήματα. Είναι καλύτερο να αγοράσετε ένα κιτ εκκίνησης Arduino, αλλά μπορείτε να επιλέξετε μόνοι σας όλα όσα χρειάζεστε. Προτείνω να επιλέξετε ένα σετ γιατί είναι πιο εύκολο και συχνά φθηνότερο. Ακολουθούν σύνδεσμοι για τα καλύτερα σετ και μεμονωμένα μέρη που σίγουρα θα χρειαστεί να μελετήσετε:

Βασικό κιτ Arduino για αρχάριους:Αγορά
Μεγάλο σετ για εκπαίδευση και πρώτα έργα:Αγορά
Σετ πρόσθετων αισθητήρων και μονάδων:Αγορά
Το Arduino Uno είναι το πιο βασικό και βολικό μοντέλο από τη σειρά:Αγορά
breadboard χωρίς συγκόλληση για εύκολη εκμάθηση και δημιουργία πρωτοτύπων:Αγορά
Σετ καλωδίων με βολικούς συνδέσμους:Αγορά
Σετ LED:Αγορά
Κιτ αντίστασης:Αγορά
Κουμπιά:Αγορά
Ποτενσιόμετρα:Αγορά

Περιβάλλον ανάπτυξης Arduino IDE

Για να γράψετε, να εντοπίσετε σφάλματα και να κατεβάσετε υλικολογισμικό, πρέπει να κάνετε λήψη και εγκατάσταση του Arduino IDE. Αυτό είναι ένα πολύ απλό και βολικό πρόγραμμα. Στην ιστοσελίδα μου έχω ήδη περιγράψει τη διαδικασία λήψης, εγκατάστασης και διαμόρφωσης του περιβάλλοντος ανάπτυξης. Εδώ λοιπόν θα αφήσω απλώς συνδέσμους προς τελευταία έκδοσηπρογράμματα και

Εκδοχή Windows Mac OS X Linux
1.8.2

Γλώσσα προγραμματισμού Arduino

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

Ο προγραμματισμός Arduino χρησιμοποιεί μια απλοποιημένη έκδοση της γλώσσας C++ με προκαθορισμένες λειτουργίες. Όπως και σε άλλες γλώσσες προγραμματισμού τύπου C, υπάρχει ένας αριθμός κανόνων για τη σύνταξη κώδικα. Εδώ είναι τα πιο βασικά:

  • Κάθε οδηγία πρέπει να ακολουθείται από ένα ερωτηματικό (;)
  • Πριν δηλώσετε μια συνάρτηση, πρέπει να καθορίσετε τον τύπο δεδομένων που επιστρέφεται από τη συνάρτηση ή να ακυρώσετε εάν η συνάρτηση δεν επιστρέψει μια τιμή.
  • Είναι επίσης απαραίτητο να υποδείξετε τον τύπο δεδομένων πριν δηλώσετε μια μεταβλητή.
  • Τα σχόλια ορίζονται: // Inline και /* block */

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

Όλο το υλικολογισμικό Arduino πρέπει να περιέχει τουλάχιστον 2 λειτουργίες. Αυτά είναι η setup() και η loop().

λειτουργία εγκατάστασης

Για να λειτουργήσουν όλα πρέπει να γράψουμε ένα σκίτσο. Ας κάνουμε το LED να ανάψει αφού πατήσετε το κουμπί και να σβήσει μετά το επόμενο πάτημα. Εδώ είναι το πρώτο μας σκίτσο:

// μεταβλητές με ακίδες συνδεδεμένων συσκευών int switchPin = 8; int ledPin = 11; // μεταβλητές για την αποθήκευση της κατάστασης του κουμπιού και LED boolean lastButton = LOW; Κουμπί δυαδικού ρεύματος = LOW; boolean ledOn = ψευδής; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // συνάρτηση για debounse boolean debounse(boolean last) ( boolean current = digitalRead(switchPin); if(last != current) (καθυστέρηση ( 5); τρέχον = digitalRead(switchPin); ) επιστροφή ρεύματος; ) void loop() (currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) (ledOn = !ledOn; ) lastButton = currentButton ; digitalWrite(ledPin, ledOn); )

// μεταβλητές με καρφίτσες συνδεδεμένων συσκευών

int switchPin = 8 ;

int ledPin = 11 ;

// μεταβλητές για την αποθήκευση της κατάστασης του κουμπιού και του LED

boolean lastButton = LOW ;

boolean currentButton = LOW ;

boolean ledOn = ψευδής ;

void setup() (

pinMode(switchPin, INPUT);

pinMode(ledPin, OUTPUT);

// συνάρτηση για debouncing

boolean debounse (boolean last ) (

boolean ρεύμα = digitalRead(switchPin);

αν (τελευταίο != τρέχον) (

καθυστέρηση(5);

τρέχον = digitalRead(switchPin);

ρεύμα επιστροφής ;

void loop() (

currentButton = debounse(lastButton);

εάν (lastButton == LOW && currentButton == HIGH ) (

ledOn = ! ledOn;

lastButton = currentButton ;

digitalWrite(ledPin, ledOn);

Σε αυτό το σκίτσο, δημιούργησα μια πρόσθετη λειτουργία debounse για την καταστολή της αναπήδησης επαφής. Υπάρχουν πληροφορίες σχετικά με την αναπήδηση επαφών στον ιστότοπό μου. Φροντίστε να ελέγξετε αυτό το υλικό.

PWM Arduino

Η διαμόρφωση πλάτους παλμού (PWM) είναι η διαδικασία ελέγχου της τάσης χρησιμοποιώντας τον κύκλο λειτουργίας ενός σήματος. Δηλαδή, χρησιμοποιώντας PWM μπορούμε να ελέγξουμε ομαλά το φορτίο. Για παράδειγμα, μπορείτε να αλλάξετε ομαλά τη φωτεινότητα ενός LED, αλλά αυτή η αλλαγή στη φωτεινότητα δεν επιτυγχάνεται με τη μείωση της τάσης, αλλά με την αύξηση των διαστημάτων του χαμηλού σήματος. Η αρχή λειτουργίας του PWM φαίνεται σε αυτό το διάγραμμα:

Όταν εφαρμόζουμε PWM στο LED, αρχίζει να ανάβει γρήγορα και να σβήνει. Το ανθρώπινο μάτι δεν μπορεί να το δει γιατί η συχνότητα είναι πολύ υψηλή. Αλλά κατά τη λήψη βίντεο, πιθανότατα θα δείτε στιγμές που το LED δεν είναι αναμμένο. Αυτό θα συμβεί με την προϋπόθεση ότι ο ρυθμός καρέ της κάμερας δεν είναι πολλαπλάσιος της συχνότητας PWM.

Το Arduino έχει ενσωματωμένο διαμορφωτή πλάτους παλμού. Μπορείτε να χρησιμοποιήσετε το PWM μόνο σε εκείνες τις ακίδες που υποστηρίζονται από τον μικροελεγκτή. Για παράδειγμα, το Arduino Uno και το Nano έχουν 6 ακίδες PWM: αυτές είναι οι ακίδες D3, D5, D6, D9, D10 και D11. Οι ακίδες ενδέχεται να διαφέρουν σε άλλες σανίδες. Μπορείτε να βρείτε μια περιγραφή του πίνακα που σας ενδιαφέρει

Για να χρησιμοποιήσετε το PWM στο Arduino υπάρχει μια συνάρτηση που παίρνει ως ορίσματα τον αριθμό pin και την τιμή PWM από το 0 έως το 255. Το 0 είναι 0% γέμισμα με υψηλό σήμα και το 255 είναι 100%. Ας γράψουμε ένα απλό σκίτσο ως παράδειγμα. Ας κάνουμε το LED να ανάβει ομαλά, να περιμένουμε ένα δευτερόλεπτο και να σβήνει το ίδιο ομαλά και ούτω καθεξής επ' άπειρον. Ακολουθεί ένα παράδειγμα χρήσης αυτής της συνάρτησης:

// Το LED είναι συνδεδεμένο στον ακροδέκτη 11 int ledPin = 11; void setup() ( pinMode(ledPin, OUTPUT); ) void loop() ( for (int i = 0; i< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) ( analogWrite(ledPin, i); καθυστέρηση (5); ) )

// LED συνδεδεμένο στον ακροδέκτη 11

int ledPin = 11 ;

void setup() (

pinMode(ledPin, OUTPUT);

void loop() (

για (int i = 0; i< 255 ; i ++ ) {

analogWrite(ledPin, i);

καθυστέρηση(5);

καθυστέρηση (1000);

για (int i = 255; i > 0; i -- ) (

Μια σειρά από άρθρα και διαγράμματα εκπαίδευσης με ραδιοερασιτεχνικά πειράματα στο Arduino για αρχάριους. Πρόκειται για έναν ερασιτεχνικό κατασκευαστή ραδιοπαιχνιδιών από τον οποίο, χωρίς συγκολλητικό σίδερο, χάραξη πλακέτας τυπωμένου κυκλώματος και παρόμοια, κάθε ηλεκτρονικός βραστήρας μπορεί να συναρμολογήσει μια πλήρη συσκευή εργασίας, κατάλληλη τόσο για επαγγελματική πρωτοτυποποίηση όσο και για ερασιτεχνικά πειράματα στη μελέτη των ηλεκτρονικών .


Η πλακέτα Arduino προορίζεται κυρίως για τη διδασκαλία σε αρχάριους ραδιοερασιτέχνες τα βασικά του προγραμματισμού μικροελεγκτών και τη δημιουργία συσκευών μικροελεγκτών με τα χέρια τους χωρίς σοβαρή θεωρητική εκπαίδευση. Το περιβάλλον ανάπτυξης Arduino σάς επιτρέπει να μεταγλωττίσετε και να φορτώσετε έτοιμο κώδικα προγράμματος στη μνήμη της πλακέτας. Επιπλέον, η φόρτωση του κώδικα είναι εξαιρετικά απλή.

Arduino από πού να ξεκινήσετε για έναν αρχάριο

Πρώτα απ 'όλα, για να εργαστεί με την πλακέτα Arduino, ένας αρχάριος ηλεκτρονικός μηχανικός πρέπει να κατεβάσει το πρόγραμμα ανάπτυξης Arduino· αποτελείται από έναν ενσωματωμένο επεξεργαστή κειμένου στον οποίο εργαζόμαστε με κώδικα προγράμματος, μια περιοχή μηνυμάτων, ένα παράθυρο εξόδου κειμένου (κονσόλα ), μια γραμμή εργαλείων με κουμπιά για εντολές που χρησιμοποιούνται συχνά και πολλά μενού. Για να κατεβάσετε τα προγράμματά του και να επικοινωνήσετε, αυτό το πρόγραμμα συνδέεται με την πλακέτα Arduino μέσω ενός τυπικού καλωδίου USB.


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

Λοιπόν, ας προχωρήσουμε στο πρώτο μάθημα των κυκλωμάτων Arduino για αρχάριους μηχανικούς ηλεκτρονικών.

Για τη διευκόλυνση των αρχαρίων, ο ελεγκτής Arduino UNO έχει ήδη μια αντίσταση και ένα LED συνδεδεμένο στον ακροδέκτη 13 του βύσματος, επομένως δεν χρειαζόμαστε εξωτερικά στοιχεία ραδιοφώνου στο πρώτο πείραμα.


Με τη φόρτωση του κώδικα, το Arduino επιτρέπει στο πρόγραμμά μας να συμμετέχει στην προετοιμασία του συστήματος. Για να γίνει αυτό, υποδεικνύουμε στις εντολές του μικροελεγκτή ότι θα εκτελεστεί κατά την αρχική εκκίνηση και στη συνέχεια θα τις ξεχάσει εντελώς (δηλαδή, αυτές οι εντολές θα εκτελεστούν από το Arduino μόνο μία φορά κατά την εκκίνηση). Και είναι για αυτό το σκοπό που στον κώδικά μας επιλέγουμε ένα μπλοκ στο οποίο αποθηκεύονται αυτές οι εντολές. void setup(), ή μάλλον στο χώρο μέσα στα σγουρά σιδεράκια αυτής της συνάρτησης, δείτε το σκίτσο του προγράμματος.

Μην ξεχνάτε σιδερακια ΔΟΝΤΙΩΝ! Η απώλεια τουλάχιστον ενός από αυτά θα κάνει ολόκληρο το σκίτσο εντελώς ανεφάρμοστο. Αλλά μην βάζετε επιπλέον παρενθέσεις, καθώς αυτό θα προκαλέσει επίσης σφάλμα.

Λήψη κώδικα:
Σκίτσο με σχόλια και επεξηγήσεις στο αρχείο 001-1_mig-led.ino

Λειτουργία void loop()εδώ βάζουμε τις εντολές που θα εκτελεστούν όσο είναι ενεργοποιημένο το Arduino. Έχοντας ξεκινήσει την εκτέλεση από την πρώτη εντολή, το Arduino θα φτάσει στο τέλος και θα πάει αμέσως στην αρχή για να επαναλάβει την ίδια ακολουθία. Και ούτω καθεξής άπειρες φορές, αρκεί η πλακέτα να λαμβάνει ισχύ. Στον πυρήνα του, ένας βρόχος κενού είναι η κύρια λειτουργία, το σημείο εισόδου στο Arduino.


Λειτουργία καθυστέρησηΤο (1000) καθυστερεί την επεξεργασία του προγράμματος κατά 1000 χιλιοστά του δευτερολέπτου. Όλα συνεχίζονται σε έναν αιώνιο κύκλο βρόχος().

Το κύριο συμπέρασμα μετά την κατανόηση του πρώτου μας προγράμματος στο Arduino:Χρησιμοποιώντας τις λειτουργίες void loop και void setup, περνάμε τις οδηγίες μας στον μικροελεγκτή. Όλα όσα βρίσκονται μέσα στο μπλοκ εγκατάστασης θα εκτελεστούν μόνο μία φορά. Τα περιεχόμενα της μονάδας βρόχου θα επαναλαμβάνονται σε βρόχο όσο το Arduino παραμένει ενεργοποιημένο.

Στο προηγούμενο πρόγραμμα υπήρχε μια δεύτερη καθυστέρηση μεταξύ ενεργοποίησης και απενεργοποίησης του LED. Υπήρχε ένα μεγάλο μείον στον απλούστερο κώδικα ενός αρχάριου χειριστή Arduino που χρησιμοποιήθηκε παραπάνω. Για να διατηρήσουμε μια παύση μεταξύ ενεργοποίησης και απενεργοποίησης του LED για ένα δευτερόλεπτο, χρησιμοποιήσαμε τη λειτουργία καθυστέρηση()και επομένως αυτή τη στιγμή ο ελεγκτής δεν είναι σε θέση να εκτελέσει άλλες εντολές στην κύρια λειτουργία βρόχος(). Διόρθωση κώδικα σε μια συνάρτηση βρόχος(), που παρουσιάζεται παρακάτω λύνει αυτό το πρόβλημα.

Αντί να ορίσουμε την τιμή σε HIGH και μετά σε LOW, θα πάρουμε την τιμή του ledPin και θα την αντιστρέψουμε. Ας πούμε ότι αν ήταν ΥΨΗΛΟ, θα γίνει ΧΑΜΗΛΟ κ.λπ.

Δεύτερος Επιλογή κωδικού Arduino για έλεγχο LEDΕδώ:

Στη συνέχεια, μπορείτε να αντικαταστήσετε τη λειτουργία καθυστέρηση(). Αντίθετα, είναι καλύτερο να χρησιμοποιήσετε τη συνάρτηση millis (). Επιστρέφει τον αριθμό των χιλιοστών του δευτερολέπτου που έχουν περάσει από την έναρξη του προγράμματος. Η λειτουργία θα ξεχειλίσει μετά από περίπου 50 ημέρες από την εκτέλεση του κωδικού προγράμματος.

Μια παρόμοια λειτουργία είναι micros (), το οποίο επιστρέφει τον αριθμό των μικροδευτερόλεπτων που έχουν περάσει από την εκκίνηση του κώδικα προγράμματος. Η λειτουργία θα επιστρέψει στο μηδέν μετά από 70 λεπτά λειτουργίας του προγράμματος.

Φυσικά, αυτό θα προσθέσει μερικές γραμμές κώδικα στο σκίτσο μας, αλλά αναμφίβολα θα σας κάνει έναν πιο έμπειρο προγραμματιστή και θα αυξήσει τις δυνατότητες του Arduino σας. Για να το κάνετε αυτό, απλά πρέπει να μάθετε πώς να χρησιμοποιείτε τη συνάρτηση millis.

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

Η αρχή αυτού του προγράμματος είναι ίδια με οποιοδήποτε άλλο τυπικό σκίτσο Arduino.


Αυτό το παράδειγμα χρησιμοποιεί δύο ψηφιακές ακίδες I/O Arduino. Το LED είναι συνδεδεμένο στον ακροδέκτη 8, ο οποίος έχει διαμορφωθεί ως OUTPUT. Ένα κουμπί συνδέεται στο 9 μέσω, το οποίο έχει ρυθμιστεί ως ΕΙΣΟΔΟΣ. Όταν πατάμε το κουμπί, ο ακροδέκτης 9 τίθεται σε HIGH και το πρόγραμμα αλλάζει τον ακροδέκτη 8 σε HIGH, ανάβοντας έτσι το LED. Η απελευθέρωση του κουμπιού επαναφέρει την ακίδα 9 σε LOW. Στη συνέχεια, ο κωδικός αλλάζει την ακίδα 8 σε LOW, σβήνοντας την ενδεικτική λυχνία.

Για τον έλεγχο πέντε LED θα χρησιμοποιήσουμε διάφορους χειρισμούς με τις θύρες Arduino. Για να γίνει αυτό, θα γράψουμε απευθείας δεδομένα στις θύρες Arduino, αυτό θα μας επιτρέψει να ορίσουμε τις τιμές για τα LED χρησιμοποιώντας μία μόνο λειτουργία.

Το Arduino UNO έχει τρεις θύρες: σι(ψηφιακές είσοδοι/έξοδοι από 8 έως 13). ντο(αναλογικές είσοδοι); ρε(ψηφιακές είσοδοι/έξοδοι 0 έως 7)

Κάθε θύρα ελέγχει τρεις καταχωρητές. Το πρώτο DDR καθορίζει εάν η ακίδα θα είναι είσοδος ή έξοδος. Χρησιμοποιώντας τον δεύτερο καταχωρητή PORT, μπορείτε να ορίσετε την καρφίτσα σε HIGH ή LOW. Χρησιμοποιώντας το τρίτο, μπορείτε να διαβάσετε πληροφορίες σχετικά με την κατάσταση των ποδιών Arduino, εάν λειτουργούν ως είσοδος.

Για να λειτουργήσουμε το κύκλωμα, θα χρησιμοποιήσουμε τη θύρα Β. Για να γίνει αυτό, θα ορίσουμε όλες τις ακίδες θύρας ως ψηφιακές εξόδους. Η θύρα Β έχει μόνο 6 πόδια. Τα bit καταχωρητή DDRB πρέπει να ρυθμιστούν σε "1" , εάν η ακίδα θα χρησιμοποιηθεί ως έξοδος (OUTPUT), και μέσα "0" , εάν σκοπεύουμε να χρησιμοποιήσουμε την καρφίτσα ως είσοδο (INPUT). Τα bit θύρας αριθμούνται από το 0 έως το 7, αλλά δεν έχουν πάντα και τις 8 ακίδες

Ας πούμε: DDRB = B00111110;// ορίστε τις ακίδες της θύρας B 1 έως 5 ως έξοδο και 0 ως είσοδο.

Στο κύκλωμα φώτων πορείας χρησιμοποιούμε πέντε εξόδους: DDRB = B00011111; // ορίστε τις ακίδες της θύρας B 0 έως 4 ως εξόδους.

Για να γράψετε δεδομένα στη θύρα Β, πρέπει να χρησιμοποιήσετε τον καταχωρητή PORTB. Μπορείτε να ανάψετε το πρώτο LED χρησιμοποιώντας την εντολή ελέγχου: PORTB = B00000001;, πρώτο και τέταρτο LED: PORTB = B00001001και ούτω καθεξής

Υπάρχουν δύο τελεστές δυαδικής μετατόπισης: αριστερά και δεξιά. Ο τελεστής αριστερού shift κάνει όλα τα bit δεδομένων να μετακινηθούν προς τα αριστερά, ενώ ο δεξιός τελεστής μετατόπισης τα μετακινεί προς τα δεξιά.

Παράδειγμα:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

Τώρα ας επιστρέψουμε στον πηγαίο κώδικα του προγράμματός μας. Πρέπει να εισάγουμε δύο μεταβλητές: πάνω κάτωθα περιλαμβάνει τις τιμές του πού να μετακινηθείτε - πάνω ή κάτω, και το δεύτερο κύλονθα υποδείξει ποια LED θα ανάψουν.

Δομικά, ένα τέτοιο LED έχει έναν κοινό ακροδέκτη και τρεις ακροδέκτες για κάθε χρώμα. Παρακάτω είναι ένα διάγραμμα σύνδεσης ενός RGB LED σε μια πλακέτα Arduino με μια κοινή κάθοδο. Όλες οι αντιστάσεις που χρησιμοποιούνται στο κύκλωμα σύνδεσης πρέπει να έχουν την ίδια τιμή από 220-270 Ohms.


Για σύνδεση με κοινή κάθοδο, το διάγραμμα σύνδεσης για ένα LED τριών χρωμάτων θα είναι σχεδόν το ίδιο, με τη διαφορά ότι ο κοινός ακροδέκτης θα συνδεθεί όχι στη γείωση (gnd στη συσκευή), αλλά στον ακροδέκτη +5 volt. Καρφίτσες Κόκκινο, πράσινο και μπλε και στις δύο περιπτώσεις συνδέονται στις ψηφιακές εξόδους 9, 10 και 11 του ελεγκτή.

Θα συνδέσουμε ένα εξωτερικό LED στην ένατη ακίδα του Arduino UNO μέσω αντίστασης 220 Ohms. Για να ελέγξετε ομαλά τη φωτεινότητα του τελευταίου, χρησιμοποιήστε τη λειτουργία analogWrite(). Παρέχει έξοδο ενός σήματος PWM στο σκέλος του ελεγκτή. Επιπλέον, η ομάδα pinMode()δεν χρειάζεται να καλέσετε. Επειδή analogWrite (καρφίτσα, τιμή)περιλαμβάνει δύο παραμέτρους: pin - αριθμός pin για έξοδο, τιμή - τιμή από 0 έως 255.

Κώδικας:
/*
Ένα παράδειγμα εκμάθησης για έναν αρχάριο προγραμματιστή Arduino που αποκαλύπτει τις δυνατότητες της εντολής analogWrite() για την υλοποίηση του εφέ Fade ενός LED
*/
φωτεινότητα int = 0; // Φωτεινότητα LED
int fadeAmount = 5; // βήμα αλλαγής φωτεινότητας
ανυπόγραφο long currentTime.
ανυπόγραφο long loopTime?

Κενή εγκατάσταση() (
pinMode(9, OUTPUT); // ορίστε την ακίδα 9 ως έξοδο
currentTime = millis();
loopTime = τρέχουσα ώρα;
}

Void loop() (
currentTime = millis();
if(currentTime >= (loopTime + 20))(
analogWrite(9, φωτεινότητα); // ορίστε την τιμή στην καρφίτσα 9

Brightness = φωτεινότητα + fadeAmount; // προσθέστε ένα βήμα για την αλλαγή της φωτεινότητας, το οποίο θα καθοριστεί στον επόμενο κύκλο

// εάν επιτευχθεί ελάχ. ή μέγ. τιμές, τότε πάμε προς την αντίθετη κατεύθυνση (αντίστροφα):
εάν (φωτεινότητα == 0 || φωτεινότητα == 255) (
fadeAmount = -fadeAmount ;
}
loopTime = τρέχουσα ώρα;
}
}

Εργασία Arduino με κωδικοποιητή

Ο κωδικοποιητής έχει σχεδιαστεί για να μετατρέπει τη γωνία περιστροφής σε ηλεκτρικό σήμα. Από αυτό λαμβάνουμε δύο σήματα (Α και Β), τα οποία είναι αντίθετα σε φάση. Σε αυτό το σεμινάριο θα χρησιμοποιήσουμε τον κωδικοποιητή SparkFun COM-09117, ο οποίος έχει δώδεκα θέσεις ανά περιστροφή (κάθε θέση είναι ακριβώς 30°). Το παρακάτω σχήμα δείχνει ξεκάθαρα πώς η έξοδος Α και Β εξαρτώνται μεταξύ τους όταν ο κωδικοποιητής κινείται δεξιόστροφα ή αριστερόστροφα.

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

Εάν είναι απαραίτητο, μπορείτε να χρησιμοποιήσετε υπολογισμούς συχνότητας για να προσδιορίσετε πόσο γρήγορα περιστρέφεται ο κωδικοποιητής.

Χρησιμοποιώντας έναν κωδικοποιητή στο εκπαιδευτικό μας παράδειγμα, θα προσαρμόσουμε τη φωτεινότητα του LED χρησιμοποιώντας την έξοδο PWM. Για την ανάγνωση δεδομένων από τον κωδικοποιητή, θα χρησιμοποιήσουμε μια μέθοδο που βασίζεται σε χρονόμετρα λογισμικού, την οποία έχουμε ήδη καλύψει.

Λαμβάνοντας υπόψη το γεγονός ότι σε γρήγορη θήκη, μπορούμε να περιστρέψουμε το κουμπί του κωδικοποιητή κατά 180° σε 1/10 του δευτερολέπτου, τότε θα είναι 6 παλμοί σε 1/10 του δευτερολέπτου ή 60 παλμοί σε ένα δευτερόλεπτο.

Στην πραγματικότητα, δεν είναι δυνατή η ταχύτερη περιστροφή. Δεδομένου ότι πρέπει να παρακολουθούμε όλους τους μισούς κύκλους, η συχνότητα θα πρέπει να είναι περίπου 120 Hertz. Για να είμαστε απόλυτα σίγουροι, ας πάρουμε 200 Hz.

Εφόσον, σε αυτήν την περίπτωση, χρησιμοποιούμε έναν μηχανικό κωδικοποιητή, η αναπήδηση επαφής είναι δυνατή και η χαμηλή συχνότητα φιλτράρει τέλεια αυτήν την αναπήδηση.


Με βάση τα σήματα του χρονοδιακόπτη προγράμματος, είναι απαραίτητο να συγκρίνετε συνεχώς την τρέχουσα τιμή της εξόδου του κωδικοποιητή A με την προηγούμενη τιμή. Εάν η κατάσταση αλλάξει από θετική σε μηδέν, τότε μετράμε την κατάσταση της εξόδου Β. Ανάλογα με το αποτέλεσμα της δημοσκόπησης κατάστασης, αυξάνουμε ή μειώνουμε τον μετρητή τιμής φωτεινότητας LED. Ο κώδικας προγράμματος με χρονικό διάστημα περίπου 5 ms (200 Hz) παρουσιάζεται παρακάτω:

Κωδικός αρχαρίου Arduino:
/*
** Κωδικοποιητής
** Για τον έλεγχο της φωτεινότητας του LED, χρησιμοποιείται ένας κωδικοποιητής από το Sparkfun
*/

Φωτεινότητα Int = 120; // Φωτεινότητα LED, ξεκινά από το μισό
int fadeAmount = 10; // βήμα αλλαγής φωτεινότητας
ανυπόγραφο long currentTime.
ανυπόγραφο long loopTime?
const int pin_A = 12; // καρφίτσα 12
const int pin_B = 11; // pin 11
ανυπόγραφο char encoder_A;
ανυπόγραφο char encoder_B;
ανυπόγραφος κωδικοποιητής χαρακτήρων_A_prev=0;
void setup() (
// Δηλώστε την ακίδα 9 ως έξοδο:
pinMode(9, OUTPUT); // ορίστε την ακίδα 9 ως έξοδο
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = millis();
loopTime = τρέχουσα ώρα;
}
void loop() (
currentTime = millis();
if(currentTime >= (loopTime + 5))( // check states κάθε 5ms (συχνότητα 200 Hz)
encoder_A = digitalRead(pin_A); // ανάγνωση της κατάστασης εξόδου Α του κωδικοποιητή
encoder_B = digitalRead(pin_B); // Έξοδος κωδικοποιητή Β
if((!encoder_A) && (encoder_A_prev))( // εάν η κατάσταση αλλάξει από θετική σε μηδέν
if(encoder_B) (
// Η έξοδος Β είναι σε θετική κατάσταση, που σημαίνει ότι η περιστροφή είναι δεξιόστροφα
// αυξήστε τη φωτεινότητα της λάμψης, όχι περισσότερο από 255
if (φωτεινότητα + fadeAmount )
αλλού(
// Η έξοδος Β είναι σε μηδενική κατάσταση, που σημαίνει ότι η περιστροφή είναι αριστερόστροφα
// μειώστε τη φωτεινότητα, αλλά όχι κάτω από το μηδέν
if(brightness - fadeAmount >= 0) φωτεινότητα -= fadeAmount;
}

}
encoder_A_prev = encoder_A; // αποθηκεύστε την τιμή του A για τον επόμενο βρόχο

AnalogWrite(9, φωτεινότητα); // ορίστε τη φωτεινότητα στην ένατη ακίδα

LoopTime = τρέχουσα Ώρα;
}
}

Σε αυτό το παράδειγμα αρχαρίου, θα εξετάσουμε την εργασία με έναν πιεζοπομπό για τη δημιουργία ήχων. Για να γίνει αυτό, ας πάρουμε έναν πιεζοηλεκτρικό αισθητήρα που μας επιτρέπει να παράγουμε ηχητικά κύματα στην περιοχή συχνοτήτων 20 Hz - 20 kHz.

Πρόκειται για ένα σχέδιο ερασιτεχνικού ραδιοφώνου όπου τα LED βρίσκονται σε όλη την ένταση. Χρησιμοποιώντας αυτό το σχήμα, μπορείτε να δημιουργήσετε διάφορα εφέ φωτισμού και κινούμενων εικόνων. Τα σύνθετα διαγράμματα μπορούν να εμφανίσουν ακόμη και διάφορες μεγάλες λέξεις. Με άλλα λόγια, πρόκειται για μια στοιχειώδη οθόνη surround

Ο σερβομηχανισμός είναι το κύριο στοιχείο στη σχεδίαση διαφόρων ραδιοελεγχόμενων μοντέλων και ο έλεγχός του με χρήση ελεγκτή είναι απλός και βολικός.


Το πρόγραμμα ελέγχου είναι απλό και διαισθητικό. Ξεκινά με τη σύνδεση ενός αρχείου που περιέχει όλες τις απαραίτητες εντολές για τον έλεγχο της μονάδας σερβομηχανισμού. Στη συνέχεια, δημιουργούμε ένα αντικείμενο servo, για παράδειγμα servoMain. Η επόμενη συνάρτηση είναι η setup(), στην οποία καθορίζουμε ότι ο σερβομηχανισμός είναι συνδεδεμένος στην ένατη ακίδα του ελεγκτή.

Κώδικας:
/*
Arduino Servo
*/
#περιλαμβάνω
Servo servoMain; // Αντικείμενο Servo

Κενή ρύθμιση()
{
servoMain.attach(9); // Ο διακομιστής είναι συνδεδεμένος στον ακροδέκτη 9
}

void loop()
{
servoMain.write(45); // Περιστροφή του σερβομηχανισμού αριστερά 45°
καθυστέρηση (2000); // Περιμένετε 2000 χιλιοστά του δευτερολέπτου (2 δευτερόλεπτα)
servoMain.write(0); // Περιστροφή του σερβομηχανισμού αριστερά κατά 0°
καθυστέρηση (1000); // Παύση 1 δευτ.

καθυστέρηση (1500); // Περιμένετε 1,5 δευτ.
servoMain.write(135); // Περιστροφή του σερβομηχανισμού προς τα δεξιά 135°
καθυστέρηση (3000); // Παύση 3 δευτ.
servoMain.write(180); // Περιστροφή του σερβομηχανισμού προς τα δεξιά 180°
καθυστέρηση (1000); // Περιμένετε 1 s.
servoMain.write(90); // Περιστρέψτε τον σερβομηχανισμό κατά 90°. Κεντρική θέση
καθυστέρηση (5000); // Παύση 5 δευτ.
}

Στην κύρια λειτουργία βρόχος(), δίνουμε εντολές στον σερβοκινητήρα, με παύσεις μεταξύ τους.

Κύκλωμα μετρητή Arduino σε ένδειξη 7 τμημάτων

Αυτό το απλό έργο Arduino για αρχάριους περιλαμβάνει τη δημιουργία ενός κυκλώματος μετρητή χρησιμοποιώντας μια κανονική οθόνη κοινής καθόδου 7 τμημάτων. Ο παρακάτω κωδικός προγράμματος σάς επιτρέπει να αρχίσετε να μετράτε από το 0 έως το 9 όταν πατάτε ένα κουμπί.

Ένδειξη επτά τμημάτων - είναι ένας συνδυασμός 8 LED (το τελευταίο είναι υπεύθυνο για το σημείο) με μια κοινή κάθοδο, η οποία μπορεί να ενεργοποιηθεί με την επιθυμητή σειρά, ώστε να δημιουργούν αριθμούς. Θα πρέπει να σημειωθεί ότι σε αυτό το κύκλωμα, δείτε το παρακάτω σχήμα, οι ακίδες 3 και 8 έχουν εκχωρηθεί στην κάθοδο.


Στα δεξιά υπάρχει ένας πίνακας αντιστοιχίας μεταξύ των ακίδων Arduino και των ακίδων ένδειξης LED.

Κωδικός για αυτό το έργο:

αριθμοί byte = (
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
void setup() (
for(int i = 2; i pinMode(i, OUTPUT);
}
pinMode(9, INPUT);
}
int μετρητής = 0;
bool go_by_switch = true;
int last_input_value = LOW;
void loop() (
if(go_by_switch) (
int switch_input_value = digitalRead(9);
if(last_input_value == LOW && switch_input_value == HIGH) (

}
last_input_value = switch_input_value;
) άλλο (
καθυστέρηση (500);
μετρητής = (μετρητής + 1) % 10;
}
writeNumber(counter);
}

Άκυρο writeNumber(int number) (
αν (αριθμός 9) (
ΕΠΙΣΤΡΟΦΗ;
}
byte mask = αριθμοί;
byte currentPinMask = B10000000;
for(int i = 2; i if(mask & currentPinMask) digitalWrite(i,HIGH);
αλλιώς digitalWrite(i,LOW);
currentPinMask = CurrentPinMask >> 1;
}
}

Μπορείτε να επεκτείνετε σημαντικά τις δυνατότητες των πλακών Arduino με τη βοήθεια πρόσθετων μονάδων που μπορούν να συνδεθούν στις ακίδες PIN σχεδόν οποιασδήποτε συσκευής. Εξετάστε τις πιο δημοφιλείς και ενδιαφέρουσες μονάδες επέκτασης ή ασπίδες όπως ονομάζονται επίσης.

Το Arduino είναι πολύ δημοφιλές σε όλους τους λάτρεις του σχεδιασμού. Όσοι δεν το έχουν ακούσει ποτέ θα πρέπει επίσης να το μυηθούν.

Τι είναι το Arduino;

Πώς μπορείτε να περιγράψετε εν συντομία το Arduino; Τα καλύτερα λόγια θα ήταν: Το Arduino είναι ένα εργαλείο που μπορεί να χρησιμοποιηθεί για τη δημιουργία διαφόρων ηλεκτρονικών συσκευών. Στην ουσία, αυτή είναι μια πραγματική πλατφόρμα υπολογιστών υλικού γενικής χρήσης. Μπορεί να χρησιμοποιηθεί για την κατασκευή απλά κυκλώματα, και για την υλοποίηση αρκετά πολύπλοκων έργων.

Ο σχεδιαστής βασίζεται στο υλικό του, το οποίο είναι ένας πίνακας εισόδου-εξόδου. Για τον προγραμματισμό του πίνακα, χρησιμοποιούνται γλώσσες που βασίζονται σε C/C++. Ονομάζονται, αντίστοιχα, Επεξεργασία/Καλωδίωση. Από την ομάδα C κληρονόμησαν την εξαιρετική απλότητα, χάρη στην οποία μπορούν να κατακτηθούν πολύ γρήγορα από οποιοδήποτε άτομο και η εφαρμογή της γνώσης στην πράξη δεν είναι ένα μάλλον σημαντικό πρόβλημα. Για να κατανοήσετε την ευκολία της εργασίας, λέγεται συχνά ότι το Arduino είναι για αρχάριους μάγους-σχεδιαστές. Ακόμη και τα παιδιά μπορούν να καταλάβουν τις πλακέτες Arduino.

Τι μπορείτε να συλλέξετε σε αυτό;

Οι εφαρμογές του Arduino είναι αρκετά διαφορετικές· μπορεί να χρησιμοποιηθεί τόσο για τα απλούστερα παραδείγματα, τα οποία θα προτείνονται στο τέλος του άρθρου, όσο και για αρκετά σύνθετους μηχανισμούς, συμπεριλαμβανομένων χειριστών, ρομπότ ή μηχανών παραγωγής. Μερικοί τεχνίτες καταφέρνουν να χρησιμοποιούν τέτοια συστήματα για να κατασκευάζουν tablet, τηλέφωνα, συστήματα επιτήρησης και οικιακής ασφάλειας. έξυπνο σπίτι«ή απλώς υπολογιστές. Τα έργα Arduino για αρχάριους, με τα οποία μπορούν να ξεκινήσουν ακόμη και όσοι δεν έχουν εμπειρία, βρίσκονται στο τέλος του άρθρου. Μπορούν ακόμη και να χρησιμοποιηθούν για τη δημιουργία πρωτόγονων συστημάτων εικονικής πραγματικότητας. Όλα χάρη στο αρκετά ευέλικτο υλικό και τις δυνατότητες που παρέχει ο προγραμματισμός Arduino.

Πού μπορώ να αγοράσω τα εξαρτήματα;

Τα εξαρτήματα που κατασκευάζονται στην Ιταλία θεωρούνται πρωτότυπα. Αλλά η τιμή τέτοιων κιτ δεν είναι χαμηλή. Ως εκ τούτου, ένας αριθμός εταιρειών ή ακόμα και ιδιωτών κατασκευάζουν χειροτεχνικές μεθόδους συσκευών και εξαρτημάτων συμβατών με Arduino, που χαριτολογώντας ονομάζονται κλώνοι παραγωγής. Κατά την αγορά τέτοιων κλώνων, δεν μπορεί κανείς να πει με βεβαιότητα ότι θα λειτουργήσουν, αλλά η επιθυμία εξοικονόμησης χρημάτων κάνει τον φόρο.

Τα εξαρτήματα μπορούν να αγοραστούν είτε ως μέρος κιτ είτε ξεχωριστά. Υπάρχουν ακόμη και προπαρασκευασμένα κιτ για τη συναρμολόγηση αυτοκινήτων, ελικοπτέρων με διαφορετικούς τύπους χειριστηρίων ή πλοίων. Ένα σετ όπως αυτό που απεικονίζεται παραπάνω, κατασκευασμένο στην Κίνα, κοστίζει 49 δολάρια.

Περισσότερα για τον εξοπλισμό

Η πλακέτα Arduino είναι απλή Μικροελεγκτής AVR, το οποίο αναβοσβήνει με bootloader και έχει την ελάχιστη απαιτούμενη θύρα USB-UART. Υπάρχουν και άλλα σημαντικά στοιχεία, αλλά στο πλαίσιο του άρθρου θα ήταν καλύτερα να εστιάσουμε μόνο σε αυτά τα δύο συστατικά.

Πρώτον, σχετικά με τον μικροελεγκτή, έναν μηχανισμό που βασίζεται σε ένα μόνο κύκλωμα στο οποίο βρίσκεται το αναπτυγμένο πρόγραμμα. Το πρόγραμμα μπορεί να επηρεαστεί με το πάτημα των κουμπιών, τη λήψη σημάτων από τα εξαρτήματα της δημιουργίας (αντιστάσεις, τρανζίστορ, αισθητήρες κ.λπ.), κλπ. Επιπλέον, οι αισθητήρες μπορεί να είναι πολύ διαφορετικοί ως προς τον σκοπό τους: φωτισμός, επιτάχυνση, θερμοκρασία, απόσταση, πίεση, εμπόδια κ.λπ. Τα απλά εξαρτήματα μπορούν να χρησιμοποιηθούν ως συσκευές προβολής, από LED και τουίτερ έως πολύπλοκες συσκευές, όπως οθόνες γραφικών. Η ποιότητα που εξετάζεται είναι κινητήρες, βαλβίδες, ρελέ, σερβομηχανισμοί, ηλεκτρομαγνήτες και πολλά άλλα, τα οποία θα χρειαζόταν πολύ, πολύ χρόνο για να καταγραφούν. Το MK λειτουργεί απευθείας με ορισμένες από αυτές τις λίστες, χρησιμοποιώντας καλώδια σύνδεσης. Ορισμένοι μηχανισμοί απαιτούν προσαρμογείς. Αλλά μόλις αρχίσετε να σχεδιάζετε, θα είναι δύσκολο για σας να σκιστείτε. Τώρα ας μιλήσουμε για τον προγραμματισμό Arduino.

Μάθετε περισσότερα για τη διαδικασία προγραμματισμού πλακέτας

Ένα πρόγραμμα που είναι ήδη έτοιμο να εκτελεστεί σε μικροελεγκτή ονομάζεται υλικολογισμικό. Μπορεί να υπάρχει είτε ένα έργο είτε έργα Arduino, επομένως θα ήταν σκόπιμο να αποθηκεύσετε κάθε υλικολογισμικό σε ξεχωριστό φάκελο για να επιταχύνετε τη διαδικασία εύρεσης απαραίτητα αρχεία. Αναβοσβήνει στον κρύσταλλο MK χρησιμοποιώντας εξειδικευμένες συσκευές: προγραμματιστές. Και εδώ το Arduino έχει ένα πλεονέκτημα - δεν χρειάζεται προγραμματιστή. Όλα γίνονται για να μην είναι δύσκολος ο προγραμματισμός του Arduino για αρχάριους. Ο γραπτός κωδικός μπορεί να φορτωθεί στο MK μέσω καλωδίου USB. Αυτό το πλεονέκτημα δεν επιτυγχάνεται από κάποιον προκατασκευασμένο προγραμματιστή, αλλά από ειδικό υλικολογισμικό - ένα bootloader. Ο bootloader είναι ένα ειδικό πρόγραμμα που ξεκινά αμέσως μετά τη σύνδεση και ακούει αν υπάρχουν εντολές, αν θα αναβοσβήνει το κρύσταλλο, αν υπάρχουν έργα Arduino ή όχι. Υπάρχουν πολλά πολύ ελκυστικά πλεονεκτήματα στη χρήση ενός bootloader:

  1. Χρησιμοποιώντας μόνο ένα κανάλι επικοινωνίας, το οποίο δεν απαιτεί επιπλέον κόστος χρόνου. Έτσι, τα έργα Arduino δεν απαιτούν από εσάς να συνδέσετε πολλά διαφορετικά καλώδια και θα υπάρξει σύγχυση κατά τη χρήση τους. Ένα καλώδιο USB είναι αρκετό για επιτυχή λειτουργία.
  2. Προστασία από στραβά χέρια. Είναι πολύ εύκολο να φέρετε τον μικροελεγκτή σε κατάσταση τούβλου χρησιμοποιώντας άμεσο υλικολογισμικό· δεν χρειάζεται να εργαστείτε σκληρά. Όταν εργάζεστε με ένα bootloader, δεν θα μπορείτε να έχετε πρόσβαση σε δυνητικά επικίνδυνες ρυθμίσεις (με τη βοήθεια ενός προγράμματος ανάπτυξης, φυσικά, διαφορετικά όλα μπορούν να σπάσουν). Επομένως, το Arduino για αρχάριους προορίζεται όχι μόνο από την άποψη ότι είναι κατανοητό και βολικό, αλλά θα σας επιτρέψει επίσης να αποφύγετε ανεπιθύμητα οικονομικά έξοδα που σχετίζονται με την απειρία του ατόμου που εργάζεται μαζί τους.

Έργα για να ξεκινήσετε

Όταν έχετε αποκτήσει ένα κιτ, ένα κολλητήρι, κολοφώνιο και κόλληση, δεν πρέπει να σμιλέψετε αμέσως πολύ περίπλοκες κατασκευές. Φυσικά, μπορείτε να τα φτιάξετε, αλλά η πιθανότητα επιτυχίας στο Arduino για αρχάριους είναι αρκετά χαμηλή με πολύπλοκα έργα. Για να εκπαιδεύσετε και να βελτιώσετε τις δεξιότητές σας, μπορείτε να δοκιμάσετε να εφαρμόσετε μερικές απλούστερες ιδέες που θα σας βοηθήσουν να κατανοήσετε την αλληλεπίδραση και τη λειτουργία του Arduino. Ως τέτοια πρώτα βήματα στην εργασία με το Arduino για αρχάριους, μπορούμε να σας συμβουλεύσουμε να εξετάσετε:

  1. Δημιουργήστε ένα που θα λειτουργεί χάρη στο Arduino.
  2. Σύνδεση ξεχωριστού κουμπιού στο Arduino. Σε αυτήν την περίπτωση, μπορείτε να το κάνετε έτσι ώστε το κουμπί να μπορεί να ρυθμίσει τη λάμψη του LED από το σημείο Νο. 1.
  3. Σύνδεση ποτενσιόμετρου.
  4. Έλεγχος Servo Drive.
  5. Σύνδεση και εργασία με LED τριών χρωμάτων.
  6. Σύνδεση του πιεζοηλεκτρικού στοιχείου.
  7. Σύνδεση φωτοαντίστασης.
  8. Σύνδεση αισθητήρα κίνησης και σημάτων για τη λειτουργία του.
  9. Σύνδεση αισθητήρα υγρασίας ή θερμοκρασίας.

Έργα για το μέλλον

Είναι απίθανο να σας ενδιαφέρει το Arduino για να συνδέσετε μεμονωμένα LED. Πιθανότατα, σας ελκύει η ευκαιρία να δημιουργήσετε το δικό σας αυτοκίνητο ή ιπτάμενο πικάπ. Αυτά τα έργα είναι δύσκολο να υλοποιηθούν και θα απαιτήσουν πολύ χρόνο και επιμονή, αλλά μόλις ολοκληρωθούν, θα έχετε αυτό που θέλετε: πολύτιμη εμπειρία σχεδιασμού Arduino για αρχάριους.

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

Πρώτον, αξίζει να εξοικειωθείτε με τη λειτουργικότητα του μικροεπεξεργαστή Arduino Uno, στον οποίο είναι χτισμένα τα περισσότερα έργα, και επίσης να εξετάσετε τους λόγους για την επιλογή αυτής της συσκευής. Παρακάτω είναι οι παράγοντες για τους οποίους ένας αρχάριος εφευρέτης πρέπει να επιλέξει το Arduino uno:

  1. Αρκετά εύκολη στη χρήση διεπαφή. Είναι σαφές πού βρίσκεται η επαφή και πού να συνδέσετε τα καλώδια σύνδεσης.
  2. Το τσιπ στην πλακέτα συνδέεται απευθείας στη θύρα USB. Το πλεονέκτημα αυτής της εγκατάστασης είναι ότι η σειριακή επικοινωνία είναι ένα πολύ απλό πρωτόκολλο που έχει αντέξει στη δοκιμασία του χρόνου και το USB κάνει τη σύνδεση με σύγχρονους υπολογιστές πολύ βολική.
  3. Είναι εύκολο να βρείτε το κεντρικό τμήμα του μικροελεγκτή, που είναι το τσιπ ATmega328. Διαθέτει περισσότερες δυνατότητες υλικού, όπως χρονόμετρα, εξωτερικές και εσωτερικές διακοπές, PWM pins και πολλαπλές λειτουργίες ύπνου.
  4. Η συσκευή είναι ανοιχτού κώδικα, επομένως ένας μεγάλος αριθμός ραδιοερασιτέχνων μπορεί να διορθώσει σφάλματα και προβλήματα λογισμικό. Αυτό διευκολύνει τον εντοπισμό σφαλμάτων έργων.
  5. Η ταχύτητα ρολογιού είναι 16 MHz, η οποία είναι αρκετά γρήγορη για τις περισσότερες εφαρμογές και δεν επιταχύνει τον μικροελεγκτή.
  6. Είναι πολύ βολικό να ελέγχετε την ισχύ μέσα σε αυτό και έχει ενσωματωμένη λειτουργία ρύθμισης τάσης. Ο μικροελεγκτής μπορεί επίσης να αποσυνδεθεί από τη θύρα USB χωρίς εξωτερική πηγή τροφοδοσίας. Μπορείτε να συνδέσετε μια εξωτερική πηγή ρεύματος έως και 12 V. Επιπλέον, ο ίδιος ο μικροεπεξεργαστής θα καθορίσει την απαιτούμενη τάση.
  7. Διαθεσιμότητα 13 ψηφιακών επαφών και 6 αναλογικών επαφών. Αυτές οι ακίδες σάς επιτρέπουν να συνδέσετε εξοπλισμό στην πλακέτα Arduino uno από μέσα τρίτων κατασκευαστών. Οι ακίδες χρησιμοποιούνται ως κλειδί για την επέκταση της υπολογιστικής ισχύος του Arduino uno στον πραγματικό κόσμο. Απλώς συνδέστε τις ηλεκτρονικές συσκευές και τους αισθητήρες σας στις υποδοχές που αντιστοιχούν σε καθεμία από αυτές τις ακίδες.
  8. Μια κεφαλίδα ICSP είναι διαθέσιμη για παράκαμψη της θύρας USB και διασύνδεση απευθείας με το Arduino ως σειριακή συσκευή. Αυτή η θύρα είναι απαραίτητη για την επαναφορά του τσιπ εάν είναι κατεστραμμένο και δεν μπορεί πλέον να χρησιμοποιηθεί στον υπολογιστή σας.
  9. Διαθεσιμότητα 32 KB μνήμης flash για αποθήκευση κώδικα προγραμματιστή.
  10. Η λυχνία LED στην πλακέτα συνδέεται με την ψηφιακή ακίδα 13 για να διορθώσει γρήγορα τον κώδικα και να απλοποιήσει τη διαδικασία.
  11. Τέλος, έχει ένα κουμπί για επαναφορά του προγράμματος στο τσιπ.

Το Arduino δημιουργήθηκε το 2005 από δύο Ιταλούς μηχανικούς, τον David Cuartilles και τον Massimo Banzi, με στόχο να επιτρέψει στους μαθητές να μάθουν πώς να προγραμματίζουν τον μικροελεγκτή Arduino uno και να βελτιώσουν τις ηλεκτρονικές τους δεξιότητες και να τον χρησιμοποιούν στον πραγματικό κόσμο.

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

Τώρα ας περάσουμε απευθείας στα έργα στο Arduino uno.

Το πιο εύκολο έργο για αρχάριους

Ας δούμε μερικά απλά και ενδιαφέροντα έργα Arduino uno που μπορούν να κάνουν ακόμη και αρχάριοι σε αυτήν την επιχείρηση - ένα σύστημα συναγερμού.

Έχουμε ήδη κάνει ένα μάθημα για αυτό το έργο -. Εν συντομία για το τι γίνεται και πώς.

Αυτό το έργο χρησιμοποιεί έναν αισθητήρα κίνησης για την ανίχνευση κινήσεων και εκπομπών υψηλής συχνότητας και μια οπτική οθόνη που αποτελείται από φώτα LED που αναβοσβήνουν. Το ίδιο το έργο θα σας παρουσιάσει πολλά πρόσθετα που περιλαμβάνονται στο Arduino Beginner Kit, καθώς και τις αποχρώσεις της χρήσης του NewPing.

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

Για αυτό το έργο εσείς θα χρειαστεί:

  1. Αισθητήρας ping υπερήχων – HC-SR04.
  2. Piezo buzzer.
  3. Φωτισμός λωρίδας LED.
  4. Φωτισμός αυτοκινήτου με λωρίδα RGB. Σε αυτό το σεμινάριο έργου Arduino, θα μάθετε πώς να φτιάξετε εσωτερικό φωτισμό αυτοκινήτου RGB χρησιμοποιώντας μια πλακέτα Arduino uno.

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

Μπορείτε να αλλάξετε το χρώμα του φωτισμού χρησιμοποιώντας συσκευές Android(τηλέφωνο ή tablet) χρησιμοποιώντας την εφαρμογή " Ελεγκτής Bluetooth RGB" (Dev Next Prototypes), από το οποίο μπορείτε να κατεβάσετε δωρεάν Android PlayΚατάστημα. Μπορείτε επίσης να βρείτε ένα ηλεκτρονικό κύκλωμα EasyEDA ή να παραγγείλετε το δικό σας κύκλωμα που βασίζεται σε Arduino σε ένα PCB.

Καταπληκτικά έργα Arduino Uno

Οι περισσότεροι επαγγελματίες στον τομέα της ανάπτυξης ηλεκτρονικών έργων στο Arduino uno λατρεύουν να πειραματίζονται. Ως αποτέλεσμα, εμφανίζονται ενδιαφέρουσες και εκπληκτικές συσκευές, οι οποίες συζητούνται παρακάτω:

  1. Προσθήκη τηλεχειριστηρίου υπερύθρων στο σύστημα ηχείων σας. Στα ηλεκτρονικά είδη ευρείας κατανάλωσης, το τηλεχειριστήριο τηλεχειριστήριοείναι ένα συστατικό ηλεκτρονική συσκευήόπως τηλεόραση, DVD player ή άλλη οικιακή συσκευή που χρησιμοποιείται για τον ασύρματο έλεγχο της συσκευής από μικρή απόσταση. Το τηλεχειριστήριο, πρώτα απ 'όλα, είναι βολικό για τον άνθρωπο και σας επιτρέπει να εργάζεστε με συσκευές που δεν είναι κατάλληλες για άμεση λειτουργία των χειριστηρίων.
  2. Τρομάζω. Το ρολόι πραγματικού χρόνου χρησιμοποιείται για τη λήψη ακριβούς χρόνου. Εδώ αυτό το σύστημα εμφανίζει την ημερομηνία και την ώρα στην οθόνη LCD και μπορούμε να ρυθμίσουμε το ξυπνητήρι χρησιμοποιώντας τα κουμπιά ελέγχου. Μόλις φτάσει η ώρα του συναγερμού, το σύστημα εκπέμπει ένα ηχητικό σήμα.
  3. Βηματικός κινητήρας. σημαίνει έναν ακριβή κινητήρα που μπορεί να περιστραφεί ένα βήμα τη φορά. Μια τέτοια συσκευή κατασκευάζεται με χρήση ρομποτικής, τρισδιάστατων εκτυπωτών και μηχανών CNC.

    Για αυτό το έργο, αποκτήστε τον φθηνότερο βηματικό κινητήρα που μπορείτε να βρείτε. Οι κινητήρες είναι διαθέσιμοι στο διαδίκτυο. Αυτό το έργο χρησιμοποιεί ένα βηματόμετρο 28byj-48, το οποίο είναι κατάλληλο για τα περισσότερα άλλα παρόμοια έργα. Είναι εύκολο να συνδεθεί στην πλακέτα Arduino.
    - Θα χρειαστείτε 6 καλώδια με συνδέσμους θηλυκού σε αρσενικό. Απλά πρέπει να συνδέσετε το μοτέρ στην πλακέτα και τέλος! Μπορείτε επίσης να προσθέσετε ένα μικρό κομμάτι ταινίας στην περιστρεφόμενη κεφαλή για να δείτε ότι παράγει μια περιστροφική κίνηση.

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

Όταν ολοκληρώσετε την εργασία σας, το αποτέλεσμα των ενεργειών σας θα εμφανιστεί στην οθόνη. Για να είναι απλά και ξεκάθαρα τα πράγματα, συνιστάται η χρήση LCD με μετατροπέα I2C, επομένως χρειάζεστε μόνο 4 καλώδια για να συνδεθείτε στην πλακέτα Arduino.

Πορεία εγκεφάλουνεαρός μαχητής προγραμματισμού Arduinoή από πού να αρχίσετε να εξοικειωθείτε με αυτήν την πλατφόρμα.

«Από πού να αρχίσω, Μεγαλειότατε; - ρώτησε. «Ξεκινήστε από την αρχή», απάντησε σημαντικά ο Βασιλιάς...» (ντο) Λιούις Κάρολ Η Αλίκη στη χώρα των θαυμάτων

Βήμα 1: Ας ξεκινήσουμε από την αρχή ή πώς θα ήταν ωραίο αν το Arduino ήταν δωρεάν

Έχοντας διαβάσει τόνους σχολικών βιβλίων Arduino, έχοντας καταλήξει σε ένα σωρό χρήσιμες εφαρμογές για αυτό το πράγμα στην καθημερινή ζωή, από την αυτοματοποίηση της σίτισης των ψαριών σε ένα ενυδρείο έως έναν σπορέα ρομπότ για ένα προσωπικό γκαζόν, καταλαβαίνουμε ότι χωρίς Arduinoδεν τα βγάζουμε πέρα!

Έχοντας αγοράσει ένα χειριστήριο, καταλαβαίνουμε ότι έχουμε έναν πίνακα, αλλά πολλές ιδέες. Τι να κάνω? Πνευματώδηςμας οδηγεί στη σωστή απόφαση.

Πρέπει να κλωνοποιηθεί το Arduino με τα ίδια σου τα χέρια!

Βήμα 2: Συγκεντρώστε όλα όσα χρειάζεστε

Για να επιταχύνουμε τη διαδικασία θα χρησιμοποιήσουμε συμβούλιο ανάπτυξης. Όπως είναι γνωστό από τις τεχνικές παραμέτρους του ελεγκτή ATmega 328 IC, για να το τρέξουμε σε ελάχιστη διαμόρφωση χρειαζόμαστε:

− ελεγκτής Arduino Duemilanove(θα χρησιμοποιηθεί ως προγραμματιστής).
− μικροκύκλωμα ATmega 328 IC ;
− Αντηχείο χαλαζία 16 MHz.
− αντιστάσεις 100 Ohm 3 τεμ.;
− πυκνωτές 22pF 2 τεμ.;
− LED 3 τεμ με χρώματα λάμψης κόκκινου, πράσινου και κίτρινου.
− Σταθεροποιητής τάσης 5 Volt, για παράδειγμα 7805.
− οποιαδήποτε μπαταρία 9 με υποδοχή σύνδεσης.
− Καλώδιο USB.
− υπολογιστής ή φορητός υπολογιστής με εγκατεστημένο πακέτο λογισμικού Arduino IDE;
− breadboard και σύρματα.

Βήμα 3: Ξεκινήστε τη διάταξη



Τοποθετούμε το τσιπ ελεγκτή στο breadboard.

Βήμα 4: Εγκαταστήστε το σταθεροποιητή τάσης και τα κυκλώματα ισχύος

Τοποθετούμε τον σταθεροποιητή τάσης L7805 στην πλακέτα. Ο σκοπός των ακίδων μικροκυκλώματος είναι 1 εισόδου (7-20 Volt), 2 θήκης, 3 εξόδου (5 Volt). Χρησιμοποιώντας καλώδια στερέωσης, συνδέουμε τον σταθεροποιητή στην πηγή ρεύματος και τον ελεγκτή, όπως φαίνεται στις φωτογραφίες.

Βήμα 5: Συνδέστε το ρεύμα στον ελεγκτή

Σύμφωνα με την αρίθμηση των ακίδων του ελεγκτή, το συνδέουμε με καλώδια στερέωσης στην έξοδο του σταθεροποιητή τάσης και του κοινού καλωδίου.

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

Βήμα 6: Συνδέστε το αντηχείο χαλαζία



Στην πλακέτα τοποθετούμε αντηχείο και πυκνωτές του ταλαντευτικού κυκλώματος.

Η διαδικασία εγκατάστασης είναι η εξής:

− τοποθετούμε έναν πυκνωτή 22 pF μεταξύ της γείωσης και του 9ου σκέλους του ελεγκτή.
− τοποθετούμε έναν πυκνωτή 22 pF μεταξύ της γείωσης και του 10ου σκέλους του ελεγκτή.
− ενεργοποιούμε το αντηχείο μεταξύ των ποδιών 9 και 10 του ελεγκτή.
− συνδέουμε μια αντίσταση 10 kOm μεταξύ 1 σκέλους του ελεγκτή και +5V (παρακάμπτουμε το σήμα «Επαναφορά»).

Βήμα 7: Προσθήκη ενδείξεων κατάστασης ελεγκτή

Συνδέουμε τα LED σε σειρά με αντιστάσεις 100 Ohm, μεταξύ της γείωσης και του προγραμματιστή μας.

Βήμα 7: Συνδέστε το breadboard στην πλακέτα προγραμματιστή


Σύνδεση του συναρμολογημένου breadboard στην πλακέτα Arduino Duemilanoveμε τον εξής τρόπο:

− συνδέστε την έξοδο του κίτρινου LED στο 9 έξοδος στην υποδοχή του προγραμματιστή, ο παλμός του θα μας δείξει ότι ο προγραμματιστής λειτουργεί.
− συνδέστε την κόκκινη έξοδο LED στο 8 έξοδος στην υποδοχή προγραμματιστή, σηματοδοτεί πιθανά σφάλματα.
− συνδέστε την έξοδο του πράσινου LED στο 7 καρφίτσα στην υποδοχή του προγραμματιστή, η λάμψη του υποδεικνύει ανταλλαγή δεδομένων μεταξύ του προγραμματιστή και του μικροελεγκτή.

Συνδέουμε τις πλακέτες μας μεταξύ τους με τα υπόλοιπα καλώδια όπως φαίνεται στο σχήμα, χωρίς να ξεχνάμε να συνδέσουμε τα καλώδια ρεύματος + 5 VΚαι πλαίσιομεταξυ τους.

Βήμα 8: Μετατροπή της πλακέτας Arduino Duemilanove σε προγραμματιστή

Για να φορτωθεί στον μικροελεγκτή ATmega 328ICο bootloader πρέπει να μετατραπεί σε δικό μας Arduino Duemilanoveστον προγραμματιστή. Συνδέουμε το συγκρότημα μας στον υπολογιστή χρησιμοποιώντας USBκαλώδιο. Ανοίξτε το περιβάλλον προγραμματισμού AndurinoIDE, επιλέξτε το σκίτσο (πρόγραμμα) σε αυτό AndurinoISPκαι ανεβάστε το στο Arduino Duemilanove. Με το που αναβοσβήνει το κίτρινο LED είμαστε πεπεισμένοι ότι το σκίτσο έχει φορτωθεί στον προγραμματιστή μας.

Βήμα 9: Φορτώστε το bootloader

Στο AndurinoISP (στοιχείο μενού « Τools") επιλέξτε τον τύπο του ελεγκτή που χρειαζόμαστε ( ATmega 328 IC). Δίνουμε την εντολή για φόρτωση του bootloader "Burn bootloader". Παρακολουθούμε τα μηνύματα AndurinoIDE αφού ολοκληρωθεί η φόρτωση του bootloader " Done Burning bootloader"ο μικροελεγκτής μας είναι έτοιμος να καταγράψει ένα σκίτσο του έργου του νέου μας σπιτικά προϊόντα.

Βήμα 10: Πιθανά προβλήματα και λύσεις






Τα πιθανά σφάλματα κατά την εγγραφή ενός bootloader και ο τρόπος εξάλειψής τους εμφανίζονται στα παραπάνω στιγμιότυπα οθόνης εντοπισμού σφαλμάτων.

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


Μπλουζα