نمایش نتایج: از 1 به 7 از 7

موضوع: I2c in esp8266

  1. #1
    Junior Member
    تاریخ عضویت
    Sep 2017
    نوشته ها
    7

    I2c in esp8266

    سلام
    وقت همگی بخیر
    ببخشید می خواستم ببینم چه طور می تونم یه سنسور که پروتکل ارتباطی ش i2c رو به esp8266 متصل کنم؟
    ممنون

  2. #2
    Senior Member
    تاریخ عضویت
    Feb 2017
    نوشته ها
    153
    نقل قول نوشته اصلی توسط bravehamid نمایش پست ها
    سلام
    وقت همگی بخیر
    ببخشید می خواستم ببینم چه طور می تونم یه سنسور که پروتکل ارتباطی ش i2c رو به esp8266 متصل کنم؟
    ممنون
    سنسور چی هست ؟ میتونید کتابخونه wire رو در برنامه اینکلود کنید و با سنسور ارتباط برقرار کنید . برای نمونه کدها میتونید تو گوگل سرچ کنید . داکیومنت هم از لینک زیر قابل مشاهده هستش :
    Libraries
    ویرایش توسط Ahmad110 : 10-19-2017 در ساعت 09:26 AM

  3. #3
    Junior Member
    تاریخ عضویت
    Sep 2017
    نوشته ها
    7
    سنسور من حرارتیه
    و کد من اینه

    //for i2c
    #include <Wire.h>
    #include <WireExt.h>
    //for eeprom
    #include <EEPROM.h>

    //for d6t
    #define D6T_addr 0x0A
    #define D6T_cmd 0x4C

    //Condition variables

    #define bet 1024
    #define con 1

    //variable

    int rbuf[35];
    float tdata[16];
    boolean first = true;
    boolean secend = true;
    float a[16];
    float b[16];
    float d[16];
    float c[48] ;
    float e;
    float n;
    float s;
    float t_PTAT;

    void setup()
    {
    Wire.setClockStretchLimit(1500);
    Wire.begin(4, 5);
    Serial.begin(115200);
    pinMode(12, OUTPUT);
    pinMode(13, OUTPUT);
    }

    void loop()
    {
    int i;
    int j;
    //Calculate the temperature
    Wire.beginTransmission(D6T_addr);
    Wire.write(D6T_cmd);
    Wire.endTransmission();
    // if (WireExt.beginReception(D6T_addr) >= 0)
    {
    i = 0;
    for (i = 0; i < 35; i++) {
    // rbuf[i] = WireExt.get_byte();
    }
    // WireExt.endReception();
    t_PTAT = (rbuf[0] + (rbuf[1] << 8)) * 0.1;
    for (i = 0; i < 16; i++) {
    tdata[i] = (rbuf[(i * 2 + 2)] + (rbuf[(i * 2 + 3)] << 8)) * 0.1;
    }
    }
    //Calculation of reference temperature
    if (first)
    {
    for (j = 0; j < bet; j++)
    {
    for (i = 0; i < 16; i++)
    {
    b[i] += tdata[i];
    }
    }
    for (i = 0; i < 16; i++)
    {
    b[i] = (b[i]) / bet;
    EEPROM.put(i * 5, b[i] );
    }
    first = false;
    }

    //Calculate the reference condition

    if (secend)
    {
    for (i = 0; i < 16; i++)
    {
    EEPROM.get(i * 5, d[i]);
    c[(i * 3) + 1] = d[i];
    }
    secend = false;
    }
    for (i = 0; i < 16; i++)
    {
    s = abs( tdata[i] - c[(i * 3) + 1]);
    c[(i * 3)] = tdata[i];
    c[(i * 3) + 2] = s;
    }
    while (c[2] > con || c[5] > con || c[8] > con || c[11] > con || c[14] > con || c[17] > con || c[20] > con || c[23] > con || c[26] > con || c[29] > con || c[32] > con || c[35] > con || c[38] > con || c[41] > con || c[44] > con || c[47] > con)
    {
    digitalWrite(12, LOW);
    digitalWrite(13, HIGH);
    for (i = 0; i < 16; i++)
    {
    s = abs( tdata[i] - c[(i * 3) + 1]);
    c[(i * 3)] = tdata[i];
    c[(i * 3) + 2] = s;
    }
    if (c[2] < con && c[5] < con && c[8] < con && c[11] < con && c[14] < con && c[17] < con && c[20] < con && c[23] < con && c[26] < con && c[29] < con && c[32] < con && c[35] < con && c[38] < con && c[41] < con && c[44] < con && c[47] < con)
    {
    break;
    }
    }


    digitalWrite(12, HIGH);
    digitalWrite(13, LOW);

    }

  4. #4
    Junior Member
    تاریخ عضویت
    Sep 2017
    نوشته ها
    7
    error برنامه من ناشی از wireext است؟
    راهی به ذهنتون میزنه

  5. #5
    Senior Member
    تاریخ عضویت
    Feb 2017
    نوشته ها
    153
    نقل قول نوشته اصلی توسط bravehamid نمایش پست ها
    error برنامه من ناشی از wireext است؟
    راهی به ذهنتون میزنه
    متن ارور رو اگه میشه بصورت کامل قرار بدید .

  6. #6
    Junior Member
    تاریخ عضویت
    Sep 2017
    نوشته ها
    7
    C: \ Users \ Hamidreza \ Documents \ Arduino \ libraries \ WireExt \ WireExt.cpp: 24: 22: fatal error: avr / io.h: No such file or directory

    #include <avr / io.h>

  7. #7
    Senior Member
    تاریخ عضویت
    Feb 2017
    نوشته ها
    153
    avc/io.h بخشی از کتابخانه Libc هستش و در هسته آردوینو قرار نداره . بهتره از کتابخونه دیگه ای استفاده کنید یا کدها رو با توجه به دیتاشیت ماژول به صورت مستقیم با IIC فراخوانی یا ارسال کنید .

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO