پاسخ : شتاب سنج ADXL345 فروشگاه [فیلم+توضیحات+سوالات]
من دستورات LCD رو تغییر دادم ولی وقتی برنامه وارد تابع main میشه هر بار برای طی کردن کامل حلقه و نمایش اعداد جدید حدود سه ثانیه ظول میکشه.
ولی اون جوری که توی فیلم نشون میده اعداد روی LCD خیلی زود تغییر میکنه. بعدش اعداد نمایش داده شده روی LCD اصلا شبیه اعداد داخل فیلم نیست.
به نظر شکا مشکل کار کجاست؟
من دستورات LCD رو تغییر دادم ولی وقتی برنامه وارد تابع main میشه هر بار برای طی کردن کامل حلقه و نمایش اعداد جدید حدود سه ثانیه ظول میکشه.
ولی اون جوری که توی فیلم نشون میده اعداد روی LCD خیلی زود تغییر میکنه. بعدش اعداد نمایش داده شده روی LCD اصلا شبیه اعداد داخل فیلم نیست.
به نظر شکا مشکل کار کجاست؟
کد:
#include <mega32.h> #include <math.h> #include <i2c.h> #include <delay.h> #include <stdio.h> #include <alcd.h> #include <ADXL345.h> char lcd1[20],lcd2[20],lcd3[20],lcd4[20]; void main(void) { delay_ms(100); // Declare your local variables here PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; // I2C Bus initialization // I2C Port: PORTC // I2C SDA bit: 1 // I2C SCL bit: 0 // Bit Rate: 100 kHz // Note: I2C settings are specified in the // Project|Configure|C Compiler|Libraries|I2C menu. i2c_init(); lcd_init(20); ADXL345_Regs_Reset(); ADXL345_SelfTest(); ADXL345_Offset_Calib(); ADXL345_Init(); delay_ms(1000); Get_Offset_Values(); //val2lcd(Offset_X_Val,2,1,Dec,5,on); //val2lcd(Offset_Y_Val,2,2,Dec,5,on); //val2lcd(Offset_Z_Val,2,3,Dec,5,on); delay_ms(2000); while (1) { Get_Accel_Angles(); sprintf(lcd1,"X:%6d%6d%6d",Accel_Xout_Val,Accel_Xout_Normalized_Val,Accel_XAngle); sprintf(lcd2,"Y:%6d%6d%6d",Accel_Yout_Val,Accel_Yout_Normalized_Val,Accel_YAngle); sprintf(lcd3,"Z:%6d%6d%6d",Accel_Zout_Val,Accel_Zout_Normalized_Val,Accel_ZAngle); lcd_gotoxy(0,0); lcd_putsf("Accel AcceIN Angle"); lcd_gotoxy(0,1); lcd_puts(lcd1); lcd_gotoxy(0,2); lcd_puts(lcd2); lcd_gotoxy(0,3); lcd_puts(lcd3); delay_ms(70); } }
دیدگاه