Thông báo

Collapse
No announcement yet.

Cảm biến góc ADXL345 +Pic 16f877a

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cảm biến góc ADXL345 +Pic 16f877a

    Xin chào tất cả mọi người.
    Mình tham gia diễn đàn đã khá lâu rồi nhưng không có đóng góp gì cho diễn đàn, mà chôm từ diễn đàn thì khá nhiều. Mình mới giao tiếp với con ADXL345 (cảm biến góc) dùng i2c với pic 16f877a. Mà chưa thấy ai post cả, Bạn nào có hứng thú làm điều khiển xe bằng góc nghiêng, hay đo góc thì có thể dùng con này.

    #include <16F877A.h>
    #use delay(clock=20000000)
    #include <def_877A.h>
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
    #use i2c(Master, sda=PIN_C4, scl=PIN_C3)
    #fuses HS,NOPROTECT, BROWNOUT, PUT, NOLVP
    //#include <lcd_lib_4bit_use.c>
    #include <stdio.h>

    void write(int dv, byte address, byte val);
    byte read(int dv, byte address) ;

    void ini_adxl345() //cai dat ban dau cho adxl345
    {
    write(0x53,0x38,0x9f);
    write(0x53,0x31,0x00);
    write(0x53,2C,0x0d);
    delay_us(10);
    write(0x53,0x2D,0x08);

    }


    void main() {

    set_tris_e(0x00);
    set_tris_d(0x00);
    set_tris_a(0xff);
    set_tris_c(0x00);
    ini_adxl345();

    while(true) {

    int id, pow;
    id= read(0x53,0x00); //lay dia chi id adxl345 va dia chi luon la e5
    pow=read(0x53,0x2D); // lay gia tri cai dat POWER_CONTROL
    int16 x,z,y;
    //lay gia tri x,y,z
    x=(read(0x53,0x33)*256) | (read(0x53,0x32));
    y=(read(0x53,0x35)*256) | (read(0x53,0x34));
    z=(read(0x53,0x37)*256) | (read(0x53,0x36));

    printf(" x= %ld, y= %ld, z=%ld id=%x, pow=%x",x,y,z,id,pow); //hien thi len rs232
    puts(" ");
    }

    }
    //ham viet gia tri vao
    void write(int dv, byte address, byte val) {
    i2c_start();
    i2c_write(dv<<1);
    i2c_write(address);
    i2c_write(val);
    i2c_stop();
    }
    //ham doc gia tri ra
    byte read(int dv, byte address) {
    int value;
    i2c_start();
    i2c_write(dv<<1);
    i2c_write(address);
    i2c_start();
    i2c_write(dv<<1|0x01);
    value=i2c_read(0);
    i2c_stop();
    return value;
    }


    video

    ADXL345 + Pic 16f877a - YouTube

  • #2
    Cậu ơi.t muốn mua ADXL345 thì mua ở đâu vậy?c có sẵn nó ko?

    Comment

    Về tác giả

    Collapse

    iamtomriddle Tìm hiểu thêm về iamtomriddle

    Bài viết mới nhất

    Collapse

    Đang tải...
    X