 |
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2009
المشاركات: 76
|
|
نشاط [ ZWAWITOTTI10 ]
قوة السمعة:0
|
|
30-05-2013, 11:18 PM
المشاركة 1
|
|
السلام عليكم
اريد مساعدة في فتح واغلاق باب وذلك عن طريق فتوريزيستور LDR متصلة ببورت الانالوج الفكرة هي لما الشخص يقطع الليزر الموجه للـ LDR فان الباب سيفتح لـ 5 ثواني ولو بقي فانه يبقى مفتوح الى ان يدخل او يخرج ليغلق بعد 20 ثانية وهنا المشكل الذي مررت به حيث فكرتي كانت بـ while اي مادام الشخض واقف فيبقى مفتوح حيث لاحضت ان while داخل اخرى تركت الانالوج لا يعمل ولم افهم لماذا ولو نزعتها لاشتغلت لكن بدون التوقف مادام الشخص متوقف.
الكود مرفق مع المحكاة
http://www.mediafire.com/download/36qo694o2dr4l9d/16f876a_commande_d'un_barrier_-_Copie.rar
كود:
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
char x;char B,A1,A2,A3,A4,ferme,ouvre;
char zw[20]="DAHMANI A.MOUMEN";
char display[16]="";
unsigned int result;
float volt,volt_p,temp,temp_p;
void adc()
{
result=adc_read(0);
volt=result*4.88;
temp=volt/10;
}
void initialize()
{
trisb=0; trisa=0xff; trisc=0; portc=0;
adcon1=0x80;
lcd_init();
lcd_cmd(_lcd_clear);
lcd_cmd(_LCD_CURSOR_OFF);
}
void ouvrire()
{
portc.f0=1;
portc.f4=0;
lcd_out(2,1,"Barrier Ouvrir");
}
void fermer()
{
portc.f0=0;
portc.f4=1;
lcd_out(2,1,"Barrier Fermer");
}
void arret()
{
portc.f4=0;
portc.f0=0;
lcd_out(2,1,"Barrier Arret..");
}
void main()
{
initialize();
while(1)
{
adc();
portc.f3=1;
lcd_out(1,1,zw);
delay_ms(400);
lcd_cmd(_lcd_clear);
floattostr(temp,display);
lcd_out(1,1,display);
if(volt>=2500)
{
ouvrire();
Delay_ms(5000);
while(1)
{ adc();
arret();
Delay_ms(2000);
if(volt<2500)break;
}break;
}
if(volt<2500)
{ fermer();
Delay_ms(5000);
while(1)
{ adc();
arret();
Delay_ms(2000);
if(volt>=2500)break;
}
}
}
}
التعديل الأخير تم بواسطة : ZWAWITOTTI10 بتاريخ 30-05-2013 الساعة 11:24 PM
|