msp430 ve adxl345 ile 3 boyutlu ivmeölçer

Başlatan osmanakgull, 06 Mayıs 2024, 14:58:32

osmanakgull

projemde her bir ekseni belli etmek üzere 3 adet led kullanıyorum daha önce böyle bir proje yapmış birisi var ise bana yardımcı mi olabilir ya da farklı bir şekilde 3 boyutlu ivmeölçer yapan sensör farketmez ayrıca şöyle bir kod yazdım doğrulugundan emin değilim kontrol edebilir misiniz
Kod: C/C++
#include "io430.h" #include <stdint.h> #define ADXL345_ADDR    0x53 // ADXL345'nin I2C adresi #define LED1 BIT0  // Örnek olarak P1.0 #define LED2 BIT6  // Örnek olarak P1.6 #define LED3 BIT7  // Örnek olarak P2.7 void I2C_init(){     // I2C modülünü baslatma islemi     UCB0CTL1 |= UCSWRST;            // I2C modülünü sifirla     UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // Master mod, I2C modu ve senkron mod ayarlari     UCB0CTL1 |= UCSSEL_2;      // SMCLK'yi I2C saat kaynagi olarak ayarla     UCB0BR1 = 10;                   // I2C saat frekansini ayarla  UCB0BR1     UCB0CTL1 &= ~UCSWRST;           // I2C modülünü etkinlestir     UCB0I2CSA = ADXL345_ADDR;       // ADXL345'nin I2C adresini ayarla } void I2C_start(){     // I2C baslangiç isareti gönderimi     UCB0CTL1 |= UCTR + UCTXSTT; // Veri gönderme modunda baslangiç isareti gönder     while (UCB0CTL1 & UCTXSTT); // Gönderme tamamlanana kadar bekle } void I2C_write(uint8_t data){     // I2C veri yazma islemi     UCB0TXBUF = data;             // Veriyi I2C veri iletim buffer'ina yaz     while (!(IFG2 & UCA0TXIFG)); // Verinin gönderilmesini bekle } void I2C_stop(){     // I2C durdurma isareti gönderimi     UCB0CTL1 |= UCTXSTP;         // Durdurma isareti gönder     while (UCB0CTL1 & UCTXSTP);  // Durdurma isareti tamamlanana kadar bekle } void ADXL345_init(){     // ADXL345 sensörünü baslatma ve konfigürasyon     I2C_start();                  // I2C baslangiç isareti gönder     I2C_write(0x2D);              // Power Control Register adresine yaz     I2C_write(0x08);              // Standby modunu devre disi birak ve ölçüm moduna geç     I2C_stop();                   // I2C durdurma isareti gönder } void readAccelData(int16_t *accelData){     // ADXL345'ten ivme verilerini okuma     uint8_t rawData[6]; // Raw veri için dizi     I2C_start();        // I2C baslangiç isareti gönder     I2C_write(0x32);    // Veri okuma baslangiç adresini belirt     I2C_start();        // Yeniden baslatma gönder     I2C_write(0x33);    // Okuma modunda adres gönder     for (int i = 0; i < 6; i++) {         if (i == 5)             rawData[i] = UCB0RXBUF; // Son okunan byte için ACK olmayan durumu ayarla         else             rawData[i] = UCB0RXBUF; // Veriyi oku ve ACK gönder     }     I2C_stop();         // I2C durdurma isareti gönder     // Veriyi isleme     accelData[0] = (int16_t)(((uint16_t)rawData[1] << 8) | rawData[0]); // X ekseni ivmesi     accelData[1] = (int16_t)(((uint16_t)rawData[3] << 8) | rawData[2]); // Y ekseni ivmesi     accelData[2] = (int16_t)(((uint16_t)rawData[5] << 8) | rawData[4]); // Z ekseni ivmesi } void LED_control(int16_t x, int16_t y, int16_t z) {     // LED'leri kontrol etme     if (x > 1000)         P1OUT |= LED1; // LED1'i yak     else         P1OUT &= ~LED1; // LED1'i söndür     if (y > 1000)         P1OUT |= LED2; // LED2'yi yak     else         P1OUT &= ~LED2; // LED2'yi söndür     if (z > 1000)         P2OUT |= LED3; // LED3'ü yak     else         P2OUT &= ~LED3; // LED3'ü söndür } int main(void) {     WDTCTL = WDTPW | WDTHOLD;   // Watchdog Timer'i durdur     P1DIR |= LED1;  // LED1 çikis olarak ayarlandi     P1DIR |= LED2;  // LED2 çikis olarak ayarlandi     P2DIR |= LED3;  // LED3 çikis olarak ayarlandi     I2C_init();     // I2C baslatma islemi     ADXL345_init(); // ADXL345 sensörünü baslatma islemi     int16_t accelData[3]; // Ivme verilerini saklamak için dizi     while (1) {         readAccelData(accelData);   // Ivme verilerini oku         LED_control(accelData[0], accelData[1], accelData[2]); // LED'leri kontrol et     }   }

mehmet

#1
Elimde MPU-6050 ve G2452 G2553 bulunmakta.
Pek fazla vaktim yok, biraz beklerseniz
yardımcı olabilirim.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

osmanakgull

hocam 9 gün sonra projenin teslim tarihi var siz ne zamana kadar yardım edebilirsiniz gerçekten çok çaresizim projeyi yapamazsam dersi geçemem

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"