#19 Η συνάρτηση tone() - Arduino και Ήχος (μονοτονικός)


Με το Arduino μπορούμε να αναπαράγουμε μονοτονικούς ήχους μέσα από ένα μικρό speaker ή buzzer. Η συνάρτηση tone() μας βοηθάει να το πετύχουμε αυτό στέλνοντας στο μικρό μας ηχείο έναν ήχο/τόνο με μια συγκεκριμένη συχνότητα. Ο ήχος αυτός μπορεί να είναι είτε ένα "μπιπ" (σε μια συγκεκριμένη συχνότητα π.χ. 500Ηz) που αναπαράγεται για μια χρονική στιγμή είτε μια μελωδία, μονοτονική, σαν αυτή που είχαμε στα παλιά μας ασπρόμαυρα κινητά τηλέφωνα.

Η συνάρτηση tone()

tone(pin, συχνότητα);
Κάνοντας χρήση της παραπάνω εντολής μπορούμε να στείλουμε σε ένα συγκεκριμένο pin του Arduino, στο δικό μας παράδειγμα το pin 9 όπου και έχουμε συνδέσει το ηχείο μας, ένα σήμα/τόνο το οποίο να έχει συγκεκριμένη συχνότητα.
π.χ. tone(9, 500); ή tone(buzzer, 1000); (όπου buzzer σταθερά που δείχνει το pin 9)

tone(pin, συχνότητα, διάρκεια);
Μπορούμε να προσθέσουμε και διάρκεια, δηλαδή χρόνο, στην συνάρτηση αυτή. Ο χρόνος αυτός όπως και στην delay() πρέπει να είναι σε ms. Έτσι, αν για παράδειγμα θέλουμε για δυο δευτερόλεπτα να παίζει ήχος συχνότητας 1ΚHz στο pin 9, η εντολή που θα γράψουμε είναι: tone(9, 1000, 2000);

noTone(pin);
Αν κάνουμε χρήση της tone χωρίς το όρισμα 'διάρκεια', τότε θα πρέπει με κάποιον τρόπο να σταματήσουμε τον ήχο που ακούγεται μετά από κάποιο χρονικό διάστημα, αυτό γίνεται με την χρήση της noTone().
π.χ. noTone(9); ή noTone(buzzer);

Τα υλικά που θα χρειαστούμε:

  1. Arduino uno
  2. Speaker 8Ohm ή Buzzer
  3. Αντίσταση 100Ohm
Βαθμός δυσκολίας

Το κύκλωμα μας σε breadboard


Κώδικας

Αναπαραγωγή ήχου: download
Αναπαραγωγή μελωδίας: download
Το αρχείο με τον κώδικα περιέχει σχόλια στα ελληνικά για την κατανόηση του. Για να περάσετε τον κώδικα στο Arduino θα χρειαστείτε το Arduino IDE το οποίο μπορείτε να το κατεβάσετε από εδώ.
Αναπαραγωγή ήχων σαν παλιό nokia...



Συντάκτης: Βασιλάκης Μιχάλης
Πηγή: www.ardumotive.com