İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Arduino ve esp8266 ile i2c pcf8591 IC'yi kullanmak için kitaplık.
Bu IC (4'e kadar) analog girişi ve/veya voltaj ölçmek, termistör değerini okumak veya bir led'i söndürmek gibi 1 analog çıkışı kontrol edebilir.
Sadece 2 kablo ile analog değeri okuyabilir ve analog değeri yazabilir (ESP-01 için mükemmel).
Minimum işlem seti ile bu IC'nin kullanımını basitleştirmeye çalışıyorum.
Güncellenmiş sürümü sitemde bulabilirsiniz
Adım 1: I2c Nasıl Çalışır?
I2C, SDA(veri hattı) ve SCL(saat hattı) olmak üzere iki kablosuyla çalışır.
Bu hatların her ikisi de açık drenajdır, ancak dirençlerle çekilir.
Genellikle hatta bir master ve bir veya daha fazla slave bulunur, ancak birden fazla master olabilir, ancak bunu daha sonra konuşacağız.
Hem master hem de slave'ler veri iletebilir veya alabilir, bu nedenle bir cihaz şu dört durumdan birinde olabilir: ana iletim, ana alma, bağımlı iletim, köle alma.
Adım 2:
Kütüphaneme buradan ulaşabilirsiniz.
İndirmek.
Sağ üst köşedeki İNDİRMELER düğmesine tıklayın, sıkıştırılmamış PCF8591 klasörünü yeniden adlandırın.
PCF8591 klasörünün PCF8591.cpp ve PCF8591.h içerdiğini kontrol edin.
PCF8591 kitaplık klasörünü /libraries/ klasörünüze yerleştirin.
İlk kitaplığınızsa, kitaplıklar alt klasörünü oluşturmanız gerekebilir.
IDE'yi yeniden başlatın.
3. Adım: Kullanım
Yapıcı: i2c adresini girmelisiniz (adresi kontrol etmek için bu kılavuzu I2cScanner kullanın)
PCF8591(uint8_t adresi);
esp8266 için SDA e SCL pinini belirtmek istiyorsanız şunu kullanın:
PCF8591(uint8_t adresi, uint8_t sda, uint8_t scl);
Adım 4: Değeri Okuyun
IC resimde gördüğünüz gibi 4 analog giriş ve 1 analog çıkışa sahiptir.
Tüm analog girişleri tek bir aktarımda okumak için şunları yapabilirsiniz (değer 0 ile 255 arasındadır):
PCF8591::AnalogInput ai = pcf8591.analogReadAll();
Serial.print(ai.ain0); Seri.print(" - "); Serial.print(ai.ain1); Seri.print(" - "); Seri.print(ai.ain2); Seri.print(" - "); Serial.println(ai.ain3);
tek bir analog giriş veya kanal okumak istiyorsanız:
int ana = pcf8591.analogRead(AIN0); // analog 0 oku
Adım 5: Kanaldan Vale Okuyun
Bu IC'nin birden fazla okuma türü vardır ve Analog giriş veya analog kanal kullanabilirsiniz (tek okuma analog girişi kullandığınızda ve kanal resimlerdedir).
Örneğin İki diferansiyel girişte kanal 0 değerini okumak için yapmanız gerekenler:
int ana = pcf8591.analogRead(CHANNEL0, TWO_DIFFERENTIAL_INPUT); // analog 0 oku
Adım 6: Değer Yaz
Analog bir değer yazmak istiyorsanız yapmanız gerekenler (değer 0 ile 255 arasındadır):
pcf8591.analogWrite(128);
7. Adım: Ek Özellikler
Ek özellik, bir yazma voltajını okumaktır: Voltaj hesaplaması için bazı parametreleri geçmelisiniz:
- microcontrollerReferenceVoltage: mikrodenetleyici voltajından voltaj alın (esp 3.3v için yalnızca AVR yok esp8266 sabit)
- referansVoltage: mikrodenetleyiciReferenceVoltage false ise bu değeri alKomut şunlardır:
void voltajıWrite(float değeri, bool mikrodenetleyiciReferenceVoltage = true, float referansVoltage = 5.0);
float voltajıRead(uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referansVoltage = 5.0);
Bir örnek:
pcf8591.voltageWrite(2.7); // 2.7Volt çıkış
gecikme(3000);
float ana0V = pcf8591.voltageRead(AIN0); // Analog 0'dan voltajı oku
Seri.println(ana0V);
Adım 8: Örnek Bağlantı Şeması
9. Adım: Teşekkürler
i2c proje serisi (Koleksiyon):
- Sıcaklık nem sensörü
- Analog genişletici
- Dijital genişletici
- LCD ekran