Salut,
J'ai un projet en langage C. La description de ce projet est la suivante :
Le but est d'assurer la gestion de feux de trafic d'un carrefour. La solution est basée sur l'utilisation d'un micro-contrôleur PIC 16F877A.
La première partie de ce travail concerne la conception de la carte qui sert de simulateur. La seconde partie concerne la programmation du micro-contrôleur. La troisième partie est une validation de la solution proposée.
Description du cahier des charges : Le but est d'assurer la circulation des véhicules et des piétons au niveau d'un carrefour qui comporte 4 voies.
Fonctionnement du système :
Sur ce carrefour, les voies 1 et 3 fonctionnent ensemble ce qui signifie que le signal vert de la voie 1 et le signal vert de la voie 3 sont couplés et donc simultanément activés pour que le témoin vert de la voie 1 et le témoin vert de la voie 3 soient commandées ensembles : tous les deux allumés, ou tous les deux éteints. Il en va de même pour les témoins jaunes ainsi que pour les témoins rouges de ces deux voies. Les voies 2 et 4 sont couplées de la même façon.
Chaque voie est munie d'un passage réservé aux piétons protégé par deux signalisations Vip et Rip (i=1,2,3 ou 4). Lorsque les véhicules détiennent le contrôle des voies tous les voyants rouges piétons sont allumés. Un bouton-poussoir permet aux piétons de lancer une demande pour prendre le contrôle des voies. Une temporisation de 5 secondes est déclenchée, suite à laquelle tous les voyants rouges des 4 voies destinées aux voitures passent au rouge et les voyants verts destinés aux piétons passent au vert.
Ce cycle dure pendant 15 secondes. Les feux verts piétons clignotent alors 5 fois pendant 5 secondes. Puis le cycle de passage de véhicules reprend dans l'ordre des voies : 1, 2, 3, 4.
Un deuxième bouton-poussoir est prévu pour lancer le fonctionnement en mode clignotant des voyants oranges des 4 voies. Ce fonctionnement est très souvent utilisé la nuit lorsque la cadence du trafic diminue.
J'ai une solution concernant le feu rouge à deux voies :
Le premier fichier est prog.c :
Code C : 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 #include "C:\feudecarr\prog.h" void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); set_tris_C(0xFF); set_tris_b(0x00); output_b(0x00); do { if (input(PIN_C0)==1) { output_B(0b10010); delay_ms(1000); output_B(0); delay_ms(1000); } else { output_b(0b100001); delay_ms(5000); output_b(0b000001); delay_ms(500); output_b(0b100001); delay_ms(500); output_b(0b000001); delay_ms(500); output_b(0b100001); delay_ms(500); output_b(0b000001); delay_ms(500); output_b(0b100001); delay_ms(500); output_b(0b010001); delay_ms(1000); output_b(0b001011); delay_ms(1000); output_b(0b001100); delay_ms(5000); output_b(0b001000); delay_ms(500); output_b(0b001100); delay_ms(500); output_b(0b001000); delay_ms(500); output_b(0b001100); delay_ms(500); output_b(0b001000); delay_ms(500); output_b(0b001100); delay_ms(1000); output_b(0b001010); delay_ms(1000); output_b(0b011001); delay_ms(1000); } } while(true); }
Le deuxième fichier est prog.h :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #include <16F877.h> #device adc=8 #use delay(clock=400000000) #fuses NOWDT,RC, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
Mais je n'arrive pas à comprendre le code. Mais il est exécutable.
Mon but est de programmer un feu rouge a 4 voies en language C avec la notion de timer.
Quelqu'un peut-il m'aider ?
Voila le code ainsi que l'image mais je veux réaliser un feu rouge a 4 voies avec le code C.
Partager