Μαθήματα Πληροφορικής & Προγραμματισμού

Συναρτήσεις διαχείρισης Υλικού Arduino C

Συναρτήσεις Arduino

 

Συναρτήσεις διαχείρισης θυρών εισόδου – εξόδου (Pins)

Όπως αναφέρθηκε, η κύρια λειτουργία του μικροελεγκτή βασίζεται στο να ελέγχει τις θύρες που διαθέτει και είτε να δίνει ρεύμα είτε να παίρνει ρεύμα από αυτές. Στην αρχικοποίηση κάθε προγράμματος (μέσα στη συνάρτηση setup) θα χρειαστεί να χαρακτηρίσουμε τα Pins που χρησιμοποιούμε ως είσοδο ή ως έξοδο. Η συνάρτηση pinMode(Pin, Mode) χρησιμοποιείται με το όνομά της και ορίσματα α) τον αριθμό Pin και β) την κατάσταση λειτουργίας που χαρακτηρίζεται με τη λέξη INPUT (είσοδος) ή OUTPUT (έξοδος). Όπως έχουμε αναφέρει έχουμε 14 ψηφιακά Pins, 6 εκ των οποίων είναι PWM, με ονόματα 0..13 και έξι αναλογικά με ονόματα Α0..Α5. Για παράδειγμα:

 
pinMode(12, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(Α2, INPUT);

Συναρτήσεις εισόδου – εξόδου ρεύματος

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

Ψηφιακή έξοδος

Και τα 14 pins του Arduino μπορούν δουλεύουν ως ψηφιακές έξοδοι, δηλαδή δίνουν έξοδο 0 ή 5V. Αυτό γίνεται με χρήση της συνάρτησης digitalWrite(Pin, Value), όπου το όρισμα Pin αναφέρεται στο νούμερο της θύρας για την οποία θα δώσουμε τάση εξόδου, ενώ η τάση εξόδου μπορεί να είναι 0 V ή 5 V, οι οποίες αναπαρίστανται με προκαθορισμένες τιμές στην παράμετρο

  • LOW : θα δώσει 0 V στην έξοδο (pin)
  • HIGH : θα δώσει 5 V στην έξοδο (pin)

Για παράδειγμα:

 
digitalWrite(ledPin, HIGH);

Ψηφιακή είσοδος

Και τα 14 ψηφιακά pins του Arduino μπορούν δουλεύουν ως ψηφιακές είσοδοι, δηλαδή να “διαβάσουν” ως είσοδο τάση με τιμή είτε 0 είτε 5V. Αυτό γίνεται με χρήση της συνάρτησης digitalRead(Pin), όπου το όρισμα Pin αναφέρεται στο νούμερο της θύρας για την οποία θα πάρουμε είσοδο, ενώ η συνάρτηση επιστρέφει με το όνομά της την τιμή εισόδου. H τάση εισόδου μπορεί να είναι 0V ή 5V, οι οποίες αναπαρίστανται με προκαθορισμένες τιμές στην τιμή που διαβάζουμε:

  • LOW : όταν λάβει τάση 0 V στην είσοδο (pin)
  • HIGH : όταν λάβει τάση 5 V στην είσοδο (pin)

Για παράδειγμα:

 
Val = digitalRead(ledPin);

Αναλογική έξοδος (PWM pins)

Κάποια από τα 14 Pins του Arduino έχουν την ένδειξη PWM, δηλαδή μπορούν να προσομοιώσουν την αναλογική έξοδο μέσω παλμοκωδικής διαμόρφωσης. Έτσι, με τιμές από το 0 μέχρι το 255 προσομοιώνουμε (αναλογικά) το διάστημα από 0 έως 5V. Αυτό γίνεται με χρήση της συνάρτησης analogWrite(Pin, Value), όπου το όρισμα Pin αναφέρεται στο νούμερο της θύρας για την οποία θα δώσουμε ρεύμα εξόδου, ενώ η τάση εξόδου κυμαίνεται από 0 V μέχρι και 5 V, οι οποίες τιμές της τάσης αναλογικά αναπαρίστανται με τιμές στη μεταβλητή value. Τιμή 0 δίνει 0V στην έξοδο (pin), τιμή 255 δίνει τάση 5V στην έξοδο (pin), ενώ αναλογικά μπορούμε να δώσουμε ενδιάμεσες τάσεις (π.χ. 122 για τάση 2,5V).
Για παράδειγμα:

 
analogWrite(ledPin, 122);

Υπενθύμιση: Τη λειτουργία αυτή μπορούν να υποστηρίξουν μόνο τα PWM pins κι όχι όλα τα ψηφιακά. Τα PWM pins είναι τα 3, 5, 6, 9, 10, 11.

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

To Arduino έχει 6 αναλογικές εισόδους, οι οποίες χαρακτηρίζονται με τα σύμβολα A0, A1, A2, A3, A4, A5. Μπορούμε να συνδέσουμε κάποιο αναλογικό εξάρτημα (π.χ. ένα ποτενσιόμετρο) και να το διαβάσουμε ως είσοδο. Αυτό γίνεται με χρήση της συνάρτησης analogRead(Pin), όπου το όρισμα Pin αναφέρεται στο νούμερο της θύρας για την οποία θα πάρουμε είσοδο, ενώ η συνάρτηση επιστρέφει με το όνομά της την τιμή εισόδου. Η τιμή εισόδου κυμαίνεται από 0 μέχρι και 1023. Συνήθως χρησιμοποιούμε μια μεταβλητή για να καταχωρήσουμε την τιμή.
Για παράδειγμα:

 
int r = analogRead(A1);

Η σειριακή θύρα επικοινωνίας (Serial)

To Arduino παρέχει μια σειριακή θύρα επικοινωνίας μεταξύ της πλακέτας και του υπολογιστή ή κάποιας συσκευής που θέλουμε. Για το σκοπό αυτό χρησιμοποιείται η σύνδεση με καλώδιο USB (όταν πρόκειται για τον υπολογιστή) ή τα pins 0 και 1 όταν θέλουμε κάποια πιο εξειδικευμένη σύνδεση (π.χ. με κάποια άλλη συσκευή). Για το λόγο αυτό προτείνεται, αν δεν είναι απαραίτητο στις εφαρμογές μας, να μην χρησιμοποιούνται τα pins αυτά. Για να ενεργοποιήσουμε τη σειριακή θύρα επικοινωνίας αρκεί να δώσουμε στη διαδικασία setup() την εντολή Serial.begin(BaudRate), όπου το BaudRate εκφράζει το ρυθμό με τον οποίο θα μεταδίδονται τα bits (μια τιμή στα 9600 είναι συνήθως αρκετή).
Για παράδειγμα:

 
Serial.begin(9600);

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

Για παράδειγμα:

 
/* Θα εμφανίσει το μήνυμα αυτό στην οθόνη χωρίς να αλλάξει γραμμή μετά */
Serial.print(“H epikoinwnia ksekinhse”); 
 
/* Θα εμφανίσει την τιμή της μεταβλητής distance σε μια γραμμή */
Serial.println(distance);

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

Αφήστε ένα Σχόλιο

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

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