استاذ حسن تم التعديل على الكود وهو يعمل على البتروس طبيعي
ولكن على الواقع المرسل يخرج التردد اعتيادي
ولكن عند مرور شحص من خلال المرسل والمستقبل لاينور الليد يعني
الريلي وعند فصل احد اقطاب المرسل والدائرة تعمل يعمل الليد
اين الخطأ استاذنا القدير
هذا الكود بعد حذف صافرة الشرطة
كود:
unsigned int x=0;
char flag_ir=0 , kk=0;
sbit led at RB0_bit;
sbit led_dir at trisB0_bit;
sbit reciver at RB4_bit;
sbit reciver_dir at trisB4_bit;
sbit stop at RB5_bit;
sbit stop_dir at trisB5_bit;
void send_signal();
void main()
{
cmcon=7;
stop_dir=0;
reciver_dir=1;
led_dir=0;
led=0;
//Sound_Init(&portb,5);
PWM1_Init(40000);//40khz
PWM1_Set_Duty(127);// set duty 50%
for (x=0;x<10;x++) // flashing for check is micro is ok init.
{
led=1;
delay_ms(100);
led=0;
delay_ms(100);
}
while(1)
{ if(kk==0)send_signal();
if(stop==1)
stop=0;
stop=1;
for(x=0;x<30;x++)delay_ms(1000);// wait 30 sec
stop=0; }}
//***********************************
void send_signal()
{
flag_ir=0; // intial value
while(1)
{
PWM1_Start();
delay_ms(20);
if(reciver==0) flag_ir=0;
else flag_ir++;
PWM1_Stop();
delay_ms(20);
if(flag_ir==6)break;
}
}
|
السلام عليكم
أرجو المعذره تاخرت عليك بالاجابه لاني كنت مشغول
اخي كريم حسب مالاحظ أنت لغيت كود الاستقبال من ريموت أخر ولهذا لايمكن أن تصبح stop=1 لذا اخذ هذا التعديل
كود:
unsigned int x=0;
char flag_ir=0 , kk=0;
sbit led at RB0_bit;
sbit led_dir at trisB0_bit;
sbit reciver at RB4_bit;
sbit reciver_dir at trisB4_bit;
sbit relay at RB5_bit;
sbit relay_dir at trisB5_bit;
void send_signal();
void main()
{
cmcon=7;
reciver_dir=1;
led_dir=0;
led=0;
relay_dir=0;
relay=0;
PWM1_Init(38000);//38khz
PWM1_Set_Duty(127); // set duty 50%
for (x=0;x<10;x++) // flashing for check is micro is ok init.
{ led=1;
delay_ms(100);
led=0;
delay_ms(100);
}
while(1)
{
send_signal();
if(flag_ir==6)
{
led=1;
relay=1;
flag_ir=0;
for(x=0;x<60;x++)delay_ms(1000);// wait 60 sec ;
led=0;
relay=0;
}
}
}
//***********************************
void send_signal()
{
flag_ir=0; // intial value
while(1)
{
PWM1_Start();
delay_ms(20);
if(reciver==0) flag_ir=0;
else flag_ir++;
PWM1_Stop();
delay_ms(20); if(flag_ir==6)break;
}
}