Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@7:f9a7d4c88daa, 2020-05-04 (annotated)
- Committer:
- jdeschamps
- Date:
- Mon May 04 15:00:29 2020 +0000
- Revision:
- 7:f9a7d4c88daa
- Parent:
- 6:9194379d2fdc
- Child:
- 8:bef8456b1b31
projetv2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dg81 | 0:b5c75bc6000e | 1 | #include "mbed.h" |
jdeschamps | 5:0d73e455922a | 2 | #include "string.h" |
jdeschamps | 1:8e1033a40696 | 3 | Serial pc(USBTX, USBRX,9600); // tx, rx sur les broches associées au bus USB |
dg81 | 0:b5c75bc6000e | 4 | DigitalOut led1(LED1); |
jdeschamps | 1:8e1033a40696 | 5 | DigitalOut brka (PTC4); |
jdeschamps | 1:8e1033a40696 | 6 | DigitalOut brkb (PTC12); |
jdeschamps | 1:8e1033a40696 | 7 | DigitalOut dira (PTD3); |
jdeschamps | 1:8e1033a40696 | 8 | DigitalOut dirb (PTD1); |
jdeschamps | 2:53d8e05db3d9 | 9 | DigitalOut pwma (PTD2); |
jdeschamps | 5:0d73e455922a | 10 | InterruptIn sw3 (PTA4); |
jdeschamps | 5:0d73e455922a | 11 | InterruptIn sw2 (PTC6); |
jdeschamps | 1:8e1033a40696 | 12 | |
jdeschamps | 2:53d8e05db3d9 | 13 | char pas=1; |
jdeschamps | 2:53d8e05db3d9 | 14 | bool sens=0; |
jdeschamps | 4:2054aa78f3fd | 15 | bool F; |
jdeschamps | 2:53d8e05db3d9 | 16 | unsigned int compteur=0; |
jdeschamps | 2:53d8e05db3d9 | 17 | char message[30]; |
jdeschamps | 5:0d73e455922a | 18 | int err; |
jdeschamps | 5:0d73e455922a | 19 | int i=0; |
jdeschamps | 5:0d73e455922a | 20 | int o=0; |
dg81 | 0:b5c75bc6000e | 21 | Ticker mon_IT; // on associe l'interface Timeout à l'objet mon_IT |
dg81 | 0:b5c75bc6000e | 22 | |
jdeschamps | 5:0d73e455922a | 23 | void Interruption_KBI1() { |
jdeschamps | 5:0d73e455922a | 24 | i++; |
jdeschamps | 5:0d73e455922a | 25 | printf("La valeur de i est de : %d \n", i); |
jdeschamps | 5:0d73e455922a | 26 | pwma=0; |
jdeschamps | 5:0d73e455922a | 27 | } |
jdeschamps | 5:0d73e455922a | 28 | |
jdeschamps | 5:0d73e455922a | 29 | void Interruption_KBI2() { |
jdeschamps | 5:0d73e455922a | 30 | o++; |
jdeschamps | 5:0d73e455922a | 31 | printf("La valeur de o est de : %d \n", o); |
jdeschamps | 5:0d73e455922a | 32 | pwma=0; |
jdeschamps | 5:0d73e455922a | 33 | printf("Le nombre de pas est de : %d \n", compteur); |
jdeschamps | 7:f9a7d4c88daa | 34 | } |
jdeschamps | 7:f9a7d4c88daa | 35 | |
dg81 | 0:b5c75bc6000e | 36 | void Interruption_timer() { |
jdeschamps | 6:9194379d2fdc | 37 | if(sens==0) |
jdeschamps | 2:53d8e05db3d9 | 38 | { |
jdeschamps | 2:53d8e05db3d9 | 39 | pas++; |
jdeschamps | 2:53d8e05db3d9 | 40 | compteur++; |
jdeschamps | 2:53d8e05db3d9 | 41 | if(pas>8)pas=1; |
jdeschamps | 2:53d8e05db3d9 | 42 | } |
jdeschamps | 2:53d8e05db3d9 | 43 | if(sens==1) |
jdeschamps | 2:53d8e05db3d9 | 44 | { |
jdeschamps | 2:53d8e05db3d9 | 45 | pas--; |
jdeschamps | 2:53d8e05db3d9 | 46 | compteur--; |
jdeschamps | 2:53d8e05db3d9 | 47 | if(pas<1)pas=8; |
jdeschamps | 2:53d8e05db3d9 | 48 | } |
jdeschamps | 2:53d8e05db3d9 | 49 | if(compteur<=0){ |
jdeschamps | 5:0d73e455922a | 50 | pwma=0; |
jdeschamps | 4:2054aa78f3fd | 51 | F=1; |
jdeschamps | 2:53d8e05db3d9 | 52 | } |
jdeschamps | 2:53d8e05db3d9 | 53 | switch (pas) |
jdeschamps | 2:53d8e05db3d9 | 54 | { |
jdeschamps | 2:53d8e05db3d9 | 55 | case 1: |
jdeschamps | 2:53d8e05db3d9 | 56 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 57 | dira=1; |
jdeschamps | 2:53d8e05db3d9 | 58 | brkb=1; |
jdeschamps | 2:53d8e05db3d9 | 59 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 60 | break; |
jdeschamps | 2:53d8e05db3d9 | 61 | case 2: |
jdeschamps | 2:53d8e05db3d9 | 62 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 63 | dira=1; |
jdeschamps | 2:53d8e05db3d9 | 64 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 65 | dirb=1; |
jdeschamps | 2:53d8e05db3d9 | 66 | break; |
jdeschamps | 2:53d8e05db3d9 | 67 | case 3: |
jdeschamps | 2:53d8e05db3d9 | 68 | brka=1; |
jdeschamps | 2:53d8e05db3d9 | 69 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 70 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 71 | dirb=1; |
jdeschamps | 2:53d8e05db3d9 | 72 | break; |
jdeschamps | 2:53d8e05db3d9 | 73 | case 4: |
jdeschamps | 2:53d8e05db3d9 | 74 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 75 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 76 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 77 | dirb=1; |
jdeschamps | 2:53d8e05db3d9 | 78 | break; |
jdeschamps | 2:53d8e05db3d9 | 79 | case 5: |
jdeschamps | 2:53d8e05db3d9 | 80 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 81 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 82 | brkb=1; |
jdeschamps | 2:53d8e05db3d9 | 83 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 84 | break; |
jdeschamps | 2:53d8e05db3d9 | 85 | case 6: |
jdeschamps | 2:53d8e05db3d9 | 86 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 87 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 88 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 89 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 90 | break; |
jdeschamps | 2:53d8e05db3d9 | 91 | case 7: |
jdeschamps | 2:53d8e05db3d9 | 92 | brka=1; |
jdeschamps | 2:53d8e05db3d9 | 93 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 94 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 95 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 96 | break; |
jdeschamps | 2:53d8e05db3d9 | 97 | case 8: |
jdeschamps | 2:53d8e05db3d9 | 98 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 99 | dira=1; |
jdeschamps | 2:53d8e05db3d9 | 100 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 101 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 102 | break; |
jdeschamps | 2:53d8e05db3d9 | 103 | default: |
jdeschamps | 2:53d8e05db3d9 | 104 | break; |
jdeschamps | 2:53d8e05db3d9 | 105 | } |
dg81 | 0:b5c75bc6000e | 106 | } |
dg81 | 0:b5c75bc6000e | 107 | |
dg81 | 0:b5c75bc6000e | 108 | int main(void) |
dg81 | 0:b5c75bc6000e | 109 | { |
dg81 | 0:b5c75bc6000e | 110 | mon_IT.attach(&Interruption_timer,0.5); // l'interruption est associée au programme Interruption_timer et s'exécute toutes les 0.5s |
dg81 | 0:b5c75bc6000e | 111 | // pour stopper mon_IT.detach(); |
jdeschamps | 5:0d73e455922a | 112 | sw3.rise(&Interruption_KBI1); |
jdeschamps | 7:f9a7d4c88daa | 113 | sw2.rise(&Interruption_KBI2); |
dg81 | 0:b5c75bc6000e | 114 | while(1) |
jdeschamps | 2:53d8e05db3d9 | 115 | { |
jdeschamps | 2:53d8e05db3d9 | 116 | for(;;){ |
jdeschamps | 5:0d73e455922a | 117 | |
jdeschamps | 5:0d73e455922a | 118 | if (pc.readable()){ |
jdeschamps | 5:0d73e455922a | 119 | err=pc.scanf("%s",message); |
jdeschamps | 5:0d73e455922a | 120 | |
jdeschamps | 5:0d73e455922a | 121 | if(strcmp(message,"monte_v1")==0) |
jdeschamps | 2:53d8e05db3d9 | 122 | { |
jdeschamps | 2:53d8e05db3d9 | 123 | sens=0; // marche avant |
jdeschamps | 2:53d8e05db3d9 | 124 | pwma=1; |
jdeschamps | 2:53d8e05db3d9 | 125 | } |
jdeschamps | 5:0d73e455922a | 126 | |
jdeschamps | 2:53d8e05db3d9 | 127 | else if(strcmp(message,"descend_v1")==0) |
jdeschamps | 2:53d8e05db3d9 | 128 | { |
jdeschamps | 2:53d8e05db3d9 | 129 | sens=1; // marche arriere |
jdeschamps | 2:53d8e05db3d9 | 130 | pwma=1; |
jdeschamps | 5:0d73e455922a | 131 | } |
jdeschamps | 5:0d73e455922a | 132 | |
jdeschamps | 5:0d73e455922a | 133 | else if(strcmp(message,"stop")==0) |
jdeschamps | 5:0d73e455922a | 134 | { |
jdeschamps | 5:0d73e455922a | 135 | pwma=0; |
jdeschamps | 5:0d73e455922a | 136 | |
jdeschamps | 5:0d73e455922a | 137 | } |
jdeschamps | 5:0d73e455922a | 138 | |
jdeschamps | 5:0d73e455922a | 139 | if (F==1) |
jdeschamps | 5:0d73e455922a | 140 | { |
jdeschamps | 5:0d73e455922a | 141 | printf("Fin de course"); |
jdeschamps | 5:0d73e455922a | 142 | F=0; |
jdeschamps | 5:0d73e455922a | 143 | } |
jdeschamps | 3:fb15a9d24ccf | 144 | } |
dg81 | 0:b5c75bc6000e | 145 | } |
jdeschamps | 5:0d73e455922a | 146 | } |
jdeschamps | 5:0d73e455922a | 147 | } |