Hirdetés

Új hozzászólás Aktív témák

  • Tomika86

    senior tag

    válasz And #16144 üzenetére

    Szia!

    Ez így jó lehet?
    #include <Wire.h>

    #define Addr 0x48 // ADS7828 Address byte: Hex: 0x48 Bin: 10010000
    // 10010 A1 A0 R /W
    void setup()
    {
    Wire.begin(); // I2C kommunikáció inicializálása MASTER-ként
    Serial.begin(9600); // Soros kommunikáció inicializálása, baud rate beállítása = 9600
    delay(300);
    }

    void loop()
    {
    int kiolvasott = ADS7828_olvasas (Addr, 0x0C); // Hex: 0x0C Bin: 0000 1100 SD, C2, C1, C0, PD1, PD0, x, x
    // 0: Single-End, 000: Ch0, 11: Int ref és AD bekapcsolva
    Serial.print("Ch0 értéke : ");
    Serial.println(kiolvasott); // Nyers analóg érték kiiratása soros monitorra
    }


    int ADS7828_olvasas (int Addr_byte, byte Cmd_byte) {
    byte data[2];
    Wire.beginTransmission(Addr_byte); // I2C átvitel indítása, az adott címen
    Wire.write(Cmd_byte); // Command byte küldése
    Wire.endTransmission(); // I2C átvitel megállítása
    Wire.requestFrom(Addr_byte, 2); // 2 byte adatra várakozás
    // 2 byte adat olvasása
    if (Wire.available() == 2) // Ha megérkezett a 2byte
    {
    data[0] = Wire.read(); // Első byte tömbbe írása
    data[1] = Wire.read(); // Második byte tömbbe írása
    int adc = ((data[0] & 0x0F) * 256) + data[1]; // Adat konvertálás 12bit-re
    return adc;
    }
    }

    A 0x0C módosításával lenne kiválasztva a csatorna száma

Új hozzászólás Aktív témák