salut tout le monde , j'ai fait un projet concernant le vidange d'un bidant mais je sais pas comment configurer correctement le timer pour qu'il puisse calculer la distance entre le capteur et la surface d'eau voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* Main.c file generated by New Project wizard
 *
 * Created:   mer. févr. 17 2017
 * Processor: PIC16F887
 * Compiler:  MPLAB XC8
 */
 
#include <xc.h>
 
#define _XTAL_FREQ 4000000
 
#define pushed   0
#define released 1
#define empty 0
#define not_empty 1
#define ON 1
#define OFF 0
#define echo PORTCbits.RC7
#define trigger PORTCbits.RC6
#define button PORTBbits.RB0
#define sensor PORTBbits.RB1
#define motor  PORTBbits.RB2
#define LED_ET PORTDbits.RD0
#define LED_MP PORTDbits.RD1
 
unsigned char last_button, pushed_button;
 
void main(void)
 {
    OSCCON&=0b11101110;// use internal oscillator
    OSCCON|=0b01100000;// set it to 4 Mhz
 
    TRISD=0x00;// configure PORTD as output
    PORTD=0x00;// initialize PORTD to 0x00 :All LEDs are OFF
    ANSELH=0x00;
    OPTION_REGbits.nRBPU=0;
    WPUBbits.WPUB1=1; 
    TRISCbits.TRISC7=1; 
    TRISCbits.TRISC6=0;  
    TRISBbits.TRISB0=1;
    TRISBbits.TRISB1=1;
    TRISBbits.TRISB2=0;
    motor=OFF;
    LED_ET=OFF;
    LED_MP=OFF;
    last_button=button;
    pushed_button=0;
    T1CON = 0x01; 
 
    float a ;
    // Write your code here
   while (1)
   {
      if((last_button==released) && (button==pushed)) pushed_button=1;
      last_button=button;
 
      if (sensor==empty)LED_ET=ON;
	  else LED_ET=OFF;
 
      if (pushed_button)
      {
        pushed_button=0;
	 if(sensor==empty)
	 {  while(sensor==empty)
	    {
	       LED_ET=~LED_ET;
	     __delay_ms(500);   
	       }
	  }
	  else
	  {
	     LED_MP=ON;
	     motor=ON;
	     while(sensor==not_empty);
	     LED_MP=OFF;
	     motor=OFF;
	   }
	   }
 
  trigger=1; // trigger high
  __delay_us(10);
  trigger=0; //trigger low
      __delay_ms(50); 
	 TMR1H = 0;                
         TMR1L = 0;  
while (!echo); //Waiting for Echo  
     TMR1ON=1;           
    while(echo); //Waiting for Echo goes LOW               
     TMR1ON=0;               
    a = (TMR1L | (TMR1H<<8)); 
    a = a/58.82;              
 
 
   }
 }