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

Σε αυτό το άρθρο αποφάσισα να συλλέξω ένα πλήρες οδηγός βήμα προς βήμαγια αρχάριους 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 Due, και μετά συνειδητοποιούν ότι δεν λειτουργούν όλα τα σκίτσα σε αυτό και είναι δύσκολο για αυτούς να αντιμετωπίσουν την πλήρη ισχύ του συσκευή από μόνα τους. Άλλοι ακολουθούν την αντίθετη διαδρομή και αντιμετωπίζουν περιορισμούς πόρων (μνήμη, καρφίτσες, θύρες, συχνότητα ρολογιού, διατροφή). Πώς να βρείτε αυτό το χρυσό μέσο; Ας προσπαθήσουμε να το καταλάβουμε...

Πληρωμή πλεονεκτήματα Μειονεκτήματα

Arduino Uno

λειτουργικότητα όπως το ProMini και το Nano
  • Ο πίνακας είναι ο πιο κοινός στην οικογένεια Arduino· ο μεγαλύτερος αριθμός μαθημάτων έχει δημιουργηθεί για αυτόν.
  • Χάρη στην παρουσία ενός πίνακα DIP, μπορείτε να αλλάξετε τον μικροελεγκτή
  • Με την ίδια λειτουργικότητα με τα Arduino ProMini, Nano και Micro, η πλακέτα είναι πολλές φορές μεγαλύτερη σε μέγεθος

Arduino Mega 2560

  • Οι ασπίδες που δημιουργήθηκαν για το Arduino UNO είναι κατάλληλες
  • Μέγιστος αριθμός ακίδων
  • Διευρυμένη χωρητικότητα όλων των τύπων μνήμης
  • Δεν μπορεί να εγκατασταθεί στο Breadboard χωρίς τη χρήση καλωδίων

Arduino Leonardo

λειτουργικότητα όπως το MICRO

  • Οι ασπίδες που δημιουργήθηκαν για το Arduino UNO είναι κατάλληλες
  • Η πλακέτα είναι μια βελτιωμένη έκδοση του Arduino UNO και λειτουργεί με τα περισσότερα σκίτσα του
  • Δεν μπορεί να εγκατασταθεί στο Breadboard χωρίς τη χρήση καλωδίων
  • Ορισμένα σκίτσα που δημιουργήθηκαν για το Arduino Uno δεν λειτουργούν στο Leonardo, επειδή... χρησιμοποιούνται διαφορετικοί μικροελεγκτές

Arduino λόγω


  • Αριθμός καρφιτσών όπως το Arduino Mega
  • Έχουν υλοποιηθεί δύο αναλογικές έξοδοι
  • Χρησιμοποιεί έναν ισχυρό μικροελεγκτή 32 bit με συχνότητα ρολογιού 84 MHz
  • Δεν μπορεί να εγκατασταθεί στο Breadboard χωρίς τη χρήση καλωδίων
  • Το μεγαλύτερο μέγεθος πλακέτας σε ολόκληρη την οικογένεια Arduino
  • Δεν παρέχουν όλα τα σκίτσα τόσο υψηλή συχνότητα ρολογιού
  • Δεν είναι όλα ασπίδα προβλέπουν τη μετάδοση σημάτων με οριακή τάση 3,3 V
  • Τάση τροφοδοσίας 3,3V

Arduino ProMini 3.3V

λειτουργικότητα όπως το Nano και το UNO


  • Η χαμηλότερη συχνότητα ρολογιού ενός μικροελεγκτή, μόνο 8 MHz
  • Τάση τροφοδοσίας 3,3V

Arduino ProMini 5V

λειτουργικότητα όπως το Nano και το UNO

  • Μπορεί να χρησιμοποιηθεί για τη σχεδίαση διαγραμμάτων στο Breadboard
  • Η μικρότερη σανίδα στην οικογένεια Arduino
  • Παρέχεται χωρίς κολλημένες επαφές πείρων, επιτρέποντας την επιφανειακή τοποθέτηση
  • Οι ασπίδες που δημιουργήθηκαν για το Arduino UNO δεν είναι κατάλληλες
  • Δεν υπάρχει ελεγκτής USB, που απαιτεί εξωτερικό προγραμματιστή

Arduino NANO V3.0

λειτουργικότητα όπως το ProMini και το UNO


  • Μπορεί να χρησιμοποιηθεί για τη σχεδίαση διαγραμμάτων στο Breadboard
  • Η πλακέτα είναι ελαφρώς μεγαλύτερη από το Arduino ProMini, αλλά διαθέτει θύρα USB και δεν απαιτεί τη χρήση εξωτερικού προγραμματιστή
  • Οι ασπίδες που δημιουργήθηκαν για το Arduino UNO δεν είναι κατάλληλες
  • Η εισαγωγή μιας θύρας USB με ελεγκτή οδήγησε σε αύξηση της ποσότητας μνήμης flash που εκχωρήθηκε για το bootloader (σε σύγκριση με το Arduino ProMini)

Arduino MICRO

λειτουργικότητα όπως το Leonardo


  • Μπορεί να χρησιμοποιηθεί για τη σχεδίαση διαγραμμάτων στο Breadboard
  • Η πλακέτα είναι ελαφρώς μεγαλύτερη από το Arduino Nano, αλλά έχει όλες τις λειτουργίες του Arduino Leonardo
  • Είναι δυνατή η προσομοίωση διαφόρων συσκευές USBόταν συνδέεται σε υπολογιστή (η πλακέτα θα εντοπιστεί ως ποντίκι, πληκτρολόγιο κ.λπ.)
  • Οι ασπίδες που δημιουργήθηκαν για το Arduino UNO δεν είναι κατάλληλες
  • Η μεταφορά της λειτουργίας του ελεγκτή USB στον μικροελεγκτή οδήγησε σε αύξηση της ποσότητας μνήμης flash που εκχωρήθηκε για τον φορτωτή εκκίνησης

Η πρώτη ερώτηση που επηρεάζει την επιλογή του Arduino- ποιο έργο θέλετε να υλοποιήσετε;

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

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

Εάν σχεδιάζετε να υλοποιήσετε το δικό σας έργο, τότε η επιλογή του Arduino θα πρέπει να προσεγγιστεί με μέθοδο εξάλειψης. Εάν το έργο σας διαθέτει μονάδες με καρφίτσες για το Arduino Uno, τότε εξαιρέστε το Arduino ProMini 3.3V, το Arduino ProMini 5V, ένα ανάλογο του Arduino Nano), αλλά μπορεί να έχει διαφορετικό τύπο υποδοχής USB, να είναι ελαφρώς διαφορετικό σε μέγεθος, να έχει διαφορετικό ελεγκτή USB, διαφορετικό τύπο θήκης μικροελεγκτή, χρώμα πλακέτας κ.λπ. Εδώ πρέπει να καταλάβετε ότι αυτές οι πλακέτες επαναλαμβάνουν τη λειτουργικότητα της αρχικής τους (με την οποία έχουν παρόμοια ονομασία), αφού χρησιμοποιούν τον ίδιο μικροελεγκτή ATmega της ίδιας σειράς. Διαστάσεις πλακέτας, περίβλημα μικροελεγκτή και τύπος θύρα USB, μπορεί να προσδιοριστεί από τη φωτογραφία. Και η παρουσία του "CH340G" στο όνομα σημαίνει ότι ο ελεγκτής USB δεν είναι ένα τυπικό τσιπ FTDI για το Arduino, αλλά το αναλογικό του CH340G, επομένως, για να συνδέσετε ένα τέτοιο Arduino σε έναν υπολογιστή, πρέπει να εγκαταστήσετε ένα πρόγραμμα οδήγησης για το τσιπ CH340G . Αυτές οι πλακέτες είναι κατάλληλες για όσους πιστεύουν ότι μια εφάπαξ εγκατάσταση προγράμματος οδήγησης δεν αποτελεί ταλαιπωρία και η μειωμένη τιμή αποτελεί πλεονέκτημα σε σχέση με το αρχικό όνομα.

Το 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 παίζουν πολύ μεγάλο ρόλο. Χωρίς αυτά, ακόμη και το πιο απλό παράδειγμα του Blink, το οποίο αναβοσβήνει ένα LED μετά από μια καθορισμένη χρονική περίοδο, δεν μπορεί να λειτουργήσει. Αλλά οι περισσότεροι αρχάριοι προγραμματιστές γνωρίζουν ελάχιστα για τις χρονικές καθυστερήσεις και χρησιμοποιούν μόνο την καθυστέρηση Arduino χωρίς να γνωρίζουν τις παρενέργειες αυτής της εντολής. Σε αυτό το άρθρο, θα μιλήσω λεπτομερώς για τις λειτουργίες χρονισμού και τον τρόπο χρήσης τους στο Arduino IDE.

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

  • καθυστέρηση()
  • delayMicroseconds()
  • millis ()
  • micros ()

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

Χρησιμοποιώντας τη λειτουργία καθυστέρησης arduino

Σύνταξη

Η καθυστέρηση Arduino είναι η απλούστερη εντολή και χρησιμοποιείται συχνότερα από αρχάριους. Ουσιαστικά, είναι μια καθυστέρηση που διακόπτει το πρόγραμμα για τον αριθμό των χιλιοστών του δευτερολέπτου που υποδεικνύεται σε παρένθεση. (Υπάρχουν 1000 χιλιοστά του δευτερολέπτου σε ένα δευτερόλεπτο.) Η μέγιστη τιμή μπορεί να είναι 4294967295 ms, που είναι περίπου ίση με 50 ημέρες. Ας δούμε ένα απλό παράδειγμα που δείχνει ξεκάθαρα πώς λειτουργεί αυτή η εντολή.

Void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); // αποστολή σήματος υψηλού στην καρφίτσα 13 delay(10000); // παύση 10000ms ή 10 δευτερόλεπτα digitalWrite13, LOW) ; // αποστολή χαμηλού σήματος στον ακροδέκτη 13 delay(10000); // παύση 10000 ms ή 10 δευτερόλεπτα)

Στη μέθοδο εγκατάστασηΚαθορίζουμε ότι η ακίδα 13 θα χρησιμοποιηθεί ως έξοδος. Στο κύριο μέρος του προγράμματος, πρώτα στέλνεται υψηλό σήμα στον ακροδέκτη και μετά κάνουμε καθυστέρηση 10 δευτερολέπτων. Σε αυτό το διάστημα, το πρόγραμμα φαίνεται να έχει ανασταλεί. Μετά δίνεται ένα χαμηλό σήμα και πάλι υπάρχει καθυστέρηση και όλα ξεκινούν από την αρχή. Ως αποτέλεσμα, παίρνουμε ότι η ακίδα τροφοδοτείται εναλλάξ είτε με 5 V είτε με 0.

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

Παράδειγμα καθυστέρησης με LED που αναβοσβήνει

Ένα παράδειγμα κυκλώματος για την απεικόνιση του τρόπου λειτουργίας της συνάρτησης καθυστέρησης.
Μπορείτε να φτιάξετε ένα κύκλωμα με ένα LED και μια αντίσταση. Στη συνέχεια θα έχουμε ένα τυπικό παράδειγμα - αναβοσβήνει ένα LED. Για να το κάνετε αυτό, πρέπει να συνδέσετε ένα LED με θετική επαφή στον πείρο, το οποίο ορίσαμε ως έξοδο. Συνδέουμε το ελεύθερο σκέλος του LED στη γείωση μέσω μιας αντίστασης περίπου 220 Ohms (είναι δυνατό λίγο περισσότερο). Μπορείτε να προσδιορίσετε την πολικότητα κοιτάζοντας το εσωτερικό του. Το μεγάλο κύπελλο στο εσωτερικό συνδέεται με το μείον και το μικρό πόδι με το συν. Εάν το LED σας είναι καινούργιο, τότε μπορείτε να προσδιορίσετε την πολικότητα από το μήκος των καλωδίων: το μακρύ πόδι είναι συν, το κοντό πόδι είναι μείον.

Λειτουργία delayMicroseconds

Αυτή η συνάρτηση είναι ένα πλήρες ανάλογο της καθυστέρησης, με τη διαφορά ότι οι μονάδες μέτρησής της δεν είναι χιλιοστά του δευτερολέπτου, αλλά μικροδευτερόλεπτα (σε 1 δευτερόλεπτο υπάρχουν 1.000.000 μικροδευτερόλεπτα). Η μέγιστη τιμή θα είναι 16383, που ισούται με 16 χιλιοστά του δευτερολέπτου. Η ανάλυση είναι 4, δηλαδή ο αριθμός θα είναι πάντα πολλαπλάσιο των τεσσάρων. Ένα παράδειγμα απόσπασμα θα μοιάζει με αυτό:

DigitalWrite(2, HIGH); // αποστολή υψηλού σήματος στην καρφίτσα 2 delayMicroseconds(16383); // παύση 16383 µs digitalWrite(2, LOW); // αποστολή χαμηλού σήματος στην καρφίτσα 2 delayMicroseconds(16383); // παύση 16383 µs

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

Λειτουργία Millis αντί για καθυστέρηση

Η συνάρτηση millis() θα σας επιτρέψει να εκτελέσετε μια καθυστέρηση χωρίς καθυστέρηση στο Arduino, παρακάμπτοντας έτσι τις αδυναμίες των προηγούμενων μεθόδων. Η μέγιστη τιμή της παραμέτρου millis είναι η ίδια με αυτή της συνάρτησης καθυστέρησης (4294967295ms ή 50 ημέρες).

Χρησιμοποιώντας millis, δεν σταματάμε την εκτέλεση ολόκληρου του σκίτσου, αλλά απλώς υποδεικνύουμε πόσο καιρό το Arduino θα πρέπει απλώς να «παρακάμψει» το ακριβές μπλοκ κώδικα που θέλουμε να διακόψουμε. Σε αντίθεση με το delay millis, δεν σταματάει τίποτα από μόνο του. Αυτή η εντολή απλώς μας επιστρέφει από το ενσωματωμένο χρονόμετρο του μικροελεγκτή τον αριθμό των χιλιοστών του δευτερολέπτου που έχουν περάσει από την αρχή. Με κάθε κλήση σε βρόχο, εμείς οι ίδιοι μετράμε το χρόνο που έχει περάσει από την τελευταία κλήση του κωδικού μας και αν η χρονική διαφορά είναι μικρότερη από την επιθυμητή παύση, τότε αγνοούμε τον κωδικό. Μόλις η διαφορά γίνει μεγαλύτερη από την απαιτούμενη παύση, εκτελούμε τον κώδικα, παίρνουμε την τρέχουσα ώρα χρησιμοποιώντας το ίδιο millis και τον θυμόμαστε - αυτή η φορά θα είναι το νέο σημείο εκκίνησης. Στον επόμενο κύκλο, η αντίστροφη μέτρηση θα είναι ήδη από το νέο σημείο και θα αγνοήσουμε ξανά τον κωδικό έως ότου η νέα διαφορά μεταξύ των millis και της προηγουμένως αποθηκευμένης τιμής φτάσει ξανά στην επιθυμητή παύση.

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

Ακολουθεί ένα παράδειγμα που δείχνει ξεκάθαρα τη δουλειά της ομάδας:

Ανυπόγραφο μακρύ χρονοδιάγραμμα. // Μεταβλητή για την αποθήκευση του σημείου αναφοράς void setup() ( Serial.begin(9600); ) void loop() ( /* Σε αυτό το σημείο ξεκινά η εκτέλεση του αναλογικού delay(). Υπολογίστε τη διαφορά μεταξύ της τρέχουσας στιγμής και της προηγουμένως αποθηκευμένο σημείο αναφοράς. Εάν η διαφορά είναι μεγαλύτερη από την επιθυμητή τιμή, τότε εκτελέστε τον κώδικα. Εάν όχι, μην κάνετε τίποτα */ if (millis() - timing > 10000)( // Αντί για 10000, αντικαταστήστε την τιμή παύσης που χρειάζεστε χρονομέτρηση = millis(); Serial.println ("10 δευτερόλεπτα") ; ) )

Πρώτα εισάγουμε τη μεταβλητή χρονισμού, η οποία θα αποθηκεύσει τον αριθμό των χιλιοστών του δευτερολέπτου. Από προεπιλογή, η τιμή της μεταβλητής είναι 0. Στο κύριο μέρος του προγράμματος, ελέγχουμε την συνθήκη: εάν ο αριθμός των χιλιοστών του δευτερολέπτου από την έναρξη του μικροελεγκτή μείον τον αριθμό που γράφτηκε στη μεταβλητή χρονισμού είναι μεγαλύτερος από 10000, τότε το εκτελείται η ενέργεια εξόδου ενός μηνύματος στην οθόνη θύρας και η τρέχουσα τιμή ώρας εγγράφεται στη μεταβλητή. Ως αποτέλεσμα της λειτουργίας του προγράμματος, το μήνυμα 10 δευτερόλεπτα θα εμφανίζεται στην οθόνη θύρας κάθε 10 δευτερόλεπτα. Αυτή η μέθοδοςσας επιτρέπει να αναβοσβήνει το LED χωρίς καθυστέρηση.

Λειτουργία micros αντί για καθυστέρηση

Αυτή η λειτουργία μπορεί επίσης να εκτελέσει καθυστέρηση χωρίς τη χρήση της εντολής καθυστέρησης. Λειτουργεί ακριβώς το ίδιο με τα millis, αλλά μετράει μικροδευτερόλεπτα αντί για χιλιοστά του δευτερολέπτου με ανάλυση 4 μs. Η μέγιστη τιμή του είναι 4294967295 μικροδευτερόλεπτα ή 70 λεπτά. Εάν υπερχειλίσει, η τιμή απλώς επαναφέρεται στο 0, μην το ξεχνάτε.

Περίληψη

Η πλατφόρμα Arduino μας παρέχει αρκετούς τρόπους για να εφαρμόσουμε μια καθυστέρηση στο έργο μας. Χρησιμοποιώντας την καθυστέρηση, μπορείτε να διακόψετε γρήγορα την εκτέλεση ενός σκίτσου, αλλά ταυτόχρονα θα εμποδίσετε τη λειτουργία του μικροελεγκτή. Η χρήση της εντολής millis σας επιτρέπει να κάνετε χωρίς καθυστέρηση στο Arduino, αλλά αυτό θα απαιτήσει λίγο περισσότερο προγραμματισμό. Επιλέγω Ο καλύτερος τρόποςανάλογα με την πολυπλοκότητα του έργου σας. Κατά κανόνα, σε απλά σκίτσα και με καθυστέρηση μικρότερη από 10 δευτερόλεπτα, χρησιμοποιείται καθυστέρηση. Εάν η λογική λειτουργίας είναι πιο περίπλοκη και απαιτείται μεγάλη καθυστέρηση, τότε είναι προτιμότερο να χρησιμοποιήσετε millis αντί για καθυστέρηση.

Μια σειρά από άρθρα και διαγράμματα εκπαίδευσης με ραδιοερασιτεχνικά πειράματα στο 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 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 σχεδόν οποιασδήποτε συσκευής. Εξετάστε τις πιο δημοφιλείς και ενδιαφέρουσες μονάδες επέκτασης ή ασπίδες όπως ονομάζονται επίσης.