Πίνακας περιεχομένων:

PCF8591 (i2c Analog I/O Expander) Γρήγορη Εύκολη Χρήση: 9 Βήματα
PCF8591 (i2c Analog I/O Expander) Γρήγορη Εύκολη Χρήση: 9 Βήματα

Βίντεο: PCF8591 (i2c Analog I/O Expander) Γρήγορη Εύκολη Χρήση: 9 Βήματα

Βίντεο: PCF8591 (i2c Analog I/O Expander) Γρήγορη Εύκολη Χρήση: 9 Βήματα
Βίντεο: Arduino analog port expander - pcf8591 with I2C protocol 2024, Νοέμβριος
Anonim
PCF8591 (i2c Analog I/O Expander) Γρήγορη εύκολη χρήση
PCF8591 (i2c Analog I/O Expander) Γρήγορη εύκολη χρήση

Βιβλιοθήκη για χρήση i2c pcf8591 IC με arduino και esp8266.

Αυτό το IC μπορεί να ελέγξει (έως 4) την αναλογική είσοδο και/ή 1 αναλογική έξοδο, όπως μετρήσει την τάση, να διαβάσει την τιμή του θερμίστορ ή να ξεθωριάσει ένα led.

Μπορεί να διαβάσει αναλογική τιμή και να γράψει αναλογική τιμή μόνο με 2 σύρματα (ιδανικό για ESP-01).

Προσπαθώ να απλοποιήσω τη χρήση αυτού του IC, με ένα ελάχιστο σύνολο λειτουργιών.

Μπορείτε να βρείτε ενημερωμένη έκδοση στον ιστότοπό μου

Βήμα 1: Πώς λειτουργεί το I2c

Πώς λειτουργεί το I2c
Πώς λειτουργεί το I2c

Το I2C λειτουργεί με δύο καλώδια, το SDA (γραμμή δεδομένων) και το SCL (γραμμή ρολογιού).

Και οι δύο αυτές γραμμές είναι ανοιχτής αποστράγγισης, αλλά ανασύρονται με αντιστάσεις.

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

Τόσο οι κύριοι όσο και οι σκλάβοι μπορούν να μεταδώσουν ή να λάβουν δεδομένα, επομένως, μια συσκευή μπορεί να βρίσκεται σε μία από αυτές τις τέσσερις καταστάσεις: κύρια μετάδοση, κύρια λήψη, εκπομπή σκλάβης, λήψη σκλάβου.

Βήμα 2:

Μπορείτε να βρείτε τη βιβλιοθήκη μου εδώ.

Για να κατεβάσετε.

Κάντε κλικ στο κουμπί DOWNLOADS στην επάνω δεξιά γωνία, μετονομάστε τον ασυμπίεστο φάκελο PCF8591.

Βεβαιωθείτε ότι ο φάκελος PCF8591 περιέχει PCF8591.cpp και PCF8591.h.

Τοποθετήστε το φάκελο της βιβλιοθήκης PCF8591 στον / βιβλιοθήκες / φάκελό σας.

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

Επανεκκινήστε το IDE.

Βήμα 3: Χρήση

Κατασκευαστής: πρέπει να συμπληρώσετε τη διεύθυνση του i2c (για να ελέγξετε τη διεύθυνση χρησιμοποιήστε αυτόν τον οδηγό I2cScanner)

PCF8591 (διεύθυνση uint8_t);

για το esp8266, αν θέλετε να καθορίσετε το SDA e SCL pin, χρησιμοποιήστε αυτό:

PCF8591 (διεύθυνση uint8_t, uint8_t sda, uint8_t scl);

Βήμα 4: Διαβάστε την τιμή

Διαβάστε την Αξία
Διαβάστε την Αξία

Το IC όπως βλέπετε στην εικόνα έχει 4 αναλογικές εισόδους και 1 αναλογικές εξόδους.

Έτσι, για να διαβάσετε όλες τις αναλογικές εισόδους σε μία μετάδοση μπορείτε να κάνετε (η τιμή είναι από 0 έως 255):

PCF8591:: AnalogInput ai = pcf8591.analogReadAll ();

Serial.print (ai.ain0); Serial.print (" -"); Serial.print (ai.ain1); Serial.print (" -"); Serial.print (ai.ain2); Serial.print (" -"); Serial.println (ai.ain3);

αν θέλετε να διαβάσετε μία μόνο αναλογική είσοδο ή κανάλι:

int ana = pcf8591.analogRead (AIN0); // διαβάστε αναλογικό 0

Βήμα 5: Διαβάστε το Vale από το κανάλι

Διαβάστε το Vale από το κανάλι
Διαβάστε το Vale από το κανάλι

Αυτό το IC έχει πολλαπλούς τύπους ανάγνωσης και μπορείτε να χρησιμοποιήσετε αναλογική είσοδο ή αναλογικό κανάλι (όταν χρησιμοποιείτε αναλογική ανάγνωση εισόδου και το κανάλι είναι στις εικόνες).

Για παράδειγμα, για να διαβάσετε την τιμή του καναλιού 0 σε δύο διαφορικές εισόδους, πρέπει να κάνετε:

int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // διαβάστε αναλογικό 0

Βήμα 6: Γράψτε αξία

Εάν θέλετε να γράψετε μια αναλογική τιμή, πρέπει να κάνετε (η τιμή είναι από 0 έως 255):

pcf8591.analogWrite (128);

Βήμα 7: Πρόσθετες δυνατότητες

Πρόσθετο χαρακτηριστικό είναι η ανάγνωση τάσης εγγραφής: Για τον υπολογισμό της τάσης πρέπει να περάσετε κάποια παράμετρο:

  • microcontrollerReferenceVoltage: λάβετε τάση από τάση μικροελεγκτή (μόνο AVR χωρίς esp8266 για esp 3.3v σταθερό)
  • referenceVoltage: if microcontrollerReferenceVoltage false λάβετε αυτήν την τιμήΗ εντολή είναι:

void voltageWrite (float value, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

float voltageRead (uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

Παραδείγματα είναι:

pcf8591.voltageWrite (2.7); // 2.7Volts έξοδος

καθυστέρηση (3000)?

float ana0V = pcf8591.voltageRead (AIN0); // Τάση ανάγνωσης από αναλογικό 0

Serial.println (ana0V);

Βήμα 8: Παραδείγματα διαγράμματος σύνδεσης

Παραδείγματα Διάγραμμα σύνδεσης
Παραδείγματα Διάγραμμα σύνδεσης

Βήμα 9: Ευχαριστώ

σειρά έργων i2c (Συλλογή):

  • Αισθητήρας υγρασίας θερμοκρασίας
  • Αναλογικός διαστολέας
  • Digitalηφιακός διαστολέας
  • Οθόνη LCD

Συνιστάται: