» Ηλεκτρονικά » Arduino »Arduino για αρχάριους

Arduino για αρχάριους


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

Τι χρειάζεστε για να ξεκινήσετε;
Arduino Uno-1pc
Καλώδιο USB-1τμ
Jumpers 1pc
1pcs πλακέτα ανάπτυξης
Κόκκινο LED 4 τεμ
220 ohm αντίσταση 4 τεμ
Αντίσταση 10 δωμάτιο 1 τεμ
Κουμπί χωρίς στερέωση
Ποτενσιόμετρο
RGB LED με κοινή κάθοδο

Όλα αυτά μπορούν να αγοραστούν σε ένα τοπικό ραδιοφωνικό κατάστημα ή να παραγγελθούν στο Διαδίκτυο.

Ένας online προσομοιωτής χρησιμοποιήθηκε για να αποδείξει και να προσομοιώσει τα ηλεκτρικά κυκλώματα.

Αυτός ο προσομοιωτής λειτουργεί καλύτερα στο πρόγραμμα περιήγησης Chrome.
Ας ρίξουμε μια πιο προσεκτική ματιά στο Arduino.

Το Arduino δεν είναι ένας μεγάλος υπολογιστής στον οποίο μπορούν να συνδεθούν εξωτερικά κυκλώματα. Το Arduino Uno χρησιμοποιεί το Atmega 328P
Αυτό είναι το μεγαλύτερο chip στο τραπέζι. Αυτό το τσιπ εκτελεί προγράμματα που είναι αποθηκευμένα στη μνήμη του. Μπορείτε να κατεβάσετε το πρόγραμμα μέσω USB χρησιμοποιώντας το IDE του Arduino. Η θύρα USB παρέχει επίσης δύναμη στο arduino.

Υπάρχει ξεχωριστός σύνδεσμος τροφοδοσίας. Υπάρχουν δύο έξοδοι στον πίνακα, οι οποίες ονομάζονται 5v και 3.3v, οι οποίες είναι απαραίτητες για την τροφοδοσία διαφόρων συσκευών. Θα βρείτε επίσης καρφίτσες με σήμανση GND, αυτές είναι αγωγοί γείωσης (το έδαφος είναι 0V). Η πλατφόρμα Arduino έχει επίσης 14 ψηφιακές έξοδοι (pins), σημειωμένες με αριθμούς από 0 έως 13, οι οποίες συνδέονται με εξωτερικούς κόμβους και έχουν δύο καταστάσεις, υψηλές ή χαμηλές (ενεργοποιημένες ή απενεργοποιημένες). Αυτές οι επαφές μπορούν να λειτουργούν ως έξοδοι ή ως είσοδοι, δηλ. μπορούν είτε να μεταδώσουν δεδομένα και να ελέγξουν εξωτερικές συσκευές είτε να λάβουν δεδομένα από συσκευές. Τα ακόλουθα συμπεράσματα στο διοικητικό συμβούλιο ορίζονται ως A0-A5. Αυτές είναι αναλογικές εισόδους που μπορούν να λαμβάνουν δεδομένα από διάφορους αισθητήρες. Αυτό είναι ιδιαίτερα κατάλληλο όταν χρειάζεται να μετρήσετε ένα εύρος, όπως η θερμοκρασία. Οι αναλογικές είσοδοι έχουν πρόσθετες λειτουργίες που μπορούν να ενεργοποιηθούν ξεχωριστά.


Πώς να χρησιμοποιήσετε ένα breadboard.

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

Το breadboard έχει σειρές οπών στις οποίες μπορείτε να εισάγετε εξαρτήματα και σύρματα. Ορισμένες από αυτές τις οπές είναι ηλεκτρικά συνδεδεμένες μεταξύ τους.

Οι δύο άνω και κάτω σειρές συνδέονται σε σειρά κατά μήκος ολόκληρης της σανίδας. Αυτές οι σειρές χρησιμοποιούνται για την τροφοδοσία του κυκλώματος. Μπορεί να είναι 5v ή 3.3v, αλλά σε κάθε περίπτωση, το πρώτο πράγμα που πρέπει να κάνετε είναι να συνδέσετε 5v και GND στο breadboard, όπως φαίνεται στην εικόνα. Μερικές φορές αυτές οι συνδέσεις γραμμών μπορούν να διακοπεί στη μέση του πίνακα, και στη συνέχεια, αν χρειαστεί, μπορείτε να τις συνδέσετε, όπως φαίνεται στην εικόνα.




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

Το πρώτο πράγμα που συνδέουμε με τον μικροελεγκτή μας είναι το LED. Το ηλεκτρικό διάγραμμα σύνδεσης εμφανίζεται στην εικόνα.


Γιατί χρειάζομαι αντίσταση στο κύκλωμα; Σε αυτή την περίπτωση, περιορίζει το ρεύμα που διέρχεται από το LED. Κάθε ενδεικτική λυχνία έχει σχεδιαστεί για ένα συγκεκριμένο ρεύμα και αν αυτό το ρεύμα είναι μεγαλύτερο, τότε το LED θα αποτύχει. Μάθετε ποια αξία πρέπει να χρησιμοποιεί ο αντιστάτης με το νόμο Ohm. Για όσους δεν γνωρίζουν ή έχουν ξεχάσει, ο νόμος του Ohm λέει ότι υπάρχει μια γραμμική εξάρτηση του ρεύματος από την τάση. Δηλαδή, όσο περισσότερο εφαρμόζουμε τάση στην αντίσταση, τόσο πιο ρεύμα θα ρέει μέσα από αυτό.
V = I * R
Πού V- τάση σε όλη την αντίσταση
Εγώ- ρεύμα μέσω της αντίστασης
R- αντοχή που πρέπει να βρεθεί.
Πρώτον, πρέπει να μάθουμε την τάση σε όλη την αντίσταση. Τα περισσότερα από τα LED 3 mm ή 5 mm που θα χρησιμοποιήσετε έχουν τάση λειτουργίας 3V. Έτσι, στην αντίσταση πρέπει να πληρώσουμε 5-3 = 2v.

Κατόπιν υπολογίζουμε το ρεύμα που διέρχεται μέσω της αντίστασης.
Τα περισσότερα 3 και 5mm LED λάμπουν σε πλήρη φωτεινότητα με ρεύμα 20mA. Ένα ρεύμα περισσότερο από αυτό μπορεί να τις απενεργοποιήσει και ένα ρεύμα μικρότερης ισχύος θα μειώσει τη φωτεινότητα τους, χωρίς να προκαλέσει καμιά βλάβη.

Έτσι, θέλουμε να ενεργοποιήσουμε τη λυχνία LED στο κύκλωμα 5v έτσι ώστε να έχει ρεύμα 20mA. Δεδομένου ότι όλα τα μέρη περιλαμβάνονται σε ένα κύκλωμα, η αντίσταση θα έχει επίσης ένα ρεύμα 20 mA.
Παίρνουμε
2V = 20 mA * R
2V = 0.02Α * R
R = 100 ohm

100 Ohms είναι η ελάχιστη αντίσταση, είναι καλύτερα να χρησιμοποιήσετε λίγο περισσότερο, επειδή τα LED έχουν κάποια διακύμανση στα χαρακτηριστικά.
Σε αυτό το παράδειγμα, χρησιμοποιείται αντίσταση 220 ohm. Ακριβώς επειδή ο συγγραφέας έχει πολλά από αυτά: wink :.

Τοποθετήστε το LED στις οπές στο κέντρο της πλακέτας έτσι ώστε ο μακρύς ακροδέκτης του να είναι συνδεδεμένος με έναν από τους ακροδέκτες της αντίστασης. Συνδέστε το δεύτερο άκρο του αντιστάτη σε 5V και συνδέστε τη δεύτερη έξοδο του LED στο GND. Η λυχνία LED πρέπει να ανάψει.

Λάβετε υπόψη ότι υπάρχει μια διαφορά στον τρόπο σύνδεσης της LED. Το ρεύμα ρέει από μεγαλύτερο τερματικό σε βραχύτερο τερματικό. Στο διάγραμμα μπορεί να φανταστεί κανείς ότι το ρεύμα ρέει προς την κατεύθυνση στην οποία κατευθύνεται το τρίγωνο. Δοκιμάστε να στρέψετε το LED και θα δείτε ότι δεν ανάβει.

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

Ανατομία ενός σκίτσου Arduino.

Τα προγράμματα για το Arduino ονομάζονται σκίτσο. Αποτελούνται από δύο κύριες λειτουργίες. Λειτουργία ρύθμισης και λειτουργία βρόχο
μέσα σε αυτή τη λειτουργία θα ρυθμίσετε όλες τις βασικές ρυθμίσεις. Ποια συμπεράσματα θα δουλέψουν για την είσοδο ή την έξοδο, ποιες βιβλιοθήκες θα συνδέσουν, να προετοιμάσουν τις μεταβλητές. Λειτουργία Ρύθμιση () Ξεκινάει μόνο μία φορά κατά τη διάρκεια του σκίτσου, όταν ξεκινά το πρόγραμμα.
αυτή είναι η κύρια λειτουργία που εκτελείται μετά setup (). Στην πραγματικότητα, αυτό είναι το ίδιο το πρόγραμμα. Αυτή η λειτουργία θα διαρκέσει επ 'αόριστον μέχρι να απενεργοποιήσετε την τροφοδοσία.

LED Arduino που αναβοσβήνει




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



- η λειτουργία αυτή χρησιμοποιείται σε setup () τμήματα του προγράμματος και χρησιμεύει για την προετοιμασία των συμπερασμάτων που θα χρησιμοποιήσετε ως εισροή (INPUT) ή έξοδο (OUTPUT). Δεν μπορείτε να διαβάσετε ή να γράψετε δεδομένα από τον ακροδέκτη μέχρι να το ρυθμίσετε αναλόγως pinMode. Αυτή η λειτουργία έχει δύο επιχειρήματα: pinNumber- Αυτός είναι ο αριθμός PIN που θα χρησιμοποιήσετε.

Λειτουργία- ορίζει πώς θα λειτουργήσει ο ακροδέκτης. Στην είσοδο (INPUT) ή έξοδο (OUTPUT). Για να ανάψει το LED πρέπει να δώσουμε ένα σήμα Από το Arduino Για να το κάνετε αυτό, ρυθμίζουμε την έξοδο για την έξοδο.
- αυτή η λειτουργία χρησιμεύει για τον καθορισμό της κατάστασης (κατάσταση) pina (pinNumber). Υπάρχουν δύο κύριες καταστάσεις (γενικά υπάρχουν 3), ένα είναι Υψηλή, ο ακροδέκτης θα είναι 5v, άλλος είναι Χαμηλή και ο πείρος θα είναι 0v. Έτσι, για να ανάψει το LED, πρέπει να ρυθμίσουμε ένα υψηλό επίπεδο στον ακροδέκτη που συνδέεται με το LED Υψηλή.

- καθυστέρηση. Εξυπηρετεί να καθυστερήσει το πρόγραμμα για μια καθορισμένη περίοδο σε ms.
Παρακάτω είναι ο κωδικός που αναγκάζει το LED να αναβοσβήνει.
// Αναβοσβήνει με LED

int ledPin = 7; // Arduino pin στην οποία συνδέεται το LED

άκυρη ρύθμιση () {
  pinMode (ledPin, OUTPUT), // ορίστε τον ακροδέκτη ως EXIT
}}

void loop () {
  ψηφιακήWrite (ledPin, HIGH); // ανάβει το LED
  καθυστέρηση (1000), // καθυστέρηση 1000 ms (1 δευτερόλεπτο)
  digitalWrite (ledPin, LOW); // Απενεργοποιήστε τη λυχνία LED
  καθυστέρηση (1000); // περιμένετε 1 δευτ
}}


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

επικεφαλήςείναι μια μεταβλητή. Οι μεταβλητές χρησιμοποιούνται σε προγράμματα για την αποθήκευση τιμών. Σε αυτό το παράδειγμα, η μεταβλητή επικεφαλής εκχωρημένη τιμή 7, αυτός είναι ο αριθμός pin του Arduino. Όταν το Arduino στο πρόγραμμα συναντά μια συμβολοσειρά με μια μεταβλητή επικεφαλής , θα χρησιμοποιήσει την τιμή που καθορίσαμε προηγουμένως.
Έτσι καταγράψτε pinMode (ledPin, OUTPUT) παρόμοια με την εγγραφή pinMode (7, OUTPUT).
Αλλά στην πρώτη περίπτωση, αρκεί να αλλάξετε τη μεταβλητή και θα αλλάξει σε κάθε γραμμή όπου χρησιμοποιείται, και στη δεύτερη περίπτωση, για να αλλάξετε τη μεταβλητή, θα πρέπει να κάνετε αλλαγές στα στυλό σε κάθε εντολή.

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



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

Διαχείριση πολλών LED.

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



Για να ενεργοποιήσετε και να απενεργοποιήσετε τις λυχνίες LED με τη σειρά τους, πρέπει να γράψετε ένα πρόγραμμα όπως αυτό:
// Πολύ LED αναβοσβήνει

int led1Pin = 4;
int led2Pin = 5;
int led3Pin = 6;
int led4Pin = 7;

άκυρη ρύθμιση () {
  // ορίστε τις ακίδες ως EXIT
  pinMode (led1Pin, OUTPUT);
  pinMode (led2Pin, OUTPUT);
  pinMode (led3Pin, OUTPUT);
  pinMode (led4Pin, OUTPUT);
}}

void loop () {
  digitalWrite (led1Pin, HIGH); / / ανάβει το LED
  καθυστέρηση (1000), // καθυστέρηση 1 δευτ
  ψηφιακήWrite (led1Pin, LOW), // τεθεί εκτός λειτουργίας η λυχνία LED
  καθυστέρηση (1000), // καθυστέρηση 1 δευτ

  // κάνουν το ίδιο για τις άλλες 3 λυχνίες LED
  ψηφιακήWrite (led2Pin, HIGH); // ανάβει το LED
  καθυστέρηση (1000), // καθυστέρηση 1 δευτ
  digitalWrite (led2Pin, LOW), // βγάλτε το LED
  καθυστέρηση (1000), // καθυστέρηση 1 δευτ

  ψηφιακήWrite (led3Pin, HIGH); // ανάβει το LED
  καθυστέρηση (1000), // καθυστέρηση 1 δευτ
  digitalWrite (led3Pin, LOW), // βγάλτε το LED
  καθυστέρηση (1000), // καθυστέρηση 1 δευτ

  ψηφιακήWrite (led4Pin, HIGH); // ανάβει το LED
  καθυστέρηση (1000), // καθυστέρηση 1 δευτ
  ψηφιακήWrite (led4Pin, LOW), // βάλτε το LED
  καθυστέρηση (1000), // καθυστέρηση 1 δευτ
}}


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

ψηφιακήWrite (led4Pin, HIGH);
καθυστέρηση (1000).
ψηφιακήWrite (led4Pin, LOW);
καθυστέρηση (1000). 

πλήρους κώδικα σκίτσου στο συνημμένο for.zip [720 β] (λήψεις: 1410)

Ρύθμιση φωτεινότητας LED

Μερικές φορές θα χρειαστεί να αλλάξετε τη φωτεινότητα των LED στο πρόγραμμα. Αυτό μπορεί να γίνει χρησιμοποιώντας την εντολή analogWrite (). Αυτή η εντολή ενεργοποιεί και απενεργοποιεί τη λυχνία LED τόσο γρήγορα ώστε το μάτι να μην βλέπει αυτό το τρεμόπαιγμα. Αν η ενδεικτική λυχνία είναι ενεργοποιημένη κατά το ήμισυ της ώρας και κατά το ήμισυ, θα φαίνεται οπτικά να ανάβει στο ήμισυ της φωτεινότητας. Αυτό ονομάζεται διαμόρφωση πλάτους παλμού (PWM ή PWM στα αγγλικά). Το Shim χρησιμοποιείται αρκετά συχνά, καθώς μπορεί να χρησιμοποιηθεί για τον έλεγχο του "αναλογικού" στοιχείου χρησιμοποιώντας έναν ψηφιακό κωδικό. Δεν είναι όλες οι καρφίτσες Arduino κατάλληλες για αυτούς τους σκοπούς. Μόνο τα συμπεράσματα γύρω από τα οποία ο ορισμός αυτός έχει συνταχθεί "~"Θα το δείτε δίπλα στις ακίδες 3,5,6,9,10,11.
Συνδέστε ένα από τα LED σας σε μία από τις εξόδους PWM (για τον συγγραφέα, αυτό είναι pin 9). Τώρα εκτελέστε την ενδεικτική λυχνία που αναβοσβήνει στο σκίτσο, αλλά πρώτα αλλάξτε την εντολή digitalWrite () on analogWrite (). analogWrite () Έχει δύο επιχειρήματα: ο πρώτος είναι ο αριθμός pin και ο δεύτερος είναι η τιμή PWM (0-255), σε σχέση με τα LED θα είναι η φωτεινότητα τους και για τους ηλεκτροκινητήρες η ταχύτητα περιστροφής. Παρακάτω είναι ένας κωδικός παραδείγματος για διαφορετική φωτεινότητα LED.
// Αλλάξτε τη φωτεινότητα της λυχνίας LED

int ledPin = 9; // LED συνδεδεμένη σε αυτόν τον ακροδέκτη
άκυρη ρύθμιση () {
  pinMode (ledPin, OUTPUT), // αρχικοποίηση του pin στην έξοδο
}}

void loop () {
  analogWrite (ledPin, 255), // πλήρης φωτεινότητα (255/255 = 1)
  καθυστέρηση (1000); // παύση 1 δευτ
  digitalWrite (ledPin, LOW), // απενεργοποιήστε τη λυχνία LED
  καθυστέρηση (1000); // παύση 1 δευτ

  analogWrite (ledPin, 191), // φωτεινότητα στα 3/4 (191/255 ~ = 0.75)
  καθυστέρηση (1000); // παύση 1 δευτ
  digitalWrite (ledPin, LOW), // απενεργοποιήστε τη λυχνία LED
  καθυστέρηση (1000); // παύση 1 δευτ

  analogWrite (ledPin, 127); // μισή φωτεινότητα (127/255 ~ = 0.5)
  καθυστέρηση (1000); // παύση 1 δευτ
  digitalWrite (ledPin, LOW), // απενεργοποιήστε τη λυχνία LED
  καθυστέρηση (1000); // παύση 1 δευτ

  analogWrite (ledPin, 63), // φωτεινότητα τριμήνου (63/255 ~ = 0.25)
  καθυστέρηση (1000); // παύση 1 δευτ
  digitalWrite (ledPin, LOW), // απενεργοποιήστε τη λυχνία LED
  καθυστέρηση (1000); // παύση 1 δευτ
}}


Δοκιμάστε να αλλάξετε την τιμή PWM στην εντολή analogWrite ()για να δείτε πώς επηρεάζει τη φωτεινότητα.
Στη συνέχεια, θα μάθετε πώς να ρυθμίζετε ομαλά τη φωτεινότητα από το πλήρες στο μηδέν. Μπορείτε, φυσικά, να αντιγράψετε ένα κομμάτι κώδικα 255 φορές
analogWrite (ledPin, φωτεινότητα);
καθυστέρηση (5), // σύντομη καθυστέρηση
φωτεινότητα = φωτεινότητα + 1;

Αλλά, καταλαβαίνετε - δεν θα είναι πρακτικό. Για να γίνει αυτό, είναι καλύτερο να χρησιμοποιήσετε το βρόχο FOR που χρησιμοποιήθηκε προηγουμένως.
Το παρακάτω παράδειγμα χρησιμοποιεί δύο κύκλους, το ένα για να μειώσει τη φωτεινότητα από 255 σε 0
για (φωτεινότητα int = 0, φωτεινότητα = 0, φωτεινότητα -) {

analogWrite (ledPin, φωτεινότητα);
καθυστέρηση (5).

}}

καθυστέρηση (5) χρησιμοποιείται για να επιβραδύνει τον ρυθμό ανόδου και πτώσης της φωτεινότητας 5 * 256 = 1280 ms = 1,28 sec.)
Η πρώτη γραμμή χρησιμοποιεί "φωτεινότητα-"έτσι ώστε η τιμή φωτεινότητας να μειώνεται κατά 1, κάθε φορά που επαναλαμβάνεται ο κύκλος. Παρακαλώ σημειώστε ότι ο κύκλος θα λειτουργήσει για όσο διάστημα φωτεινότητα> = 0Αντικατάσταση του σημείου > στο σημείο >= συμπεριλάβαμε 0 στην περιοχή φωτεινότητας. Αυτό το σκίτσο διαμορφώνεται παρακάτω.
// αλλάξτε ομαλά τη φωτεινότητα

int ledPin = 9; // Η LED είναι συνδεδεμένη με αυτόν τον ακροδέκτη

άκυρη ρύθμιση () {
  pinMode (ledPin, OUTPUT), // αρχικοποίηση του pin για έξοδο
}}

void loop () {
  // αυξάνεται σταδιακά η φωτεινότητα (0 έως 255)
  για (φωτεινότητα int = 0, φωτεινότητα = 0, φωτεινότητα -) {
    analogWrite (ledPin, φωτεινότητα);
    καθυστέρηση (5).
  }}

  καθυστέρηση (1000); // περιμένετε 1 δευτ
 // μειώστε ομαλά τη φωτεινότητα (255 έως 0)
  για (φωτεινότητα int = 255, φωτεινότητα> = 0, φωτεινότητα -) {
    analogWrite (ledPin, φωτεινότητα);
    καθυστέρηση (5).
  }}

  καθυστέρηση (1000); // περιμένετε 1 δευτ
}}
}}

Αυτό δεν είναι πολύ ορατό, αλλά η ιδέα είναι σαφής.



LED RGB και Arduino

Το LED RGB είναι στην πραγματικότητα τρία LED διαφορετικών χρωμάτων σε ένα περίβλημα.



Συμπεριλαμβανομένων διαφορετικών λυχνιών LED με διαφορετική φωτεινότητα, μπορείτε να συνδυάσετε και να πάρετε διαφορετικά χρώματα. Για το Arduino, όπου ο αριθμός των διαβαθμίσεων της φωτεινότητας είναι 256, παίρνετε 256 ^ 3 = 16581375 πιθανά χρώματα. Στην πραγματικότητα, φυσικά, θα υπάρξουν λιγότερες από αυτές.
Το LED που θα χρησιμοποιήσουμε είναι η κοινή κάθοδος. Π.χ. Και τα τρία LED συνδέονται δομικά με καθόδους σε ένα τερματικό. Θα συνδέσουμε αυτόν τον ακροδέκτη με τον ακροδέκτη GND. Οι υπόλοιποι ακροδέκτες, μέσω των περιοριστικών αντιστάσεων, πρέπει να συνδέονται με τους ακροδέκτες PWM. Ο συγγραφέας χρησιμοποίησε τα συμπεράσματα 9-11.Έτσι, θα είναι δυνατό να ελέγχεται ξεχωριστά κάθε LED. Το πρώτο σκίτσο δείχνει πώς μπορείτε να ενεργοποιήσετε ξεχωριστά κάθε λυχνία LED.



// RGB LED - δοκιμή

// συνδέσεις ακίδων
int = 9;
int πράσινο = 10;
int μπλε = 11;

άκυρη ρύθμιση () {
  pinMode (κόκκινο, OUTPUT);
  pinMode (μπλε, OUTPUT);
  pinMode (πράσινο, OUTPUT);
}}

void loop () {
  // ενεργοποιήστε / απενεργοποιήστε την κόκκινη λυχνία LED
  digitalWrite (κόκκινο, ΥΨΗΛΟ);
  καθυστέρηση (500);
  ψηφιακή γραφή (κόκκινη, χαμηλή)?
  καθυστέρηση (500);
  
  // ενεργοποίηση / απενεργοποίηση της πράσινης λυχνίας LED
  ψηφιακή καταγραφή (πράσινη, υψηλή);
  καθυστέρηση (500);
  ψηφιακή γραφή (πράσινη, χαμηλή)?
  καθυστέρηση (500);

  // ενεργοποιήστε / απενεργοποιήστε το μπλε LED
  ψηφιακή γραφή (μπλε, υψηλή);
  καθυστέρηση (500);
  ψηφιακήWrite (μπλε, χαμηλή);
  καθυστέρηση (500);
}}


Το παρακάτω παράδειγμα χρησιμοποιεί τις εντολές analogWrite () και να λάβετε διάφορες τυχαίες τιμές φωτεινότητας για τα LED. Θα δείτε διαφορετικά χρώματα να αλλάζουν τυχαία.
// LED RGB - τυχαία χρώματα

// συνδέσεις ακίδων
int = 9;
int πράσινο = 10;
int μπλε = 11;
άκυρη ρύθμιση () {
  pinMode (κόκκινο, OUTPUT);
  pinMode (μπλε, OUTPUT);
  pinMode (πράσινο, OUTPUT);
}}
void loop () {
  // επιλέξτε ένα τυχαίο χρώμα
  analogWrite (κόκκινο, τυχαίο (256));
  analogWrite (μπλε, τυχαία (256));
  analogWrite (πράσινο, τυχαίο (256));
  καθυστέρηση (1000); // περιμένετε ένα δευτερόλεπτο
}}


Τυχαία (256)- Επαναφέρει έναν τυχαίο αριθμό στην περιοχή από 0 έως 255.
Υπάρχει ένα σκίτσο στο συνημμένο αρχείο, το οποίο θα δείξει ομαλές μεταβάσεις των χρωμάτων από κόκκινο σε πράσινο, κατόπιν σε μπλε, κόκκινο, πράσινο, κλπ. transitions.zip [373 b] (λήψεις: 386)
Ένα παράδειγμα σκίτσο λειτουργεί, αλλά υπάρχει πολύ διπλός κώδικας. Μπορείτε να απλοποιήσετε τον κώδικα γράφοντας τη δική σας λειτουργία βοήθειας, η οποία θα αλλάξει ομαλά ένα χρώμα σε άλλο.
Ακολουθεί το εξής παράδειγμα: function.zip [263 β] (λήψεις: 420)
Ας δούμε τον ορισμό μιας συνάρτησης σε μέρη. Λειτουργία που ονομάζεται fader και έχει δύο επιχειρήματα. Κάθε όρισμα χωρίζεται με κόμμα και έχει έναν τύπο που δηλώνεται στην πρώτη γραμμή του ορισμού της λειτουργίας: κενός συγχρονισμός (int color1, int color2). Βλέπετε ότι και τα δύο επιχειρήματα είναι δηλωμένα ως int, και ονομάζονται ονόματα color1 και color2 ως μεταβλητές υπό όρους για τον καθορισμό μιας συνάρτησης. Άκυρο σημαίνει ότι η συνάρτηση δεν επαναφέρει καμία τιμή, απλά εκτελεί εντολές. Εάν ήταν απαραίτητο να γράψουμε μια συνάρτηση που επέστρεψε το αποτέλεσμα του πολλαπλασιασμού, θα φαινόταν έτσι:
int πολλαπλασιαστής (int αριθμός1, int αριθμός2) {

int προϊόν = αριθμός1 * αριθμός2;
προϊόν επιστροφής;

}} 

Παρατηρήστε πώς δηλώσαμε τον Τύπο int ως τύπος επιστροφής αντί
κενό.
Μέσα στη λειτουργία υπάρχουν εντολές που έχετε ήδη χρησιμοποιήσει στο προηγούμενο σκίτσο, αλλά μόνο οι αριθμοί pin έχουν αντικατασταθεί από color1 και color2. Λειτουργία που ονομάζεται fader, τα επιχειρήματά της υπολογίζονται ως color1 = κόκκινο και color2 = πράσινο. Το πλήρες σκίτσο αρχειοθέτησης χρησιμοποιώντας λειτουργίες functions.zip [392 β] (λήψεις: 320)

Κουμπί

Στο επόμενο σκίτσο, θα χρησιμοποιηθεί ένα κουμπί με κανονικά ανοιχτές επαφές, χωρίς να στερεωθεί.

Arduino για αρχάριους

Αυτό σημαίνει ότι ενώ το κουμπί δεν πιέζεται, το ρεύμα δεν ρέει μέσα από αυτό, και μετά την απελευθέρωση, το κουμπί επιστρέφει στην αρχική του θέση.
Στο κύκλωμα, εκτός από το κουμπί, χρησιμοποιείται αντίσταση. Σε αυτή την περίπτωση, δεν περιορίζει το ρεύμα, αλλά "τραβά" το κουμπί στο 0v (GND). Π.χ. μέχρις ότου πατηθεί το κουμπί στον πείρο του Arduino με το οποίο είναι συνδεδεμένο, το επίπεδο θα είναι χαμηλό. Η αντίσταση που χρησιμοποιείται στο κύκλωμα 10 kΩ.

// ορίστε το κλικ στο κουμπί
int κουμπίPin = 7;
άκυρη ρύθμιση () {
  pinMode (buttonPin, INPUT), // αρχικοποιήστε τον ακροδέκτη εισόδου
  Serial.begin (9600); // αρχικοποιήστε τη σειριακή θύρα
}}
void loop () {
  αν (digitalRead (buttonPin) == HIGH) {// αν πιέσετε το κουμπί
    Serial.println ("πατημένο"); // print "πατημένο"
  } else {
    Serial.println ("μη συμπιεσμένο"), // διαφορετικά "μη συμπιεσμένο"
  }}
}}

Υπάρχουν πολλές νέες ομάδες σε αυτό το σκίτσο.
-Αυτή η εντολή παίρνει την τιμή Υψηλή (υψηλή στάθμη) και χαμηλή (χαμηλή στάθμη) της εξόδου που ελέγξουμε. Προηγουμένως, στο setup (), αυτή η έξοδος πρέπει να ρυθμιστεί για είσοδο.
. // where buttonPin είναι ο αριθμός pin που συνδέεται με το κουμπί.
Η σειριακή θύρα σάς επιτρέπει να στέλνετε μηνύματα Arduino στον υπολογιστή, ενώ ο ίδιος ο ελεγκτής εκτελεί το πρόγραμμα. Αυτό είναι χρήσιμο για την αποσφαλμάτωση ενός προγράμματος, την αποστολή μηνυμάτων σε άλλες συσκευές ή εφαρμογές. Για να ενεργοποιήσετε τη μεταφορά δεδομένων μέσω της σειριακής θύρας (επίσης γνωστή ως UART ή USART), πρέπει να την αρχικοποιήσετε στο setup ()

Serial.begin () έχει μόνο ένα επιχείρημα είναι ο ρυθμός μεταφοράς δεδομένων μεταξύ του Arduino και του υπολογιστή.
σκίτσο, μια εντολή χρησιμοποιείται για την εμφάνιση ενός μηνύματος στην οθόνη στο IDE του Arduino (Εργαλεία >> Σειριακή Παρακολούθηση).
- ο σχεδιασμός σας επιτρέπει να ελέγχετε την πρόοδο του προγράμματος συνδυάζοντας αρκετούς ελέγχους σε ένα μέρος.
Εάν (εάν) η ψηφιακή ανάγνωση επιστρέφει HIGH, τότε στην οθόνη εμφανίζεται η λέξη "πατημένο". Αλλιώς (διαφορετικά) η ένδειξη "συμπιέζεται" εμφανίζεται στην οθόνη. Τώρα μπορείτε να δοκιμάσετε να ενεργοποιήσετε και να απενεργοποιήσετε τη λυχνία LED με το πάτημα ενός κουμπιού.
// κουμπί ανίχνευσης πιέσεως με έξοδο LED
int κουμπίPin = 7;
int ledPin = 8;
άκυρη ρύθμιση () {
  pinMode (buttonPin, INPUT); // αυτή τη φορά θα θέσουμε το pin pin ως INPUT
  pinMode (ledPin, OUTPUT).
  Serial.begin (9600);
}}
void loop () {
  εάν (digitalRead (buttonPin) == HIGH) {
    ψηφιακήWrite (ledPin, HIGH);
    Serial.println ("πατημένο");
  } else {
    ψηφιακήWrite (ledPin, LOW);
    Serial.println ("μη συμπιεσμένο");
  }}
}}


Αναλογική είσοδος.

analogRead σας επιτρέπει να διαβάζετε δεδομένα από έναν από τους ακροδέκτες του Arduino και να εμφανίζει μια τιμή στην περιοχή από 0 (0V) έως 1023 (5V). Εάν η τάση στην αναλογική είσοδο είναι 2.5V, τότε θα εκτυπωθεί το 2.5 / 5 * 1023 = 512
analogRead έχει μόνο ένα επιχείρημα- Αυτός είναι ο αριθμός αναλογικής εισόδου (A0-A5). Το παρακάτω σκίτσο παρέχει έναν κωδικό για την ανάγνωση τάσης από ένα ποτενσιόμετρο. Για να το κάνετε αυτό, συνδέστε μια μεταβλητή αντίσταση, τις ακραίες ακίδες στις ακίδες 5V και GND, και τη μεσαία ακίδα για είσοδο A0.


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

int potPin = A0, // η κεντρική έξοδος του ποτενσιόμετρου συνδέεται με αυτόν τον ακροδέκτη

άκυρη ρύθμιση () {
  // ο αναλογικός ακροδέκτης είναι ενεργοποιημένος από την προεπιλογή, έτσι δεν είναι απαραίτητη η προετοιμασία
  Serial.begin (9600);
}}

void loop () {
  int potVal = αναλογικήRead (potPin); // potVal είναι ένας αριθμός μεταξύ 0 και 1023
  Serial.println (potVal);
}}

Το επόμενο σκίτσο συνδυάζει μια σκίτσα κλικ με κουμπί και μια σκίτσο ελέγχου φωτεινότητας LED. Η λυχνία LED θα ανάψει από το κουμπί και το ποτενσιόμετρο θα ελέγξει τη φωτεινότητα της λάμψης.
// κουμπί ανίχνευσης πιέσεως με έξοδο LED και μεταβλητή ένταση
int κουμπίPin = 7;
int ledPin = 9;
int potPin = A0.
άκυρη ρύθμιση () {
  pinMode (κουμπίPIN, INPUT);
  pinMode (ledPin, OUTPUT).
  Serial.begin (9600);
}}
void loop () {
  εάν (digitalRead (buttonPin) == HIGH) {// αν πατηθεί το κουμπί
    int αναλογικόVal = αναλογικόΔιαβάστε (potPin);
    int scaledVal = χάρτης (analogVal, 0, 1023, 0, 255).
    analogWrite (ledPin, scaledVal); // ενεργοποιήστε το led με ένταση που ρυθμίζεται από το δοχείο
    Serial.println ("πατημένο");
  } else {
    digitalWrite (ledPin, LOW), // απενεργοποίηση αν δεν πατηθεί το κουμπί
    Serial.println ("μη συμπιεσμένο");
  }}
}}
8.7
9
9

Προσθέστε ένα σχόλιο

    • χαμόγελοχαμογελάειxaxaΕντάξειdontknowyahoonea
      αφεντικόξυστάανόητοςναιναι-ναιεπιθετικήμυστικό
      Συγγνώμηχορόςdance2dance3συγχώρησηβοήθειαποτά
      σταματήστεφίλουςκαλόgoodgoodσφυρίχτρασυρρέουνγλώσσα
      καπνόςπαλαμάκιαcrayδηλώστεαπογοητευτικήdon-t_mentionκατεβάστε
      θερμότηταςirefulγέλιο1mdaσυνάντησηmoskingαρνητική
      not_iποπ κορντιμωρίαδιαβάστετρομάξτεφοβίζειαναζήτηση
      χλευάζωthank_youαυτόto_clueumnikοξείασυμφωνώ
      κακόbeeeblack_eyeblum3ρουζκαυχηθείτεπλήξη
      λογοκρισίαευχαρίστησηsecret2απειλήσουννίκηyusun_bespectacled
      shokrespektlolπροβλέπουνκαλωσορίστεkrutoyya_za
      ya_dobryiβοηθόςne_huliganne_othodifludαπαγόρευσηκοντά
4 σχόλιο
Αυτός είναι ο τρόπος με τον οποίο λειτουργεί όπως θα έπρεπε - // να αυξήσει σταδιακά τη φωτεινότητα (0 έως 255)
για (φωτεινότητα int = 0, φωτεινότητα <= 255, φωτεινότητα ++) {
analogWrite (ledPin, φωτεινότητα);
καθυστέρηση (5).
κατά τη σύνταξη δίνει ένα σφάλμα Arduino: 1.6.5 (Windows 7), Διοικητικό Συμβούλιο "Arduino Nano, ATmega328"

sketch_sep20a: 25: σφάλμα: αναμενόμενη δήλωση πριν το '}' διακριτικό
αναμενόμενη δήλωση πριν το '}'
Αντιγράψαμε το σκίτσο ομαλής ανάφλεξης.
Το LED μου ανάβει απότομα, αλλά σβήνει ομαλά.

Εξηγήστε παρακαλώ.
Αντιγράψαμε το σκίτσο ομαλής ανάφλεξης.
Το LED μου ανάβει απότομα, αλλά σβήνει ομαλά.

Εξηγήστε παρακαλώ.

Σας συμβουλεύουμε να διαβάσετε:

Κάντε το για το smartphone ...