Keresés

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

  • Tomika86

    senior tag

    válasz And #16149 üzenetére

    Működik
    Ha valakinek kellene majd :
    #include <Wire.h>

    #define ADS7828_ADDRESS 0x48 // ADS7828 Address byte: 0x48 0b10010000
    // 1001 0 A1 A0 R /W
    #define CH0 0x8C // Ch0: 0x8C
    #define CH1 0x9C // Ch1: 0x9C
    #define CH2 0xAC // Ch2: 0xAC
    #define CH3 0xBC // Ch3: 0xBC
    #define CH4 0xCC // Ch4: 0xCC
    #define CH5 0xDC // Ch5: 0xDC
    #define CH6 0xEC // Ch6: 0xEC
    #define CH7 0xFC // Ch7: 0xFC

    void setup()
    {
    Wire.begin(); // I2C kommunikáció inicializálása MASTER-ként
    Serial.begin(115200); // Soros kommunikáció inicializálása, baud rate beállítása = 9600
    delay(300);
    }

    void loop()
    {
    int kiolvasott = ADS7828_olvasas (ADS7828_ADDRESS, CH0); // 0x8C 0b1000 1100 SD, C2, C1, C0, PD1, PD0, x, x
    // 1: 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
    delay(5);
    int adc = ((data[0] & 0x0F) * 256) + data[1]; // Adat konvertálás 12bit-re
    return adc;
    }
    }

    Nem a legszebb, de jól működik, semmi akadás az analóg mutatóban

    Köszönöm a segítséget!

  • Tomika86

    senior tag

    válasz And #16149 üzenetére

    Ezt benéztem igen, az SD-nél 1-nek kell lennie.
    Késleltetést teszek bele, megpróbálom nagyobb értékkel és csökkentem.

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

Hirdetés