Περιγραφή
Εξαρτήματα και συνδέσεις
- Arduino Uno
- RGB LED (εδώ κοινής καθόδου)
- 3 x 220Ω
- 3 x ποτενσιόμετρα
Ο αισθητήρας LM35 συνδέεται στην αναλογική είσοδο Α0 και οι τιμές της θερμοκρασίας του περιβάλλοντος εμφανίζονται στη φορητή οθόνη υγρών κρυστάλλων.
Στον κώδικα έχει χρησιμοποιηθεί η βιβλιοθήκη LiquidCrystal_I2C.h και για τις μετρήσεις του αισθητήρα LM35 έχει οριστεί η τάση αναφοράς 1,1 V, όπως αναλυτικά περιγράφεται στην ανάρτηση εδώ.
Κώδικας IDE
#include <LiquidCrystal_I2C.h>
Κώδικας IDE
Οι ακροδέκτες SCL και SDA συνδέονται στις δύο τελευταίες αναλογικές ακίδες Α5 και Α4 αντίστοιχα.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
lcd.init();
lcd.clear();
lcd.backlight(); // έλεγξε τον φωτισμό!
// Τύπωση το όνομα της ομάδας σου στην 1η γραμμή και το σχολείο σου στη 2η γραμμή
lcd.setCursor(0,0);
lcd.print("arduino.TEAM-21!");
lcd.setCursor(0,1); 1
lcd.print("1st GYMN @Koropi");
}
void loop() {
}
Ένας λαμπτήρας LED στην ακίδα 13 της πλακέτας ανάβει και σβήνει μέσω του μικροφώνου και ενός σύντομου ήχου με τα χέρια ή τη φωνή. Το module λειτουργεί ως διακόπτης ON/OFF είτε χρησιμοποιώντας μια τιμή κατωφλίου και την εντολή if στον κώδικα (software) είτε ρυθμίζοντας την ευαισθησία με το ποτενσιόμετρο (hardware). Αναλυτικότερα, για αυτές τις δύο τεχνικές:
1. Με πειραματισμό μπορούμε να βρούμε μια αποτελεσματική τιμή κατωφλίου παρακολουθώντας μεταβολές στις τιμές εξόδου πχ στη σειριακή οθόνη, όπως στο σκετς της αναλογικής λειτουργίας
2. Με την αυξομείωση της λεγόμενης ευαισθησίας, περιστρέφοντας με ένα μικρό κατσαβίδι το ποτενσιόμετρο στον μπλε αντιστάτη της πλακέτας του μικροφώνου, όπως στο σκετς της ψηφιακής λειτουργίας.
LED on pin 13 and GND
"+" to a 5V power output οn the board
G to a ground on the board
AΟ σε κάποια αναλογική ακίδα του Arduino, εδώ στην A0, ή
DO σε κάποια ψηφιακή ακίδα του Arduino, εδώ στην 2
Όταν το επίπεδο του ήχου που διαβάζει η A0 είναι μεγαλύτερο της τιμής κατωφλίου, αν η LED είναι αναμμένη, τότε σβήνει, ενώ αν η LED σβηστή, τότε ανάβει. Η τιμή κατωφλίου στο σκετς ορίζεται ως 525, αλλά επειδή εξαρτάται κάθε φορά από τις ιδιαίτερες συνθήκες, πιθανά να χρειαστεί διαφορετική τιμή.
Όταν η ψηφιακή ακίδα 2 διαβάζει 1 ή HIGH, αν η LED είναι αναμμένη, τότε σβήνει, ενώ αν η LED σβηστή, τότε ανάβει. Η ψηφιακή τιμή 1/HIGH ή 0/LOW προέρχεται από την σύγκριση της τιμής του μικροφώνου με την τιμή από το ποτενσιόμετρο στον LM393. Χρειάζεται να προηγηθεί πειραματισμός με αυξομείωση της λεγόμενης ευαισθησίας, περιστρέφοντας με ένα μικρό κατσαβίδι το ποτενσιόμετρο στον μπλε αντιστάτη της πλακέτας του μικροφώνου. Το LED2 του module ανάβει (πράσινο χρώμα) για την ψηφιακή τιμή 1/HIGH. Όταν περιστρέφω δεξιόστροφα, η τιμή από το ποτενσιόμετρο ελαττώνεται και από κάποια θέση και μετά θα δούμε το LED2 να ανάβει (1/HIGH). Έτσι, επιστρέφουμε σε μια θέση πριν το σημείο αυτό ώστε το LED2 να είναι σβηστό (0/LOW), και να ανάβει με τον σύντομο ήχο χεριών ή φωνής, αλλάζοντας το 0/LOW σε 1/HIGH.
int buttonstate;
int ledstate;
void setup() {
pinMode(13, OUTPUT);
pinMode(2, INPUT);
}
void loop(){
buttonstate = digitalRead(2);
ledstate = digitalRead(13);
if (ledstate == HIGH && buttonstate == 1) {
delay(250);
digitalWrite(13, LOW);
delay(250);
}
if (ledstate == LOW && buttonstate == 1) {
delay(250);
digitalWrite(13, HIGH);
delay(250);
}
}
Εγκατάσταση βιβλιοθήκης
Άνοιγμα Παραδείγματος
Τα εξαρτήματα συνδέονται (α) απευθείας στην πλακέτα και (β) με χρήση breadboard.
Για το έργο και την προσομοίωση στο tinkercad πατήστε στην εικόνα
Στον κώδικα χρησιμοποιούμε τη συνάρτηση map για να αντιστοιχίσουμε τις 1024 δυνατές τιμές του 10-bit μετατροπέα ADC της αναλογικής εισόδου Α0, στις 256 δυνατές τιμές της ψευδοαναλογικής εξόδου ~11.