دوستان سلام من از يک کتاب برنامه قطب نما با ماژول CMPs03 رو ديدم ، اما چون اين ماژول گران قيمت هست به جاش ماژول GY-271 را از ECA خريدم ، حالا ظاهرا اين ماژول با اين برنامه راه اندازي نميشود ! (مگه چه فرقي داره هر دو تاش با پروتکل دو سيمه وصل ميشن اما اين ماژول ارزون قيمته امکاناتش کمتره ) برنامه رو گذاشتم اما يک سري اطلاعات از مهمان عزیز شما حق دیدن لینک ها را ندارید
عضویت
در باره ي اين ماژول گرفتم ولي نفهميدم !
ديتا شيت ماژول GY-271
مهمان عزیز شما حق دیدن لینک ها را ندارید
عضویت
سورس برنامه قطب نما با ماژول CMPS03
مهمان عزیز شما حق دیدن لینک ها را ندارید
عضویت
کد:
#include <mega16.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
unsigned char compass_data;
void compass_read(void);
void main(void)
{
char str[20],str1[20];
float point;
// TWI initialization
// TWI disabled
TWCR=0x00;
// I2C Bus initialization
i2c_init();
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
while (1)
{
compass_read();
point=(float)compass_data*1.41176;
ftoa(point,1,str1);
sprintf(str,"point:%s ",str1);
lcd_gotoxy(0,0);
lcd_puts(str);
if (point<45 || point>315)
{
lcd_gotoxy(5,1);
lcd_putsf("NORTH");
}
else if (point<135 && point>=45)
{
lcd_gotoxy(5,1);
lcd_putsf("EAST");
}
else if (point<215 && point>=135)
{
lcd_gotoxy(5,1);
lcd_putsf("SOUTH");
}
else if (point<315 && point>=215)
{
lcd_gotoxy(5,1);
lcd_putsf("WEST");
}
delay_ms(100);
};
}
void compass_read()
{
i2c_start();
i2c_write(0xC0);
i2c_write(0x01);
i2c_start();
i2c_write(0xC1);
compass_data=i2c_read(0);
i2c_stop();
}