جستجوی دسته : آموزش زبان C - ميکروکنترلرها

پروژه دتکتور فلز با استفاده از سنسور  HMC5883

پروژه دتکتور فلز با استفاده از سنسور  HMC5883


با سلام خدمت همراهان گرامی:
متعلقات پروژه بدین شرح است :

Atmega8 , buzzer , LED , MAX232 , HMC Module , LAN Socket

نحوه ی کار مدار بدین شکل است که ماژول HMC که از طریق پورت I2C به میکرو متصل است ابتدا توسط میکرو در برنامه کانفیگ میشود و سپس در حلقه while  بصورت دایم در بازه های زمانی 4 میلی ثانیه که توسط تایمر ایجاد شده تغییرات میدان مغناطیسی اطراف سنسور را در یک جهت (مثلا " اینجا z ) میسنجد و سپس اگر تغییرات که ما آن را بعنوان threshold در برنامه تعریف کرده ایم ، زیاد باشد بازر به صدا درخواهد آمد و فلز تشخیص داده خواهد شد . با ایجاد بازه های محاسباتی 4 میلی ثانیه حرکت جسم با سرعت عبور بالا نیز تشخیص داده خواهد شد .

ضمنا" اگر سنسور در معرض میدان شدید باشد ممکن است اشباع شود همچنین با تغییرات دما نیز ممکن است دیتا تغییرات داشته باشد ، که میتوانید خودتان در کانفیگ ها باتوجه به شرایط کاری خودتان لحاظ کنید .

تایمر ON-OFF با قابلیت تنظیم زمان روشنی و خاموشی و ذخیره آن در حافظه

تایمر ON/OFF با قابلیت تنظیم زمان روشنی و خاموشی و ذخیره آن در حافظه


باسلام خدمت دوستان و همراهان ارجمند:
متعلقات پروژه به شرح زیر است :

Atmega8,DS1307,push-button key,volume,lcd 2*16

کارکرد مدار بدین صورت است که با یکبارفشردن کلید برنامه وارد ذخیره سازی ساعت روشنی و فشردن دوباره تنظیم دقیقه روشنی و با فشردن های بعدی به ترتیب ساعت و دقیقه زمان خاموشی و ساعت و دقیقه زمان حاضر برای دستگاه تنظیم میشود . دقت کنید با هر بار فشردن  عدد مورد نظر از طریق ولوم که به ADC - 0 متصل است تنظیم میشود . کلید نیز به اینتراپت صفر متصل است . خروجی پایه آی سی را میتوان برای درایو رله یا ترایاک یا تریستور بنا به قابلیت مورد نیاز استفاده کرد.

دقت کنید با یکبار فشردن کلید حتما باید با 6 بار فشردن تمام تنظیمات را انجام داد و در صورت عدم فشردن تا چند ثانیه نرم افزار به تنظیمات قبلی برمیگردد و ساعت و دقیقه جاری را نمایش خواهد داد . حتما در مسیر ورودی کلید که به اینتراپت 0 متصل است از مدار نویزگیر که شامل خازن 100 نانو و مقاومت 10 کیلو هست استفاده کنید .


 

سیستم کنترل تردد RFID

سیستم کنترل تردد RFID
 



باسلام خدمت دوستان و همراهان ارجمند:

ملزومات این سیستم به شرح زیر است :

Atmega32,DS1307,AT24C04*2,EM-18 Module,SD card socket,LED,Buzzer,LCD2*16,USB to USART Module

طرز کار سیستم به نحوی است که از ساعت 8 الی 6:30 عصرهر فردی که کاربر سیستم تعریف شده باشد و کارت را به سیستم نزدیک کرده باشد ساعت حضور بهمراه آی دی شخص در اس دی کارت ذخیره خواهد شد .به یاد داشته در تعاریف اولیه کد در خطوط اولیه کد میتوانید ساعت لاگ گیری را تغییر دهید .برای تعریف کاربر که 100 نفر قابلیت تعریف دارد باید کارتی که به عنوان مدیریت یا مستر تعریف شده را به دستگاه نزدیک کنید بعد سیستم از مدیر رمز ورود به منو میخواهد که بصورت پیش فرض 120 است و میتوان آن را نیز بصورت دستی از خطوط اولیه کد تغییر داد.ناگفته نماند هرکارت  RFID یک کد 12 بایتی توسط ماژول تولید خواهد کرد که میتوانید این کد را توسط خروجی USART ماژول توسط ماژول مبدل USART به USB روی نرم افزار ترمینال مشاهده کنید و کد 12 بایتی را تک به تک بایت هایش را در قسمت ee_master1یا ee_master2 کپی کنید . تا حد اکثر اطلاعات دو کارت میتواند بعنوان مدیریت ذخیره گردد .مدیریت قابلیت تنظیم ساعت و همچنین تعریف کاربر را دارد و رمز خود مدیریت را نیز میتواند تغییر دهد. کاربری که اطلاعات کارتش ذخیره شده باشد با عبور از روی ماژول فقط ساعت حضورش ذخیره می گردد و درصورت عدم تعریف در سیستم با پیغام  is n’t exist مواجه خواهد شد.

پروژه تردد سنج افراد به همراه ثبت زمانی رویداد در sdcard

پروژه تردد شمار افراد به همراه ثبت رویداد با ساعت و تاریخ

 و قابلیت تنظیم ساعت و تاریخ از طریق پورت usb


سلام و عرض ادب خدمت دوستان و همراهان گرامی:

قطعات پروژه :

Atmega 328 , IC DS1307 ,USB to Serial module , SDCARD module , Green LED ,Push Button Switch

در این پروژه میتوانیم هر گیرنده ی سنسوری که خروجی صفر یا یک دارد را به ورودی اینتراپت 0 میکرو داده تا میکرو لحظه ی اینتراپت را در اس دی کارت بهمراه ساعت و تاریخ در یک فایل تکست ذخیره نماید . دقت داشته باشید دستگاه برای هر روز یک فایل تکست جداگانه باز می کند.

(توجه داشته باشید ما برای این پروژه از ماژول گیرنده ی مادون قرمز که فعال بودنش با لبه پایین رونده بود استفاده کردیم شما بنا به نیاز خود میتوانید کانفیگ اینتراپت را تغییر دهید.)

وقفه ی 0 حساس به دو لبه تنظیم شده است و در صورت دیدن اولین لبه تایمر را بکار می اندازد تا لبه ی بعدی را ببیند و بعد درصورت پالس بزرگتر از 50 میلی ثانیه ای اقدام ثبت دیتا را انجام میدهد.(میتوانیم این زمان را وقتی بصورت دستی پروژه را بستید تغییر دهید و کالیبره کنید)

از وقفه ی 1 که به لبه پایین گذر حساس است برای تنظیمات ساعت دستگاه استفاده کردیم که از مبدل فوق الذکر استفاده کرده و نرم افزار ترمینال را باز میکنیم و سپس کلید اینتراپت 1 رافشار میدهیم حال از شما نرم افزار میخواهد ساعت را با فرمت درخواستی در قسمت پایین نرم افزار ترمینال تایپ کنید در صورت ثبت وزدن اینتر همین کار رابرای تاریخ میخواهد که قابل انجام است.(دقت داشته باشید برای دقیق تر بودن ساعت دستگاه بازدن اینتر نهایی ثبت ساعت انجام خواهد شد لذا یک دقیقه جلوتراززمان واقعی ، زمان را ثبت کنید)

 

مقدمه ای بر زبان C

 

  

 

 

 

 

 

به نام خدا

با عرض سلام خدمت دوستان و عزیزانی که قصد آموزش کار با میکرو کنترلر AVR رو دارند.

امیدواریم که با این سری آموزش ها که در دوقسمت آموزش زبان C وآموزش میکروکنترلر برای شما عزیزان تهیه می شود قادر باشید به راحتی پروژه های مربوط به مبحث میکروکنترلر رو انجام بدهید.

شاید بعضی از شما دوستان با برنامه نویسی(با هر زبانی مثل C#وjavaو...) آشنایی داشته باشید.اما اگر تازه وارد دنیای برنامه نویسی شدید اصلا نگران نباشید چون قراره هرچیزی رو که برای یادگیری مبحث میکرو کنترلر لازم داریم از جمله مقداری زبان C  رو قدم به قدم یاد یگیریم.

 

زبان C  چیست؟

زبان برنامه نویسی یکسری قواعد دستوری و دستور های زبانی هستند که به وسیله این زبان ها می توان الگوریتم های مختلف مانند تبدیل تاریخ شمسی به میلادی و محاسبه حقوق کارمندان و....را به زبانی قابل فهم برای رایانه تبدیل کرد.

زبان C در سال 1972 توسط آقای دنیس ریچی ساخته شد.

قبل از ساخته شدن زبان C که زبان تقریبا سطح بالایی حساب میشود (یعنی قواعد دستوری زبان نزدیک به زبان انسان هست)

از زبان ها ماشین(رایانه) که دستورات به فرمت 0 و 1 نوشته میشدند، استفاده میشد که بسیار سخت و پیچیده بود.

در نتیجه کار با زبان C بسیار راحت تر از زبان ماشین هست.

در این تصویر که از یک محیط برنامه نویسی C هست یکسری قواعد برنامه نویسی مانند if  و for  و... نمایش داده شده است که در جلسات بعدی آموزش داده میشوند.

 

 آموزش های بعدی ما رو دنبال کنید...

متغیرها
Variables Previous Top Next

Program variables can be global (accessible to all the functions in the program) or local (accessible only inside the function they are declared)
If not specifically initialized, the global variables are automatically set to 0 at program startup
.The local variables are not automatically initialized on function call
:The syntax is
 
;[<memory attribute>] [<storage modifier>] <type definition> <identifier> [= constant expression]
 
:Example
 
/* Global variables declaration */
;char a
;int  b
/* and initialization */
;long c=1111111
 
}(void main(void 
/* Local variables declaration */
;char d
;int  e
/* and initialization */
;long f=22222222
{
 
.Variables can be grouped in arrays, which can have up to 64 dimensions
.The first element of an array has always the index 0
.If not specifically initialized, the elements of global variable arrays are automatically set to 0 at program startup
:Example
 
/* All the elements of the array will be 0 */
;[int  global_array1[32
 
/* Array is automatically initialized */
;{int  global_array2[]={1,2,3
;{int  global_array3[4]={1,2,3,4
;"char global_array4[]="This is a string
 
/* Only the first 3 elements of the array are
   initialized, the rest 29 will be 0 */
;{int  global_array5[32]={1,2,3
 
/* Multidimensional array */
;{{int multidim_array[2][3]={{1,2,3},{4,5,6
 
}(void main(void 
/* local array declaration */
;[int  local_array1[10 
/* local array declaration and initialization */
;{int  local_array2[3]={11,22,33 
;"char local_array3[7]="Hello 
{
 
 : Local variables that must conserve their values during different calls to a function must be declared as static. Example 
 
}(int alfa(void 
/* declare and initialize the static variable */
;static int n=1 
;++return n 
}
 
}(void main(void 
;int i 
 
/* the function will return the value 1 */
;()i=alfa
 
/* the function will return the value 2 */
;()i=alfa 
}
 
.If not specifically initialized, static variables are automatically set to 0 at program startup
 
.Variables that are declared in other files must be preceded by the extern keyword
:Example
 
;extern int xyz
 
/* now include the file which contains
   the variable xyz definition */
<include <file_xyz.h#
 
.To instruct the compiler to allocate a variable to registers, the register modifier must be used
:Example
 
;register int abc
 
.The compiler may automatically allocate a variable to registers, even if this modifier is not used
 
.The volatile modifier must be used to warn the compiler that it may be subject to outside change during evaluation
:Example
 
;volatile int abc
 
.Variables declared as volatile will not be allocated to registers
 
.All the global variables, not allocated to registers, are stored in the Global Variables area of RAM
.All the local variables, not allocated to registers, are stored in dynamically allocated space in the Data Stack area of RAM
 
.If a global variable declaration is preceded by the eeprom or __eeprom memory attribute, the variable will be located in EEPROM
:Example
 
;eeprom float xyz=12.9
;{eeprom int w[5]={1,2,3,4,5
 
.The initialization data for the EEPROM is stored in an .EEP file in Intel hex format
.The contents of this file must programmed to the chip's EEPROM