Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Arduino və esp8266 ilə i2c pcf8591 IC istifadə etmək üçün kitabxana.
Bu IC, (4 -ə qədər) analoq girişi və/və ya 1 analoq çıxışı ölçə bilər, termistor dəyərini oxuya bilər və ya bir led sönür.
Yalnız 2 tel ilə analoq dəyər oxuya və analoq dəyər yaza bilər (ESP-01 üçün idealdır).
Minimum əməliyyat dəsti ilə bu IC -nin istifadəsini asanlaşdırmağa çalışıram.
Yenilənmiş versiyanı https://www.mischianti.org/2019/01/03/pcf8591-i2c-analog-i-o-expander/ saytımda tapa bilərsiniz.
Addım 1: I2c necə işləyir
I2C iki tel ilə işləyir: SDA (məlumat xətti) və SCL (saat xətti).
Bu xətlərin hər ikisi açıq drenajdır, lakin rezistorlar ilə çəkilir.
Adətən xətdə bir usta və bir və ya birdən çox qul var, baxmayaraq ki, birdən çox usta ola bilər, amma bu barədə sonra danışacağıq.
Həm ustalar, həm də qullar məlumatları ötürə və ya ala bilərlər, buna görə də bir cihaz bu dörd vəziyyətdən birində ola bilər: usta ötürmə, usta qəbulu, kölə ötürmə, kölə qəbulu.
Addım 2:
Kitabxanamı burada tapa bilərsiniz.
Yükləmək üçün.
Sağ üst köşedeki YÜKLƏMƏ düyməsini basın, sıxılmamış qovluğun adını PCF8591 adlandırın.
PCF8591 qovluğunda PCF8591.cpp və PCF8591.h olduğunu yoxlayın.
PCF8591 kitabxana qovluğunu / libraries / qovluğunuza yerləşdirin.
İlk kitabxananız varsa, kitabxanalar alt qovluğunu yaratmağınız lazım ola bilər.
IDE -ni yenidən başladın.
Addım 3: İstifadə
Konstruktor: i2c ünvanını yazmalısınız (ünvanı yoxlamaq üçün bu təlimatdan istifadə edin I2cScanner)
PCF8591 (uint8_t ünvanı);
esp8266 üçün SDA və SCL pinini təyin etmək istəyirsinizsə bunu istifadə edin:
PCF8591 (uint8_t ünvanı, uint8_t sda, uint8_t scl);
Addım 4: Dəyəri oxuyun
Şəkildə gördüyünüz kimi IC 4 analog giriş və 1 analoq çıxışı var.
Beləliklə, bütün analoq girişləri bir trasmisyonda oxumaq üçün edə bilərsiniz (dəyər 0 ilə 255 arasındadır):
PCF8591:: AnalogInput ai = pcf8591.analogReadAll ();
Serial.print (ai.ain0); Serial.print (" -"); Serial.print (ai.ain1); Serial.print (" -"); Serial. çap (ai.ain2); Serial.print (" -"); Serial.println (ai.ain3);
bir analoq girişi və ya kanalı oxumaq istəyirsinizsə:
int ana = pcf8591.analogRead (AIN0); // analoq 0 oxuyun
Addım 5: Kanaldan Vale oxuyun
Bu IC -nin birdən çox oxunuş növü var və siz analoq girişi və ya analoq kanaldan istifadə edə bilərsiniz (bir dəfə oxuduğunuzda analog giriş və kanal şəkillərdədir).
Məsələn, 0 kanalının dəyərini iki diferensial girişdə oxumaq üçün etməlisiniz:
int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // analoq 0 oxuyun
Addım 6: Dəyər Yazın
Bir analoq dəyər yazmaq istəyirsinizsə etməlisiniz (dəyər 0 -dan 255 -ə qədərdir):
pcf8591.analogWrite (128);
Addım 7: Əlavə Xüsusiyyətlər
Əlavə xüsusiyyət yazma gərginliyini oxumaqdır: Gərginliyin hesablanması üçün bəzi parametrlərdən keçməlisiniz:
- microcontrollerReferenceVoltage: mikro nəzarətçi gərginliyindən gərginlik əldə edin (yalnız esp 3.3v üçün AVR yox esp8266)
- referenceVoltage: əgər microcontrollerReferenceVoltage false bu dəyəri götürsün Komanda:
void gərginlikWrite (float dəyəri, bool microcontrollerReferenceVoltage = doğru, float referenceVoltage = 5.0);
float gərginliyiRead (uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);
Bir nümunə budur:
pcf8591.voltageWrite (2.7); // 2.7 Volt çıxış
gecikmə (3000);
float ana0V = pcf8591.voltageRead (AIN0); // Analog 0 -dan gərginliyi oxuyun
Serial.println (ana0V);
Addım 8: Bağlantı Şemasının nümunələri
Addım 9: Təşəkkürlər
i2c layihə seriyası (Kolleksiya):
- Rütubət sensoru
- Analog genişləndirici
- Rəqəmsal genişləndirici
- LCD Ekran