انجمن ها > انجمن برق > صفحه اول بحث
لطفا در سایت شناسائی شوید!
برق (بازدید: 3299)
پنج شنبه 12/1/1389 - 14:47 -0 تشکر 192349
Compass CMPS03 Module CodeVision AVR C Program

با یاد خدا

  دوستان زیادی دنبال برنامه ای ای وی آر برای راه اندازی ماژول کامپس آنهم بزبان سی هستند،برای اینکه کمتر دچار مشکل و سردرگرمی  شوند برنامه زیر را در اختیار دوستان قرار می دهم،امیدوارم مفید باشد،اضمنا گر سوالی بود درخدمتم 

/*****************************************************
Project :  CMPS03 Module Program
Author: Alireza.M.Qasemi

ایمیل مدیر انجمن برق و روباتیک

Version : v.1
Company : FOX - www.FoxLab.ir
Comments: This program © FOX Robotic Team.
*****************************************************/
#include <mega8.h>
#include <stdio.h>
#include <stdlib.h>
#include <i2c.h>
#include <delay.h>
#include <lcd.h>
void start();
void process();
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
}
int data;
#asm
.equ __i2c_port=0x15
.equ __sda_bit=4
.equ __scl_bit=5
#endasm
#asm
.equ __lcd_port=0x12
#endasm
//****************************************************
void main(void)
{
PORTD=0x08;
DDRD=0x08;
lcd_init(20);
i2c_init();
//****************************************************
while (1)
{
start();
}
}
//****************************************************
void start()
{
lcd_clear();
i2c_start();
i2c_write(0xc0);
i2c_write(0x01);
i2c_start();
i2c_write(0xc1);
data=i2c_read(0);
data=data*1.4117647058823529411764705882353;
i2c_stop();
process();
}
//****************************************************
//****************************************************
void process()
{
if(data < 45 || data > 315)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("north");
delay_ms(20);
}
if(data < 135 && data > 45)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("east");
delay_ms(20);

}
if(data < 215 && data > 135)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("soth");
delay_ms(20);
}
if(data < 315 && data > 215)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("west");
delay_ms(20);
}
}
//****************************************************

 

ضمنا با توجه به اینکه کامپس عددی بین 0-255 به ما تحویل می دهد، باید آنرا تبدیل به 0-360 کنیم،برای اینکار  دیتا را در عدد 1.41 (این عدد از تقسیم 360 بر 255 حاصل شده) ضرب می نمایم.

ضمنا تابع پروسس برای راه اندازی کامپس نیاز نیست و فقط تابعیست که در  ال سی دی مشخص می کند در کدام جهت هستیم،

 

جمعه 27/1/1389 - 9:1 - 0 تشکر 195241

با سلام

لطفا نهوی تبدیل  0تا 255 را به 0 تا 360 راهم توضیح دهید

يکشنبه 29/1/1389 - 0:25 - 0 تشکر 195693

با سلام، دوست عزیز چون کامپس عددی بین 0-255 به ما تحویل می دهد بنابراین باید آنرا تبدیل به 0-360 کنیم،برای اینکار دیتا را در عدد 1.4117647058823529411764705882353 (این عدد از تقسیم 360 بر 255 حاصل شده) ضرب می نمایم.

ضمنا در تابع پروسس برنامه ای اضافه شده که ال سی دی مشخص کند در کدام جهت هستیم،

برای مثال ( data < 45 || data > 315 ) جهت شمال را در ال سی دی نمایش می دهد.

پنج شنبه 29/2/1390 - 20:40 - 0 تشکر 318944

اقا دستتون درد نکنه عالی بود
من هم فایل تشان دهتده درجه رو هم میزارم شاید دوستان خواستند درجه رو هم ببیتتد
#include
#include
#include
#include
#include
#include
#asm
.equ __i2c_port=0x15
.equ __sda_bit=4
.equ __scl_bit=5
#endasm
#asm
.equ __lcd_port=0x12
#endasm
void start();
int data;unsigned char ch[10];
void main(void)
{
PORTD=0x08;
DDRD=0x08;
lcd_init(20);
i2c_init();
  while (1)
   {
    start();
   }
}
//****************************************************
void start()
{
lcd_clear();
i2c_start();
i2c_write(0xc0);
i2c_write(0x01);
i2c_start();
i2c_write(0xc1);
data=i2c_read(0);
data=data*1.4117647058823529411764705882353;
i2c_stop();
itoa(data,ch);
lcd_gotoxy(0,5);
lcd_puts(ch);
delay_ms(5);
}
//****************************************************

برو به انجمن
انجمن فعال در هفته گذشته
مدیر فعال در هفته گذشته
آخرین مطالب
  • آلبوم تصاویر بازدید از کلیسای جلفای...
    آلبوم تصاویر بازدید اعضای انجمن نصف جهان از کلیسای جلفای اصفهان.
  • بازدید از زیباترین کلیسای جلفای اصفهان
    جمعی از کاربران انجمن نصف جهان، در روز 27 مردادماه با همکاری دفتر تبیان اصفهان، بازدیدی را از کلیسای وانک، به عمل آورده‌اند. این کلیسا، یکی از کلیساهای تاریخی اصفهان به شمار می‌رود.
  • اعضای انجمن در خانه شهید بهشتی
    خانه پدری آیت الله دکتر بهشتی در اصفهان، امروزه به نام موزه و خانه فرهنگ شهید نام‌گذاری شده است. اعضای انجمن نصف جهان، در بازدید دیگر خود، قدم به خانه شهید بهشتی گذاشته‌اند.
  • اطلاعیه برندگان جشنواره انجمن‌ها
    پس از دو ماه رقابت فشرده بین کاربران فعال انجمن‌ها، جشنواره تابستان 92 با برگزاری 5 مسابقه متنوع در تاریخ 15 مهرماه به پایان رسید و هم‌اینک، زمان اعلام برندگان نهایی این مسابقات فرارسیده است.
  • نصف جهانی‌ها در مقبره علامه مجلسی
    اعضای انجمن نصف جهان، در یك گردهمایی دیگر، از آرامگاه علامه مجلسی و میدان احیا شده‌ی امام علی (ع) اصفهان، بازدیدی را به عمل آوردند.
  • وبگردی