الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارجوا المساعده في مشروع التخرج

بدأه Al Khaja في 18 مارس 2012 · 1 رد · 677 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اخوتي اعضاء المنتدى, لم اعلم اين اكتب طلبي هذا فكتبته هنا لانني استخدم لغة C

مشروع التخرج هو عباره عن بناء قفص للدجاج, ويتكون من مسكن للدجاج, و ساحه لاطعامهم... وبين السكن والساعه يوجد باب ويجب ان يفتح الباب في الصباح ويقفل في المساء.. ويوجد مثل الصحنان للدجاج في الساحه. صحن للاكل, وصحن للشرب.. هذه البدايه للمشروع علما باني قمت ببناء الهاردوير للمشروع ولكني فشلت في البرمجه.. (لاني اواجه صعوبه بها)

تفاصيل المشروع

المايكروكنترولر المستخدم هو PIC 16F877 40pins

قمت باستخدام Array Detector لقراءة العدد الذي يتعدى الباب كل يوم, وذلك لانني كنت افكر ان استخدم GSM Modulation لارسال رسائل للمالك واخباره بالتحديث اليومي.

وقمت باختيار الموتور للباب وهو DC motor driven by H-bridge, والذي يفتح ويغلق بحسب الاوامر المرسله من الـ PCF8583 وهو لقراءة اليوم والتاريخ وفي الصباح يفتح الباب والمساء يغلق..

http://www.nxp.com/documents/data_sheet/PCF8583.pdf .

وقمت باختاير Float switch لقياس الماء المخزن, وفكرت في استخدام Solinoid Valve لفتح صنبور الماء واغلاقه.. مثال, اذا كان المخزون اقل بنسبة 30% فان الصنبور يفتح ليملئ المخزون بالماء..

واستخدمت ايضا Ultrasonic Sensore لقياس مستوى الاكل في المخزن, واذا كان المستوى اقل بنسبة 30% يفتح الجهاز ليملئ الصحن بالاكل. والموتور المستخدم هو نفس الموتور المستخدم للباب.

http://www.maxbotix.com/documents/MB1010_Datasheet.pdf

تمت البرمجه على برنامج MPLAB IDE مع CCS COMPILER

ارجوا من ذوي الخبره مساعدتي في المشروع واخباري بالاخطاء.. :sad: علما بانه لم يتبقى وقت لتسليم المشروع

اشكركم جزيل الشكر

وهذا اقتباس من الكود

اقتباس

#include <16f877.h>

#device ADC=10 //

// ayarlar

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#use I2C(master, sda=PIN_B0, scl=PIN_B1)

#use I2C(slave,sda=PIN_C4,scl=PIN_C3 ,address=0xa0,FORCE_HW)

#use I2C(master, scl=PIN_B0, sda=PIN_B1, fast=450000)

//sets the target speed to 450 KBSP

#define use_portb_lcd TRUE // LCD B

#define buton_ileri pin_c4

#define buton_geri pin_c5

signed int8 ADIM=0;

int16 Vref,Vcikis;

float filtre,counter,door_counter,day,second,hour,minute,water_level,timer_1,timer_2,door_time,food_1,data;

float chicken_counter_1,chicken_counter_2,array_1,array_2;

unsigned int8 sayac;

char durum;

#int_timer1 // Timer1

void timer1_kesme ()

{

door_counter=door_counter+1;

//When the water level is low, run water tap motor for 1 ms

if (water_level<0.3)

{

timer_1=timer_1+10e-6;

if (timer_1>0.001)

{

timer_1=0;

output_low(PIN_C0);

output_low(PIN_C1);

}

}

//Data from Ultrasonic detector

//Data is reading from analog output of ultrasonic sensor

//When the food level is low, run food motor for 1 ms

if (food_1>0.5)

{

timer_2=timer_2+10e-6;

if (timer_2>0.001)

{

timer_2=0;

output_low(PIN_C1);

}

}

//When time is the one which is opening door, open door

if (door_counter>door_time)

{

output_high(PIN_C2);

}

//Detection array1

if ( input(PIN_A3)==1 )

{

delay_ms(1500);

chicken_counter_1= chicken_counter_1+1;

}

//Detection array2

if ( input(PIN_A5)==1 )

{

delay_ms(1500);

chicken_counter_2= chicken_counter_2+1;

}

//day counter

counter=counter+1;

if ((counter*100e-6) >1)

{

counter=0;

second=second+1;

}

if (second>60)

{

second=0;

minute=minute+1;

}

if (minute>60)

{

minute=0;

hour=hour+1;

}

if (hour>24)

{

hour=0;

day=day+1;

}

//solar detection and open the door

i2c_start();

data=i2c_read(0); // Now read

i2c_stop();

//At nigth close the door

if ((hour>18) && (data<0.1))

{

output_low(PIN_C2);

}

set_timer1(63036);

}

void main ( )

{

SET_TRIS_C( 0x78 );

SET_TRIS_A( 0x30 );

second=0;

minute=0;

hour=0;

day=0;

timer_1=0;

timer_2=0;

door_counter=0;

chicken_counter_1=0;

chicken_counter_2=0;

counter=0;

door_time=36000;

//Initial delay

delay_ms(10);

delay_ms(1500);

setup_psp(PSP_DISABLED); // PSP is OFF

setup_spi(SPI_SS_DISABLED); // SPI is OFF

//setup_timer_1(T1_DISABLED); // T1 timer is off

setup_timer_2(T2_DISABLED,0,1); // T2 timer is off

setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);

set_timer1(63036);

//Inýtialize and set A/D converter

setup_adc_ports( ALL_ANALOG);

setup_adc(adc_clock_internal);

set_adc_channel(2);

setup_CCP1(CCP_OFF); // CCP1 is OFF

setup_CCP2(CCP_OFF); // CCP2 is OFF

output_d(0x00);

enable_interrupts(INT_timer1); // int_timer1

enable_interrupts(GLOBAL); //

delay_ms(5);

while(1)

{

//Set up A/D converters

set_adc_channel(0);

set_adc_channel(3);

set_adc_channel(4);

water_level = read_adc(0);

food_1= read_adc(3);

if (water_level<0.3)

{

output_low(PIN_B0);

}

}

}

مواضيع مشابهة