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.
main.cpp@5:0d73e455922a, 2020-05-04 (annotated)
- Committer:
- jdeschamps
- Date:
- Mon May 04 14:40:43 2020 +0000
- Revision:
- 5:0d73e455922a
- Parent:
- 4:2054aa78f3fd
projetv1
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 | 5:0d73e455922a | 34 | |
dg81 | 0:b5c75bc6000e | 35 | void Interruption_timer() { |
jdeschamps | 2:53d8e05db3d9 | 36 | if(sens==0) |
jdeschamps | 2:53d8e05db3d9 | 37 | { |
jdeschamps | 2:53d8e05db3d9 | 38 | pas++; |
jdeschamps | 2:53d8e05db3d9 | 39 | compteur++; |
jdeschamps | 2:53d8e05db3d9 | 40 | if(pas>8)pas=1; |
jdeschamps | 2:53d8e05db3d9 | 41 | } |
jdeschamps | 2:53d8e05db3d9 | 42 | if(sens==1) |
jdeschamps | 2:53d8e05db3d9 | 43 | { |
jdeschamps | 2:53d8e05db3d9 | 44 | pas--; |
jdeschamps | 2:53d8e05db3d9 | 45 | compteur--; |
jdeschamps | 2:53d8e05db3d9 | 46 | if(pas<1)pas=8; |
jdeschamps | 2:53d8e05db3d9 | 47 | } |
jdeschamps | 2:53d8e05db3d9 | 48 | if(compteur<=0){ |
jdeschamps | 5:0d73e455922a | 49 | pwma=0; |
jdeschamps | 4:2054aa78f3fd | 50 | F=1; |
jdeschamps | 2:53d8e05db3d9 | 51 | } |
jdeschamps | 2:53d8e05db3d9 | 52 | switch (pas) |
jdeschamps | 2:53d8e05db3d9 | 53 | { |
jdeschamps | 2:53d8e05db3d9 | 54 | case 1: |
jdeschamps | 2:53d8e05db3d9 | 55 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 56 | dira=1; |
jdeschamps | 2:53d8e05db3d9 | 57 | brkb=1; |
jdeschamps | 2:53d8e05db3d9 | 58 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 59 | break; |
jdeschamps | 2:53d8e05db3d9 | 60 | case 2: |
jdeschamps | 2:53d8e05db3d9 | 61 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 62 | dira=1; |
jdeschamps | 2:53d8e05db3d9 | 63 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 64 | dirb=1; |
jdeschamps | 2:53d8e05db3d9 | 65 | break; |
jdeschamps | 2:53d8e05db3d9 | 66 | case 3: |
jdeschamps | 2:53d8e05db3d9 | 67 | brka=1; |
jdeschamps | 2:53d8e05db3d9 | 68 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 69 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 70 | dirb=1; |
jdeschamps | 2:53d8e05db3d9 | 71 | break; |
jdeschamps | 2:53d8e05db3d9 | 72 | case 4: |
jdeschamps | 2:53d8e05db3d9 | 73 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 74 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 75 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 76 | dirb=1; |
jdeschamps | 2:53d8e05db3d9 | 77 | break; |
jdeschamps | 2:53d8e05db3d9 | 78 | case 5: |
jdeschamps | 2:53d8e05db3d9 | 79 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 80 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 81 | brkb=1; |
jdeschamps | 2:53d8e05db3d9 | 82 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 83 | break; |
jdeschamps | 2:53d8e05db3d9 | 84 | case 6: |
jdeschamps | 2:53d8e05db3d9 | 85 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 86 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 87 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 88 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 89 | break; |
jdeschamps | 2:53d8e05db3d9 | 90 | case 7: |
jdeschamps | 2:53d8e05db3d9 | 91 | brka=1; |
jdeschamps | 2:53d8e05db3d9 | 92 | dira=0; |
jdeschamps | 2:53d8e05db3d9 | 93 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 94 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 95 | break; |
jdeschamps | 2:53d8e05db3d9 | 96 | case 8: |
jdeschamps | 2:53d8e05db3d9 | 97 | brka=0; |
jdeschamps | 2:53d8e05db3d9 | 98 | dira=1; |
jdeschamps | 2:53d8e05db3d9 | 99 | brkb=0; |
jdeschamps | 2:53d8e05db3d9 | 100 | dirb=0; |
jdeschamps | 2:53d8e05db3d9 | 101 | break; |
jdeschamps | 2:53d8e05db3d9 | 102 | default: |
jdeschamps | 2:53d8e05db3d9 | 103 | break; |
jdeschamps | 2:53d8e05db3d9 | 104 | } |
dg81 | 0:b5c75bc6000e | 105 | } |
dg81 | 0:b5c75bc6000e | 106 | |
dg81 | 0:b5c75bc6000e | 107 | int main(void) |
dg81 | 0:b5c75bc6000e | 108 | { |
dg81 | 0:b5c75bc6000e | 109 | 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 | 110 | // pour stopper mon_IT.detach(); |
jdeschamps | 5:0d73e455922a | 111 | sw3.rise(&Interruption_KBI1); |
jdeschamps | 5:0d73e455922a | 112 | sw3.rise(&Interruption_KBI2); |
dg81 | 0:b5c75bc6000e | 113 | while(1) |
jdeschamps | 2:53d8e05db3d9 | 114 | { |
jdeschamps | 2:53d8e05db3d9 | 115 | for(;;){ |
jdeschamps | 5:0d73e455922a | 116 | |
jdeschamps | 5:0d73e455922a | 117 | if (pc.readable()){ |
jdeschamps | 5:0d73e455922a | 118 | err=pc.scanf("%s",message); |
jdeschamps | 5:0d73e455922a | 119 | |
jdeschamps | 5:0d73e455922a | 120 | if(strcmp(message,"monte_v1")==0) |
jdeschamps | 2:53d8e05db3d9 | 121 | { |
jdeschamps | 2:53d8e05db3d9 | 122 | sens=0; // marche avant |
jdeschamps | 2:53d8e05db3d9 | 123 | pwma=1; |
jdeschamps | 2:53d8e05db3d9 | 124 | } |
jdeschamps | 5:0d73e455922a | 125 | |
jdeschamps | 2:53d8e05db3d9 | 126 | else if(strcmp(message,"descend_v1")==0) |
jdeschamps | 2:53d8e05db3d9 | 127 | { |
jdeschamps | 2:53d8e05db3d9 | 128 | sens=1; // marche arriere |
jdeschamps | 2:53d8e05db3d9 | 129 | pwma=1; |
jdeschamps | 5:0d73e455922a | 130 | } |
jdeschamps | 5:0d73e455922a | 131 | |
jdeschamps | 5:0d73e455922a | 132 | else if(strcmp(message,"stop")==0) |
jdeschamps | 5:0d73e455922a | 133 | { |
jdeschamps | 5:0d73e455922a | 134 | pwma=0; |
jdeschamps | 5:0d73e455922a | 135 | |
jdeschamps | 5:0d73e455922a | 136 | } |
jdeschamps | 5:0d73e455922a | 137 | |
jdeschamps | 5:0d73e455922a | 138 | if (F==1) |
jdeschamps | 5:0d73e455922a | 139 | { |
jdeschamps | 5:0d73e455922a | 140 | printf("Fin de course"); |
jdeschamps | 5:0d73e455922a | 141 | F=0; |
jdeschamps | 5:0d73e455922a | 142 | } |
jdeschamps | 3:fb15a9d24ccf | 143 | } |
dg81 | 0:b5c75bc6000e | 144 | } |
jdeschamps | 5:0d73e455922a | 145 | } |
jdeschamps | 5:0d73e455922a | 146 | } |