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@0:3ef421501119, 2022-06-07 (annotated)
- Committer:
- tololpez
- Date:
- Tue Jun 07 02:28:09 2022 +0000
- Revision:
- 0:3ef421501119
AtrapaLuz;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| tololpez | 0:3ef421501119 | 1 | #include "mbed.h" |
| tololpez | 0:3ef421501119 | 2 | #define CANT_LEDS 7 |
| tololpez | 0:3ef421501119 | 3 | |
| tololpez | 0:3ef421501119 | 4 | |
| tololpez | 0:3ef421501119 | 5 | BusOut Leds(PTC12,PTC13,PTC16,PTC17,PTA16,PTA17,PTE31,PTD6); |
| tololpez | 0:3ef421501119 | 6 | DigitalOut L1(PTC12); |
| tololpez | 0:3ef421501119 | 7 | DigitalOut L2(PTC13); |
| tololpez | 0:3ef421501119 | 8 | DigitalOut L3(PTC16); |
| tololpez | 0:3ef421501119 | 9 | DigitalOut L4(PTC17); |
| tololpez | 0:3ef421501119 | 10 | DigitalOut L5(PTA16); |
| tololpez | 0:3ef421501119 | 11 | DigitalOut L6(PTA17); |
| tololpez | 0:3ef421501119 | 12 | DigitalOut L7(PTE31); |
| tololpez | 0:3ef421501119 | 13 | DigitalOut L8(PTD6); |
| tololpez | 0:3ef421501119 | 14 | DigitalIn P1(PTD7); |
| tololpez | 0:3ef421501119 | 15 | DigitalIn P2(PTC7); |
| tololpez | 0:3ef421501119 | 16 | |
| tololpez | 0:3ef421501119 | 17 | DigitalOut DISPLAY1(PTE20); |
| tololpez | 0:3ef421501119 | 18 | DigitalOut A(PTE5); |
| tololpez | 0:3ef421501119 | 19 | DigitalOut B(PTE4); |
| tololpez | 0:3ef421501119 | 20 | DigitalOut C(PTE3); |
| tololpez | 0:3ef421501119 | 21 | DigitalOut D(PTE2); |
| tololpez | 0:3ef421501119 | 22 | DigitalOut E(PTB11); |
| tololpez | 0:3ef421501119 | 23 | DigitalOut F(PTB10); |
| tololpez | 0:3ef421501119 | 24 | DigitalOut G(PTB9); |
| tololpez | 0:3ef421501119 | 25 | DigitalOut DISPLAY2(PTB8); |
| tololpez | 0:3ef421501119 | 26 | |
| tololpez | 0:3ef421501119 | 27 | Ticker tick; |
| tololpez | 0:3ef421501119 | 28 | Serial pc(USBTX, USBRX); |
| tololpez | 0:3ef421501119 | 29 | void EstadoJuego(); |
| tololpez | 0:3ef421501119 | 30 | void display(int x); |
| tololpez | 0:3ef421501119 | 31 | char decenas; |
| tololpez | 0:3ef421501119 | 32 | char unidades; |
| tololpez | 0:3ef421501119 | 33 | int d[10] = {0b1111110 , 0b0110000 , 0b1101101 , 0b1111001 , 0b0110011 , 0b1011011 , 0b1011111 , 0b1110000 , 0b1111111 , 0b1111011}; |
| tololpez | 0:3ef421501119 | 34 | int tiempo=0,tiempo2=0,tiempo3=0,Estado=0,valor=0,mux_display=0; |
| tololpez | 0:3ef421501119 | 35 | int PuntajeJ1=0,PuntajeJ2=0,t1=0,LedParado,pj=0; |
| tololpez | 0:3ef421501119 | 36 | |
| tololpez | 0:3ef421501119 | 37 | void interrupcion() |
| tololpez | 0:3ef421501119 | 38 | { |
| tololpez | 0:3ef421501119 | 39 | tiempo++; |
| tololpez | 0:3ef421501119 | 40 | tiempo2++; |
| tololpez | 0:3ef421501119 | 41 | tiempo3++; |
| tololpez | 0:3ef421501119 | 42 | mux_display++; |
| tololpez | 0:3ef421501119 | 43 | |
| tololpez | 0:3ef421501119 | 44 | if(mux_display==1) |
| tololpez | 0:3ef421501119 | 45 | { |
| tololpez | 0:3ef421501119 | 46 | DISPLAY2=1; |
| tololpez | 0:3ef421501119 | 47 | display(decenas); |
| tololpez | 0:3ef421501119 | 48 | DISPLAY1=0;} |
| tololpez | 0:3ef421501119 | 49 | if(mux_display==21) |
| tololpez | 0:3ef421501119 | 50 | { |
| tololpez | 0:3ef421501119 | 51 | DISPLAY1=1; |
| tololpez | 0:3ef421501119 | 52 | display(unidades); |
| tololpez | 0:3ef421501119 | 53 | DISPLAY2=0;} |
| tololpez | 0:3ef421501119 | 54 | if(mux_display==41) |
| tololpez | 0:3ef421501119 | 55 | {mux_display=0;} |
| tololpez | 0:3ef421501119 | 56 | |
| tololpez | 0:3ef421501119 | 57 | |
| tololpez | 0:3ef421501119 | 58 | } |
| tololpez | 0:3ef421501119 | 59 | |
| tololpez | 0:3ef421501119 | 60 | int main() |
| tololpez | 0:3ef421501119 | 61 | { |
| tololpez | 0:3ef421501119 | 62 | tick.attach(&interrupcion, 0.001); // setup ticker to call flip every 0.7 seconds |
| tololpez | 0:3ef421501119 | 63 | P1.mode(PullNone); |
| tololpez | 0:3ef421501119 | 64 | P2.mode(PullNone); |
| tololpez | 0:3ef421501119 | 65 | L1=0; |
| tololpez | 0:3ef421501119 | 66 | L2=0; |
| tololpez | 0:3ef421501119 | 67 | L3=0; |
| tololpez | 0:3ef421501119 | 68 | L4=0; |
| tololpez | 0:3ef421501119 | 69 | L5=0; |
| tololpez | 0:3ef421501119 | 70 | L6=0; |
| tololpez | 0:3ef421501119 | 71 | L7=0; |
| tololpez | 0:3ef421501119 | 72 | L8=0; |
| tololpez | 0:3ef421501119 | 73 | while(1) |
| tololpez | 0:3ef421501119 | 74 | { |
| tololpez | 0:3ef421501119 | 75 | EstadoJuego(); |
| tololpez | 0:3ef421501119 | 76 | } |
| tololpez | 0:3ef421501119 | 77 | |
| tololpez | 0:3ef421501119 | 78 | |
| tololpez | 0:3ef421501119 | 79 | } |
| tololpez | 0:3ef421501119 | 80 | void EstadoJuego() |
| tololpez | 0:3ef421501119 | 81 | { |
| tololpez | 0:3ef421501119 | 82 | valor=PuntajeJ1*10+PuntajeJ2; |
| tololpez | 0:3ef421501119 | 83 | decenas = valor/10; |
| tololpez | 0:3ef421501119 | 84 | unidades = valor%10; |
| tololpez | 0:3ef421501119 | 85 | switch(Estado) |
| tololpez | 0:3ef421501119 | 86 | { |
| tololpez | 0:3ef421501119 | 87 | case 0: |
| tololpez | 0:3ef421501119 | 88 | if (tiempo>=0 && tiempo<500) |
| tololpez | 0:3ef421501119 | 89 | { |
| tololpez | 0:3ef421501119 | 90 | L1=1; |
| tololpez | 0:3ef421501119 | 91 | L2=1; |
| tololpez | 0:3ef421501119 | 92 | L3=1; |
| tololpez | 0:3ef421501119 | 93 | L4=1; |
| tololpez | 0:3ef421501119 | 94 | L5=1; |
| tololpez | 0:3ef421501119 | 95 | L6=1; |
| tololpez | 0:3ef421501119 | 96 | L7=1; |
| tololpez | 0:3ef421501119 | 97 | L8=1; |
| tololpez | 0:3ef421501119 | 98 | A=1; |
| tololpez | 0:3ef421501119 | 99 | B=1; |
| tololpez | 0:3ef421501119 | 100 | C=1; |
| tololpez | 0:3ef421501119 | 101 | D=1; |
| tololpez | 0:3ef421501119 | 102 | E=1; |
| tololpez | 0:3ef421501119 | 103 | F=1; |
| tololpez | 0:3ef421501119 | 104 | G=1;} |
| tololpez | 0:3ef421501119 | 105 | if(tiempo>=501 && tiempo<1000) |
| tololpez | 0:3ef421501119 | 106 | { |
| tololpez | 0:3ef421501119 | 107 | L1=0; |
| tololpez | 0:3ef421501119 | 108 | L2=0; |
| tololpez | 0:3ef421501119 | 109 | L3=0; |
| tololpez | 0:3ef421501119 | 110 | L4=0; |
| tololpez | 0:3ef421501119 | 111 | L5=0; |
| tololpez | 0:3ef421501119 | 112 | L6=0; |
| tololpez | 0:3ef421501119 | 113 | L7=0; |
| tololpez | 0:3ef421501119 | 114 | L8=0; |
| tololpez | 0:3ef421501119 | 115 | A=0; |
| tololpez | 0:3ef421501119 | 116 | B=0; |
| tololpez | 0:3ef421501119 | 117 | C=0; |
| tololpez | 0:3ef421501119 | 118 | D=0; |
| tololpez | 0:3ef421501119 | 119 | E=0; |
| tololpez | 0:3ef421501119 | 120 | F=0; |
| tololpez | 0:3ef421501119 | 121 | G=0;} |
| tololpez | 0:3ef421501119 | 122 | if(tiempo==1001) |
| tololpez | 0:3ef421501119 | 123 | {tiempo=0;} |
| tololpez | 0:3ef421501119 | 124 | if(P1==1 && P2==1) |
| tololpez | 0:3ef421501119 | 125 | { |
| tololpez | 0:3ef421501119 | 126 | tiempo=0; |
| tololpez | 0:3ef421501119 | 127 | tiempo3=0; |
| tololpez | 0:3ef421501119 | 128 | Estado=1; |
| tololpez | 0:3ef421501119 | 129 | } |
| tololpez | 0:3ef421501119 | 130 | break; |
| tololpez | 0:3ef421501119 | 131 | |
| tololpez | 0:3ef421501119 | 132 | case 1: |
| tololpez | 0:3ef421501119 | 133 | pj=0; |
| tololpez | 0:3ef421501119 | 134 | if(tiempo>=0 && tiempo<99) |
| tololpez | 0:3ef421501119 | 135 | { |
| tololpez | 0:3ef421501119 | 136 | L2=0; |
| tololpez | 0:3ef421501119 | 137 | L1=1;} |
| tololpez | 0:3ef421501119 | 138 | |
| tololpez | 0:3ef421501119 | 139 | if(tiempo>=100 && tiempo <199) |
| tololpez | 0:3ef421501119 | 140 | { |
| tololpez | 0:3ef421501119 | 141 | L1=0; |
| tololpez | 0:3ef421501119 | 142 | L2=1;} |
| tololpez | 0:3ef421501119 | 143 | |
| tololpez | 0:3ef421501119 | 144 | if(tiempo>=200 && tiempo<299) |
| tololpez | 0:3ef421501119 | 145 | { |
| tololpez | 0:3ef421501119 | 146 | L2=0; |
| tololpez | 0:3ef421501119 | 147 | L3=1;} |
| tololpez | 0:3ef421501119 | 148 | |
| tololpez | 0:3ef421501119 | 149 | if(tiempo>=300 && tiempo<399) |
| tololpez | 0:3ef421501119 | 150 | { |
| tololpez | 0:3ef421501119 | 151 | L3=0; |
| tololpez | 0:3ef421501119 | 152 | L4=1;} |
| tololpez | 0:3ef421501119 | 153 | if(tiempo>=400 && tiempo<499) |
| tololpez | 0:3ef421501119 | 154 | { |
| tololpez | 0:3ef421501119 | 155 | L4=0; |
| tololpez | 0:3ef421501119 | 156 | L5=1;} |
| tololpez | 0:3ef421501119 | 157 | if(tiempo>=500 && tiempo<599) |
| tololpez | 0:3ef421501119 | 158 | { |
| tololpez | 0:3ef421501119 | 159 | L5=0; |
| tololpez | 0:3ef421501119 | 160 | L6=1;} |
| tololpez | 0:3ef421501119 | 161 | if(tiempo>=600 && tiempo<699) |
| tololpez | 0:3ef421501119 | 162 | { |
| tololpez | 0:3ef421501119 | 163 | L6=0; |
| tololpez | 0:3ef421501119 | 164 | L7=1;} |
| tololpez | 0:3ef421501119 | 165 | if(tiempo>=700 && tiempo<799) |
| tololpez | 0:3ef421501119 | 166 | { |
| tololpez | 0:3ef421501119 | 167 | L7=0; |
| tololpez | 0:3ef421501119 | 168 | L8=1;} |
| tololpez | 0:3ef421501119 | 169 | if(tiempo>=800 && tiempo<899) |
| tololpez | 0:3ef421501119 | 170 | { |
| tololpez | 0:3ef421501119 | 171 | L8=0; |
| tololpez | 0:3ef421501119 | 172 | L7=1;} |
| tololpez | 0:3ef421501119 | 173 | if(tiempo>=900 && tiempo<999) |
| tololpez | 0:3ef421501119 | 174 | { |
| tololpez | 0:3ef421501119 | 175 | L7=0; |
| tololpez | 0:3ef421501119 | 176 | L6=1;} |
| tololpez | 0:3ef421501119 | 177 | if(tiempo>=1000 && tiempo<1099) |
| tololpez | 0:3ef421501119 | 178 | { |
| tololpez | 0:3ef421501119 | 179 | L6=0; |
| tololpez | 0:3ef421501119 | 180 | L5=1;} |
| tololpez | 0:3ef421501119 | 181 | if(tiempo>=1100 && tiempo<1199) |
| tololpez | 0:3ef421501119 | 182 | { |
| tololpez | 0:3ef421501119 | 183 | L5=0; |
| tololpez | 0:3ef421501119 | 184 | L4=1;} |
| tololpez | 0:3ef421501119 | 185 | if(tiempo>=1200 && tiempo<1299) |
| tololpez | 0:3ef421501119 | 186 | { |
| tololpez | 0:3ef421501119 | 187 | L4=0; |
| tololpez | 0:3ef421501119 | 188 | L3=1;} |
| tololpez | 0:3ef421501119 | 189 | if(tiempo>=1300 && tiempo<1399) |
| tololpez | 0:3ef421501119 | 190 | { |
| tololpez | 0:3ef421501119 | 191 | L3=0; |
| tololpez | 0:3ef421501119 | 192 | L2=1;} |
| tololpez | 0:3ef421501119 | 193 | if(tiempo==1400 ) |
| tololpez | 0:3ef421501119 | 194 | { |
| tololpez | 0:3ef421501119 | 195 | tiempo=0;} |
| tololpez | 0:3ef421501119 | 196 | if(tiempo3>=2000) |
| tololpez | 0:3ef421501119 | 197 | { |
| tololpez | 0:3ef421501119 | 198 | for(int i=0;i<=7;i++) |
| tololpez | 0:3ef421501119 | 199 | { |
| tololpez | 0:3ef421501119 | 200 | if(P1==1 || P2==1) |
| tololpez | 0:3ef421501119 | 201 | { |
| tololpez | 0:3ef421501119 | 202 | t1=tiempo; |
| tololpez | 0:3ef421501119 | 203 | if(Leds[i]==1){ |
| tololpez | 0:3ef421501119 | 204 | LedParado=i; |
| tololpez | 0:3ef421501119 | 205 | tiempo2=0;} |
| tololpez | 0:3ef421501119 | 206 | Estado=2;} |
| tololpez | 0:3ef421501119 | 207 | } |
| tololpez | 0:3ef421501119 | 208 | if(P1==1 && L1==1) |
| tololpez | 0:3ef421501119 | 209 | { |
| tololpez | 0:3ef421501119 | 210 | t1=tiempo; |
| tololpez | 0:3ef421501119 | 211 | LedParado=0; |
| tololpez | 0:3ef421501119 | 212 | PuntajeJ1++; |
| tololpez | 0:3ef421501119 | 213 | tiempo2=0; |
| tololpez | 0:3ef421501119 | 214 | pj=1; |
| tololpez | 0:3ef421501119 | 215 | Estado=2;} |
| tololpez | 0:3ef421501119 | 216 | |
| tololpez | 0:3ef421501119 | 217 | if(P2==1 && L8==1) |
| tololpez | 0:3ef421501119 | 218 | { |
| tololpez | 0:3ef421501119 | 219 | t1=tiempo; |
| tololpez | 0:3ef421501119 | 220 | LedParado=7; |
| tololpez | 0:3ef421501119 | 221 | PuntajeJ2++; |
| tololpez | 0:3ef421501119 | 222 | tiempo2=0; |
| tololpez | 0:3ef421501119 | 223 | pj=1; |
| tololpez | 0:3ef421501119 | 224 | Estado=2;} |
| tololpez | 0:3ef421501119 | 225 | } |
| tololpez | 0:3ef421501119 | 226 | break; |
| tololpez | 0:3ef421501119 | 227 | |
| tololpez | 0:3ef421501119 | 228 | case 2: |
| tololpez | 0:3ef421501119 | 229 | |
| tololpez | 0:3ef421501119 | 230 | for(int i=0;i<=7;i++) |
| tololpez | 0:3ef421501119 | 231 | { |
| tololpez | 0:3ef421501119 | 232 | Leds[i]==0; |
| tololpez | 0:3ef421501119 | 233 | } |
| tololpez | 0:3ef421501119 | 234 | if(tiempo2>=0 && tiempo2<2001) |
| tololpez | 0:3ef421501119 | 235 | { |
| tololpez | 0:3ef421501119 | 236 | Leds[LedParado]=1;} |
| tololpez | 0:3ef421501119 | 237 | if(tiempo2>=2001) |
| tololpez | 0:3ef421501119 | 238 | { |
| tololpez | 0:3ef421501119 | 239 | Leds[LedParado]=0; |
| tololpez | 0:3ef421501119 | 240 | tiempo=t1; |
| tololpez | 0:3ef421501119 | 241 | Estado=1; |
| tololpez | 0:3ef421501119 | 242 | } |
| tololpez | 0:3ef421501119 | 243 | if(pj==1) |
| tololpez | 0:3ef421501119 | 244 | { |
| tololpez | 0:3ef421501119 | 245 | pc.printf("Puntaje J1: %d\n",PuntajeJ1); |
| tololpez | 0:3ef421501119 | 246 | pc.printf("Puntaje J2: %d\n",PuntajeJ2);} |
| tololpez | 0:3ef421501119 | 247 | pj=0; |
| tololpez | 0:3ef421501119 | 248 | if(PuntajeJ1==5) |
| tololpez | 0:3ef421501119 | 249 | { |
| tololpez | 0:3ef421501119 | 250 | pc.printf("Partida Terminada, Jugador 1 Gana\n"); |
| tololpez | 0:3ef421501119 | 251 | tiempo2=0; |
| tololpez | 0:3ef421501119 | 252 | Estado=3;} |
| tololpez | 0:3ef421501119 | 253 | if(PuntajeJ2==5) |
| tololpez | 0:3ef421501119 | 254 | { |
| tololpez | 0:3ef421501119 | 255 | pc.printf("Partida Terminada, Jugador 2 Gana\n"); |
| tololpez | 0:3ef421501119 | 256 | tiempo2=0; |
| tololpez | 0:3ef421501119 | 257 | Estado=3;} |
| tololpez | 0:3ef421501119 | 258 | break; |
| tololpez | 0:3ef421501119 | 259 | case 3: |
| tololpez | 0:3ef421501119 | 260 | if(PuntajeJ1==5 || PuntajeJ2==5) |
| tololpez | 0:3ef421501119 | 261 | { |
| tololpez | 0:3ef421501119 | 262 | tiempo=0; |
| tololpez | 0:3ef421501119 | 263 | if (tiempo>=0 && tiempo<200) |
| tololpez | 0:3ef421501119 | 264 | { |
| tololpez | 0:3ef421501119 | 265 | L1=1; |
| tololpez | 0:3ef421501119 | 266 | L2=1; |
| tololpez | 0:3ef421501119 | 267 | L3=1; |
| tololpez | 0:3ef421501119 | 268 | L4=1; |
| tololpez | 0:3ef421501119 | 269 | L5=1; |
| tololpez | 0:3ef421501119 | 270 | L6=1; |
| tololpez | 0:3ef421501119 | 271 | L7=1; |
| tololpez | 0:3ef421501119 | 272 | L8=1; |
| tololpez | 0:3ef421501119 | 273 | } |
| tololpez | 0:3ef421501119 | 274 | if(tiempo>=201 && tiempo<400) |
| tololpez | 0:3ef421501119 | 275 | { |
| tololpez | 0:3ef421501119 | 276 | L1=0; |
| tololpez | 0:3ef421501119 | 277 | L2=0; |
| tololpez | 0:3ef421501119 | 278 | L3=0; |
| tololpez | 0:3ef421501119 | 279 | L4=0; |
| tololpez | 0:3ef421501119 | 280 | L5=0; |
| tololpez | 0:3ef421501119 | 281 | L6=0; |
| tololpez | 0:3ef421501119 | 282 | L7=0; |
| tololpez | 0:3ef421501119 | 283 | L8=0;} |
| tololpez | 0:3ef421501119 | 284 | if(tiempo==401) |
| tololpez | 0:3ef421501119 | 285 | {tiempo=0;} |
| tololpez | 0:3ef421501119 | 286 | if(tiempo2>=1000) |
| tololpez | 0:3ef421501119 | 287 | { |
| tololpez | 0:3ef421501119 | 288 | if(PuntajeJ1==5) |
| tololpez | 0:3ef421501119 | 289 | { |
| tololpez | 0:3ef421501119 | 290 | if(P1==1) |
| tololpez | 0:3ef421501119 | 291 | { |
| tololpez | 0:3ef421501119 | 292 | PuntajeJ1=0; |
| tololpez | 0:3ef421501119 | 293 | PuntajeJ2=0; |
| tololpez | 0:3ef421501119 | 294 | Estado=0;}} |
| tololpez | 0:3ef421501119 | 295 | if(PuntajeJ2==5) |
| tololpez | 0:3ef421501119 | 296 | { |
| tololpez | 0:3ef421501119 | 297 | if(P2==1) |
| tololpez | 0:3ef421501119 | 298 | { |
| tololpez | 0:3ef421501119 | 299 | PuntajeJ1=0; |
| tololpez | 0:3ef421501119 | 300 | PuntajeJ2=0; |
| tololpez | 0:3ef421501119 | 301 | Estado=0;}}} |
| tololpez | 0:3ef421501119 | 302 | if(tiempo2>=10000) |
| tololpez | 0:3ef421501119 | 303 | { |
| tololpez | 0:3ef421501119 | 304 | PuntajeJ1=0; |
| tololpez | 0:3ef421501119 | 305 | PuntajeJ2=0; |
| tololpez | 0:3ef421501119 | 306 | Estado=0;}} |
| tololpez | 0:3ef421501119 | 307 | break;}} |
| tololpez | 0:3ef421501119 | 308 | |
| tololpez | 0:3ef421501119 | 309 | void display(int x) |
| tololpez | 0:3ef421501119 | 310 | { |
| tololpez | 0:3ef421501119 | 311 | A= (d[x] & 0b1000000)>>6; |
| tololpez | 0:3ef421501119 | 312 | B= (d[x] & 0b100000)>>5; |
| tololpez | 0:3ef421501119 | 313 | C= (d[x] & 0b10000)>>4; |
| tololpez | 0:3ef421501119 | 314 | D= (d[x] & 0b1000)>>3; |
| tololpez | 0:3ef421501119 | 315 | E= (d[x] & 0b100)>>2; |
| tololpez | 0:3ef421501119 | 316 | F= (d[x] & 0b10)>>1; |
| tololpez | 0:3ef421501119 | 317 | G= (d[x] & 1);} |
| tololpez | 0:3ef421501119 | 318 | |
| tololpez | 0:3ef421501119 | 319 | |
| tololpez | 0:3ef421501119 | 320 | |
| tololpez | 0:3ef421501119 | 321 |