Joaquín López
/
TP1_PUNTO2
Punto 2 del TP1: AMI
main.cpp@0:559e1fcef2f4, 2018-05-31 (annotated)
- Committer:
- Joacolopez22
- Date:
- Thu May 31 14:10:20 2018 +0000
- Revision:
- 0:559e1fcef2f4
- Child:
- 1:4ca7086e337b
Punto 2 del TP1: AMI;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Joacolopez22 | 0:559e1fcef2f4 | 1 | #include "mbed.h" |
Joacolopez22 | 0:559e1fcef2f4 | 2 | |
Joacolopez22 | 0:559e1fcef2f4 | 3 | AnalogOut salida(PTE30); |
Joacolopez22 | 0:559e1fcef2f4 | 4 | DigitalOut IN (PTC0); |
Joacolopez22 | 0:559e1fcef2f4 | 5 | Ticker temporizador; |
Joacolopez22 | 0:559e1fcef2f4 | 6 | |
Joacolopez22 | 0:559e1fcef2f4 | 7 | enum {PRE_UNO_POSITIVO, UNO_POSITIVO, PRE_UNO_NEGATIVO, UNO_NEGATIVO}; |
Joacolopez22 | 0:559e1fcef2f4 | 8 | |
Joacolopez22 | 0:559e1fcef2f4 | 9 | void maq_AMI(int a); |
Joacolopez22 | 0:559e1fcef2f4 | 10 | void timer (void); |
Joacolopez22 | 0:559e1fcef2f4 | 11 | |
Joacolopez22 | 0:559e1fcef2f4 | 12 | int entrada[16]= {0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,1}; |
Joacolopez22 | 0:559e1fcef2f4 | 13 | int estado = PRE_UNO_POSITIVO; |
Joacolopez22 | 0:559e1fcef2f4 | 14 | int n=0; |
Joacolopez22 | 0:559e1fcef2f4 | 15 | int timeout = 0; |
Joacolopez22 | 0:559e1fcef2f4 | 16 | |
Joacolopez22 | 0:559e1fcef2f4 | 17 | int main() |
Joacolopez22 | 0:559e1fcef2f4 | 18 | { |
Joacolopez22 | 0:559e1fcef2f4 | 19 | temporizador.attach(&timer,0.001); |
Joacolopez22 | 0:559e1fcef2f4 | 20 | salida = 0.5; |
Joacolopez22 | 0:559e1fcef2f4 | 21 | |
Joacolopez22 | 0:559e1fcef2f4 | 22 | while(1) { |
Joacolopez22 | 0:559e1fcef2f4 | 23 | maq_AMI(entrada[n]); |
Joacolopez22 | 0:559e1fcef2f4 | 24 | } |
Joacolopez22 | 0:559e1fcef2f4 | 25 | } |
Joacolopez22 | 0:559e1fcef2f4 | 26 | |
Joacolopez22 | 0:559e1fcef2f4 | 27 | void maq_AMI(int a) |
Joacolopez22 | 0:559e1fcef2f4 | 28 | { |
Joacolopez22 | 0:559e1fcef2f4 | 29 | if (n == 18) { |
Joacolopez22 | 0:559e1fcef2f4 | 30 | salida = 0.5; |
Joacolopez22 | 0:559e1fcef2f4 | 31 | return; |
Joacolopez22 | 0:559e1fcef2f4 | 32 | } |
Joacolopez22 | 0:559e1fcef2f4 | 33 | if(timeout > 0) { |
Joacolopez22 | 0:559e1fcef2f4 | 34 | return; |
Joacolopez22 | 0:559e1fcef2f4 | 35 | } |
Joacolopez22 | 0:559e1fcef2f4 | 36 | IN = entrada[n]; |
Joacolopez22 | 0:559e1fcef2f4 | 37 | |
Joacolopez22 | 0:559e1fcef2f4 | 38 | switch(estado) { |
Joacolopez22 | 0:559e1fcef2f4 | 39 | default: |
Joacolopez22 | 0:559e1fcef2f4 | 40 | case PRE_UNO_POSITIVO: |
Joacolopez22 | 0:559e1fcef2f4 | 41 | salida = 0.5; |
Joacolopez22 | 0:559e1fcef2f4 | 42 | if(a == 1) { |
Joacolopez22 | 0:559e1fcef2f4 | 43 | estado = UNO_POSITIVO; |
Joacolopez22 | 0:559e1fcef2f4 | 44 | } |
Joacolopez22 | 0:559e1fcef2f4 | 45 | break; |
Joacolopez22 | 0:559e1fcef2f4 | 46 | case UNO_POSITIVO: |
Joacolopez22 | 0:559e1fcef2f4 | 47 | salida = 1; |
Joacolopez22 | 0:559e1fcef2f4 | 48 | if (a == 1) { |
Joacolopez22 | 0:559e1fcef2f4 | 49 | estado = UNO_NEGATIVO; |
Joacolopez22 | 0:559e1fcef2f4 | 50 | } |
Joacolopez22 | 0:559e1fcef2f4 | 51 | if (a == 0) { |
Joacolopez22 | 0:559e1fcef2f4 | 52 | estado = PRE_UNO_NEGATIVO; |
Joacolopez22 | 0:559e1fcef2f4 | 53 | } |
Joacolopez22 | 0:559e1fcef2f4 | 54 | break; |
Joacolopez22 | 0:559e1fcef2f4 | 55 | case UNO_NEGATIVO: |
Joacolopez22 | 0:559e1fcef2f4 | 56 | salida = 0; |
Joacolopez22 | 0:559e1fcef2f4 | 57 | if (a == 1) { |
Joacolopez22 | 0:559e1fcef2f4 | 58 | estado = UNO_POSITIVO; |
Joacolopez22 | 0:559e1fcef2f4 | 59 | } |
Joacolopez22 | 0:559e1fcef2f4 | 60 | if (a == 0) { |
Joacolopez22 | 0:559e1fcef2f4 | 61 | estado = PRE_UNO_POSITIVO; |
Joacolopez22 | 0:559e1fcef2f4 | 62 | } |
Joacolopez22 | 0:559e1fcef2f4 | 63 | break; |
Joacolopez22 | 0:559e1fcef2f4 | 64 | case PRE_UNO_NEGATIVO: |
Joacolopez22 | 0:559e1fcef2f4 | 65 | salida = 0.5; |
Joacolopez22 | 0:559e1fcef2f4 | 66 | if (a == 1) { |
Joacolopez22 | 0:559e1fcef2f4 | 67 | estado = UNO_NEGATIVO; |
Joacolopez22 | 0:559e1fcef2f4 | 68 | } |
Joacolopez22 | 0:559e1fcef2f4 | 69 | break; |
Joacolopez22 | 0:559e1fcef2f4 | 70 | } |
Joacolopez22 | 0:559e1fcef2f4 | 71 | timeout = 100; |
Joacolopez22 | 0:559e1fcef2f4 | 72 | n++; |
Joacolopez22 | 0:559e1fcef2f4 | 73 | } |
Joacolopez22 | 0:559e1fcef2f4 | 74 | |
Joacolopez22 | 0:559e1fcef2f4 | 75 | void timer (void) |
Joacolopez22 | 0:559e1fcef2f4 | 76 | { |
Joacolopez22 | 0:559e1fcef2f4 | 77 | if (timeout >0) |
Joacolopez22 | 0:559e1fcef2f4 | 78 | timeout--; |
Joacolopez22 | 0:559e1fcef2f4 | 79 | } |
Joacolopez22 | 0:559e1fcef2f4 | 80 |