Bonjour, mon PPE consiste à créer un détecteur de sur vitesse. Tout d'abord, la personne enclenche un seuil (30,50,70,90,110,130) qui correspond a la vitesse limitée dans la zone ou il roule. Puis la vitesse de rotation de la roue de la voiture est détécter en fonction des fronts montants du signal carré qu'il génere. enfin le programme compare la vitesse seuil à la vitesse de la voiture si il depasse la vitesse, la voiture affiche sur un cadrant LCD : "vous depasser la vitesse limitée"
J'ai fait les différents sous programme mais je n'arrive pas à les relier et à creer le programme principal c'est pour ça que j'ai besoin de votre aide.
SOUS-PROGRAMME RECUPERATION DE LA VITESSE SEUIL
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
96
97
98
99
100
101 #include <90s8535.h> #include <delay.h> #include<lcd_V3.h> char change; long seuil; /********programme lire le seuil sur le PORTD*******/ int choix() { lcd_init(); etiq2: do { lcd_gotoxy(0,0); lcd_putsf("Limitation ?"); lcd_gotoxy(4,1); lcd_putsf(" "); } while(PIND==0); lcd_clear(); etiq1: switch (PIND) { case 0: goto etiq2; break; case 1: lcd_gotoxy(0,0); lcd_putsf("limitation :"); lcd_gotoxy(5,1); lcd_putsf("30km/h"); change = PIND; seuil=80; break; case 2: lcd_gotoxy(0,0); lcd_putsf("limitation :"); lcd_gotoxy(5,1); lcd_putsf("50km/h"); change = PIND; seuil=121; break; case 4: lcd_gotoxy(0,0); lcd_putsf("limitation :"); lcd_gotoxy(5,1); lcd_putsf("70km/h"); change = PIND; seuil=170; break; case 8: lcd_gotoxy(0,0); lcd_putsf("limitation :"); lcd_gotoxy(5,1); lcd_putsf("90km/h"); change = PIND; seuil=218; break; case 16: lcd_gotoxy(0,0); lcd_putsf("limitation :"); lcd_gotoxy(5,1); lcd_putsf("110km/h"); change = PIND; seuil=257; break; case 32: lcd_gotoxy(0,0); lcd_putsf("limitation :"); lcd_gotoxy(5,1); lcd_putsf("130km/h"); change = PIND; seuil=310; break; default: lcd_gotoxy(1,0); lcd_putsf("Erreur"); change = PIND; goto etiq1; break; } while(1) { if (change=!PIND) { goto etiq1; } } return seuil; }
SOUS PROGRAMME RECUPERER VITESSE DE LA VOITURE (AVEC FRONTS MONTANTS)
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 #include<90S8535.h> #include <lcd_v3.h> #include<string.h> #include<stdlib.h> #include<cnv2003.h> float chrono; unsigned int i, tempo, tempomax=2; void valide_interrupt_tim0() {TIMSK=0x01;} void init_timer0() {TCCR0=0x05; TCNT0=61;} interrupt[TIM0_OVF]void_timer0_ovf() {i = i+1; chrono=i*0.025; tempo=chrono; TCNT0=61;} void inhibe_interrupt_tim0() {TIMSK=0x00;} main() { int seuil,vitesse; DDRD=0x00; PORTD=0; lcd_init(); lcd_clear(); while(1) { seuil=0;i=0;tempo=0; valide_interrupt_tim0(); init_timer0(); #asm("sei") do { while(PIND.0==0); while(PIND.0!=0); seuil=seuil+1; } while(tempo<tempomax); #asm("cli") inhibe_interrupt_tim0(); vitesse=seuil; lcd_gotoxy(0,0); lcd_puts(cnv_itoa(vitesse)); }}
SOUS-PROGRAMME COMPARER VITESSE AU SEUIL ET AFFICHER MESSAGE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <90s8535.h> #include <delay.h> #include<lcd_V3.h> char compa(long seuil, long vitesse) { if(vitesse>seuil) lcd_putsf ("Ralentissez"); {return 1;} else lcd_putsf ("Vitesse OK"); {return 0;} ; }
Pouvez vous m'aider à relier ces codes ???
Merci aux Développeur
Partager