Pages: [1]   Go Down
Print
Author Topic: อีกอย่างนึงคับ ช่วยดูที  (Read 12002 times)
0 Members and 4 Guests are viewing this topic.
pomcoe
Jr. Member
**
Offline Offline

Posts: 29


Email
« on: March 23, 2013, 04:57:08 PM »

ก็คือว่าผมใช้ เซนเซอร์ตรวจความเคลื่อนไหวคับ

 การทำงานคือว่าเมื่อมีคนเข้ามาแล้วให้ไฟติดและ delay 2 นาที
   แต่ว่าในขณะที่มัน delay 2นาที อยู่ ถ้าเกิดเจอความเคลื่อนไหวก็ให้มันเริ่มนับ delay ใหม่คับ
แก้ code ไงดีคับ

Code:
#include <16F88.h>         // Standard Header file for the PIC16F877A
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, NOPUT, NOLVP  
#use delay(clock=10000000)  
int j;


void delay_2min(void){
      for(j=0;j<120;j++){
      delay_ms(1000);
      }}  

void main(void)
{
   set_tris_a(0x07);
   set_tris_b(0x00);
   output_b(0x00);
   delay_ms(200);
   while(TRUE)
 {      
   if(input(PIN_A0))    
      {
       output_high(PIN_B0);
       if(input(PIN_A0))
         {
         output_high(PIN_B0);
         }
         delay_2min();
         output_high(PIN_B0);
      }
      output_low(PIN_B0);
 }
}

« Last Edit: March 23, 2013, 06:20:39 PM by pomcoe » Logged
Hanajiji
Jr. Member
**
Offline Offline

Posts: 19


Email
« Reply #1 on: March 24, 2013, 04:02:57 AM »

ใส่ ไว้ใน while นะครับ
if (พอรตของเซนเซอร์ == 1)
{
     j = 0;
     
     เอ้าพุตรีเลย์ออนครับ
     
     for(j=0;j<120;j++){
     delay_ms(1000);
     if (พอรตของเซนเซอร์ == 1)
          j=0; //ถ้ามีเซนเซอร์มาโดนอีกก็รีเซทค่า j เป็น 0 ซะ
     }
 
    เอ้าพุตรีเลย์ออฟครับ
}

เอาฟังก์ชั่นหน่วงเวลาออกเลยก็ได้ครับ
« Last Edit: March 24, 2013, 04:03:34 AM by Hanajiji » Logged
pomcoe
Jr. Member
**
Offline Offline

Posts: 29


Email
« Reply #2 on: March 24, 2013, 10:58:59 AM »

ใส่ ไว้ใน while นะครับ
if (พอรตของเซนเซอร์ == 1)
{
     j = 0;
    
     เอ้าพุตรีเลย์ออนครับ
    
     for(j=0;j<120;j++){
     delay_ms(1000);
     if (พอรตของเซนเซอร์ == 1)
          j=0; //ถ้ามีเซนเซอร์มาโดนอีกก็รีเซทค่า j เป็น 0 ซะ
     }
  
    เอ้าพุตรีเลย์ออฟครับ
}

เอาฟังก์ชั่นหน่วงเวลาออกเลยก็ได้ครับ

 
     for(j=0;j<120;j++){
     delay_ms(1000);
     if (พอรตของเซนเซอร์ == 1)
          j=0; //ถ้ามีเซนเซอร์มาโดนอีกก็รีเซทค่า j เป็น 0 ซะ

ก็คือตรงนี่ ขณะที่มันวนอยู่  ถ้ามีอินพุตเข้ามา =1 มันก็จะเริ่มนับใหม่ใช่มะคับ
ผมเข้าใจถูกมั้ยคับ

« Last Edit: March 24, 2013, 10:59:25 AM by pomcoe » Logged
Hanajiji
Jr. Member
**
Offline Offline

Posts: 19


Email
« Reply #3 on: March 24, 2013, 02:14:09 PM »

ครับผม
Logged
pomcoe
Jr. Member
**
Offline Offline

Posts: 29


Email
« Reply #4 on: March 24, 2013, 02:17:55 PM »

ขอบคุณมากจิงๆเลยคับที่ช่วยเหลือ   Grin Grin
  ไม่รู้จะตอบแทนยังไงดี
« Last Edit: March 24, 2013, 05:30:41 PM by pomcoe » Logged
pomcoe
Jr. Member
**
Offline Offline

Posts: 29


Email
« Reply #5 on: March 24, 2013, 02:20:27 PM »

แต่ตอนนี้มีปัญหานึงคือในขณะทีไฟดับ  ในห้องไม่มีการเคลื่อนไหว   แต่ว่าบางทีไฟกลับติดเอง

 บางทีอาจจะเป็นที่เซนเซอร์ PIR ที่ไม่เสถียรใช่มั้ยคับ
Logged
Hanajiji
Jr. Member
**
Offline Offline

Posts: 19


Email
« Reply #6 on: March 24, 2013, 09:30:30 PM »

ผ... ผีป่าว ฮ่าๆๆๆ  ล้อเล่น
ลองเพิ่มดีเลย์ในการเชคครับ ลองให้ว่าถ้ามีสัญญาณเข้ามา
ระยะหนึ่งค่อยให้ไฟติด ไม่ใช่ติดเลยน่ะครับ
Logged
pomcoe
Jr. Member
**
Offline Offline

Posts: 29


Email
« Reply #7 on: March 24, 2013, 09:34:22 PM »

ผ... ผีป่าว ฮ่าๆๆๆ  ล้อเล่น
ลองเพิ่มดีเลย์ในการเชคครับ ลองให้ว่าถ้ามีสัญญาณเข้ามา
ระยะหนึ่งค่อยให้ไฟติด ไม่ใช่ติดเลยน่ะครับ


55 สงสัยผีหลอกแล้วเรา  Grin Grin Grin

แบบนี้เลยคับที่คิดไว้

 
Code:
 set_tris_a(0x07);             //set port ao,a1,a2 to input (0000 0111)
   set_tris_b(0x00);             //set port b to output
   delay_ms(100);
   while(TRUE)
 {      
   if (input(PIN_A0)||input(PIN_A1)||input(PIN_A2))  //input == 1
   {
      delay_ms(500);
      if (input(PIN_A0)||input(PIN_A1)||input(PIN_A2))
      {
         i = 0;    
         output_high(PIN_B0);    //open light  
         for(i=0;i<120;i++){     // delay 2min
            delay_ms(1000);
            if (input(PIN_A0)||input(PIN_A1)||input(PIN_A2))
               i=0;              //set time=0
      }  
      output_low(PIN_B0);        //close light
      }
      reset_cpu();               // reset cpu
   }
 }


« Last Edit: March 25, 2013, 05:10:34 PM by pomcoe » Logged
Hanajiji
Jr. Member
**
Offline Offline

Posts: 19


Email
« Reply #8 on: March 25, 2013, 03:20:56 AM »

ครับ ลองเชคพวกวงเล็บดูอีกทีนะครับ แล้วก็เบิรนลงชิปได้เลย สู้ๆครับ
Logged
pomcoe
Jr. Member
**
Offline Offline

Posts: 29


Email
« Reply #9 on: March 25, 2013, 12:49:33 PM »

คับ   ขอบคุณมากนะคับ    Cheesy Cheesy
Logged
Pages: [1]   Go Up
Print
 
Jump to: