Το photoresistor (ή φωτοαντίσταση) είναι μία αντίσταση της οποίας η αντίσταση αλλάζει με το φως που πέφτει πάνω της. Μπορούμε λιπών να αξιοποιήσουμε αυτήν την ιδιότητα και να φτιάξουμε έναν ανιχνευτή φωτός. Στο παράδειγμα μας θα φτιάξουμε έναν ανιχνευτή φωτός που θα ανάβει το LED όταν η ένταση του φωτός πέσει κάτω από ένα όριο.
Υλικά που θα χρειαστούμε
Το Arduino UNO, breadboard, καλώδια, photoresistor, αντίσταση 10Κ
To κύκλωμα μας
Η πηγή τροφοδοσίας στο κύκλωμα είναι το ίδιο το Arduino. Το ένα ποδαράκι της φωτοαντίστασης είναι συνδεδεμένο στη γείωση και το άλλο είναι συνδεδεμένο στον ADC της πλακέτας (στο παράδειγμά μας, A0). Μια αντίσταση 10 kOhm είναι επίσης συνδεδεμένη σε αυτό το ποδαράκι όπως φαίνεται στο παρακάτω σχέδιο.
Το pin 10 του Arduino πάει στον θετικό πόλο του led (άνοδος) το άλλο ποδαράκι του led (κάθοδος) είναι συνδεδεμένο με μία αντίσταση 220Ωμ που καταλήγει στην γείωση ώστε να κλείσει το κύκλωμα μας.
Γράφουμε τον κώδικα
#define PIN_LED 13 // Το LED είναι συνδεδεμένο στην ψηφιακή θύρα 13
#define PIN_PHOTO_SENSOR A0 // Ο φωτοαισθητήρας είναι συνδεδεμένος στην αναλογική θύρα A0
void setup()
{ // Έναρξη της σειριακής επικοινωνίας στα 9600 bps για παρακολούθηση τιμών στο Serial Monitor
Serial.begin(9600);
// Ορισμός της θύρας του LED ως εξόδου (OUTPUT)
pinMode(PIN_LED, OUTPUT);
}
void loop() { // Ανάγνωση της αναλογικής τιμής από τον αισθητήρα (επιστρέφει τιμές από 0 έως 1023)
int val = analogRead(PIN_PHOTO_SENSOR);
// Εκτύπωση της τιμής στην οθόνη του υπολογιστή
Serial.println(val);
// Έλεγχος της φωτεινότητας:
// Αν η τιμή είναι μικρότερη από 300 (δηλαδή έχει αρκετό φως), σβήσε το LED
if (val < 300) {
digitalWrite(PIN_LED, LOW);
}
// Αν η τιμή είναι 300 ή μεγαλύτερη (δηλαδή έχει σκοτάδι), άναψε το LED
else {
digitalWrite(PIN_LED, HIGH);
}
}
Μερικές παρατηρήσεις:
- Κατώφλι (Threshold): Η τιμή 300 που έχουμε βάλει είναι το “σημείο ενεργοποίησης”. Αν δεις ότι το LED ανάβει πολύ εύκολα ή καθυστερεί να ανάψει, μπορείς να αλλάξεις αυτόν τον αριθμό παρακολουθώντας τις τιμές στο Serial Monitor.
- Αντίστροφη Λογική: Ανάλογα με το πώς έχεις συνδέσει τον φωτοαισθητήρα (pull-up ή pull-down συνδεσμολογία), οι τιμές μπορεί να αυξάνονται ή να μειώνονται όταν πέφτει φως. Αν το LED δουλεύει ανάποδα από ό,τι θέλεις, απλώς άλλαξε το LOW με το HIGH μέσα στο if.
Μπορούμε επίσης αντί για το LED μέσω ενός relay module κατάλληλο για Arduino UNO να βάλουμε ποιο ισχυρό φωτιστικό και φυσικά με εξωτερική τροφοδοσία.
