TP1 Ej 3 Bomba Cobas, Montero

Dependencies:   mbed tsi_sensor

Committer:
cobasjuan
Date:
Wed May 22 20:58:56 2019 +0000
Revision:
0:9d8c86972a9d
Child:
1:d99665a519ed
Version 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cobasjuan 0:9d8c86972a9d 1 #include "mbed.h"
cobasjuan 0:9d8c86972a9d 2 #include "tsi_sensor.h"
cobasjuan 0:9d8c86972a9d 3
cobasjuan 0:9d8c86972a9d 4 /* This defines will be replaced by PinNames soon */
cobasjuan 0:9d8c86972a9d 5 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
cobasjuan 0:9d8c86972a9d 6 #define ELEC0 9
cobasjuan 0:9d8c86972a9d 7 #define ELEC1 10
cobasjuan 0:9d8c86972a9d 8 #elif defined (TARGET_KL05Z)
cobasjuan 0:9d8c86972a9d 9 #define ELEC0 9
cobasjuan 0:9d8c86972a9d 10 #define ELEC1 8
cobasjuan 0:9d8c86972a9d 11 #else
cobasjuan 0:9d8c86972a9d 12 #error TARGET NOT DEFINED
cobasjuan 0:9d8c86972a9d 13 #endif
cobasjuan 0:9d8c86972a9d 14
cobasjuan 0:9d8c86972a9d 15 #define ESPERO_ARRANQUE 0
cobasjuan 0:9d8c86972a9d 16 #define COMPARO_CABLES 1
cobasjuan 0:9d8c86972a9d 17 #define GANA 2
cobasjuan 0:9d8c86972a9d 18 #define PIERDE 3
cobasjuan 0:9d8c86972a9d 19 #define ESPERO_CABLES 4
cobasjuan 0:9d8c86972a9d 20 #define COMPARACION 5
cobasjuan 0:9d8c86972a9d 21
cobasjuan 0:9d8c86972a9d 22 // Funciones
cobasjuan 0:9d8c86972a9d 23 void CABLES();
cobasjuan 0:9d8c86972a9d 24 void MAQUINA_GENERAL();
cobasjuan 0:9d8c86972a9d 25 //Timer
cobasjuan 0:9d8c86972a9d 26 Ticker timer;
cobasjuan 0:9d8c86972a9d 27 void t();
cobasjuan 0:9d8c86972a9d 28 //Salidas
cobasjuan 0:9d8c86972a9d 29 DigitalOut ledr(LED1);
cobasjuan 0:9d8c86972a9d 30 DigitalOut ledg(LED2);
cobasjuan 0:9d8c86972a9d 31 DigitalOut ledb(LED3);
cobasjuan 0:9d8c86972a9d 32 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
cobasjuan 0:9d8c86972a9d 33
cobasjuan 0:9d8c86972a9d 34 // Variables
cobasjuan 0:9d8c86972a9d 35 unsigned int n=0, habcables=0, perdiste=0, finsec=0, tiempo=0;
cobasjuan 0:9d8c86972a9d 36 int secuencia[4]= {1,3,4,2};
cobasjuan 0:9d8c86972a9d 37 int main(void)
cobasjuan 0:9d8c86972a9d 38 {
cobasjuan 0:9d8c86972a9d 39 ledg=1;
cobasjuan 0:9d8c86972a9d 40 ledr=1;
cobasjuan 0:9d8c86972a9d 41 ledb=1;
cobasjuan 0:9d8c86972a9d 42 timer.attach(&t,0.01);
cobasjuan 0:9d8c86972a9d 43 while (true) {
cobasjuan 0:9d8c86972a9d 44 CABLES();
cobasjuan 0:9d8c86972a9d 45 MAQUINA_GENERAL();
cobasjuan 0:9d8c86972a9d 46 }
cobasjuan 0:9d8c86972a9d 47 }
cobasjuan 0:9d8c86972a9d 48
cobasjuan 0:9d8c86972a9d 49
cobasjuan 0:9d8c86972a9d 50 void MAQUINA_GENERAL()
cobasjuan 0:9d8c86972a9d 51 {
cobasjuan 0:9d8c86972a9d 52 static unsigned int paso_general=ESPERO_ARRANQUE;
cobasjuan 0:9d8c86972a9d 53 unsigned int flag=0;
cobasjuan 0:9d8c86972a9d 54 switch(paso_general) {
cobasjuan 0:9d8c86972a9d 55 case ESPERO_ARRANQUE:
cobasjuan 0:9d8c86972a9d 56 n=0;
cobasjuan 0:9d8c86972a9d 57 tiempo=0;
cobasjuan 0:9d8c86972a9d 58 flag=0;
cobasjuan 0:9d8c86972a9d 59 perdiste=0;
cobasjuan 0:9d8c86972a9d 60 if(tsi.readPercentage() != 0) {
cobasjuan 0:9d8c86972a9d 61 paso_general=COMPARO_CABLES;
cobasjuan 0:9d8c86972a9d 62 }
cobasjuan 0:9d8c86972a9d 63 break;
cobasjuan 0:9d8c86972a9d 64 case COMPARO_CABLES:
cobasjuan 0:9d8c86972a9d 65 habcables=1;
cobasjuan 0:9d8c86972a9d 66 if(perdiste == 1) {
cobasjuan 0:9d8c86972a9d 67 paso_general=PIERDE;
cobasjuan 0:9d8c86972a9d 68 }
cobasjuan 0:9d8c86972a9d 69 if(finsec == 1) {
cobasjuan 0:9d8c86972a9d 70 paso_general=GANA;
cobasjuan 0:9d8c86972a9d 71 }
cobasjuan 0:9d8c86972a9d 72 break;
cobasjuan 0:9d8c86972a9d 73 case GANA:
cobasjuan 0:9d8c86972a9d 74 if(flag == 0) {
cobasjuan 0:9d8c86972a9d 75 flag=1;
cobasjuan 0:9d8c86972a9d 76 tiempo=100;
cobasjuan 0:9d8c86972a9d 77 ledg=0;
cobasjuan 0:9d8c86972a9d 78 } else if(tiempo==0 && flag == 1) {
cobasjuan 0:9d8c86972a9d 79 ledg=1;
cobasjuan 0:9d8c86972a9d 80 paso_general=ESPERO_ARRANQUE;
cobasjuan 0:9d8c86972a9d 81 }
cobasjuan 0:9d8c86972a9d 82 break;
cobasjuan 0:9d8c86972a9d 83 case PIERDE:
cobasjuan 0:9d8c86972a9d 84 break;
cobasjuan 0:9d8c86972a9d 85 }
cobasjuan 0:9d8c86972a9d 86 }
cobasjuan 0:9d8c86972a9d 87
cobasjuan 0:9d8c86972a9d 88
cobasjuan 0:9d8c86972a9d 89 void CABLES()
cobasjuan 0:9d8c86972a9d 90 {
cobasjuan 0:9d8c86972a9d 91 static unsigned int paso_cables=ESPERO_CABLES;
cobasjuan 0:9d8c86972a9d 92 unsigned int fail=0;
cobasjuan 0:9d8c86972a9d 93 switch(paso_cables) {
cobasjuan 0:9d8c86972a9d 94 case ESPERO_CABLES:
cobasjuan 0:9d8c86972a9d 95 if(habcables == 1) {
cobasjuan 0:9d8c86972a9d 96 paso_cables=COMPARACION;
cobasjuan 0:9d8c86972a9d 97 }
cobasjuan 0:9d8c86972a9d 98 break;
cobasjuan 0:9d8c86972a9d 99 case COMPARACION:
cobasjuan 0:9d8c86972a9d 100 if(n == 0) {
cobasjuan 0:9d8c86972a9d 101 if((C1 || C2 || C3 || C4) == 1) {
cobasjuan 0:9d8c86972a9d 102 if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) {
cobasjuan 0:9d8c86972a9d 103 n++;
cobasjuan 0:9d8c86972a9d 104 } else fail=1;
cobasjuan 0:9d8c86972a9d 105 }
cobasjuan 0:9d8c86972a9d 106 } else if(n == 1) {
cobasjuan 0:9d8c86972a9d 107 if() {
cobasjuan 0:9d8c86972a9d 108 if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) {
cobasjuan 0:9d8c86972a9d 109 n++;
cobasjuan 0:9d8c86972a9d 110 } else fail=1;
cobasjuan 0:9d8c86972a9d 111 }
cobasjuan 0:9d8c86972a9d 112 } else if(n == 2) {
cobasjuan 0:9d8c86972a9d 113 if() {
cobasjuan 0:9d8c86972a9d 114 if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) {
cobasjuan 0:9d8c86972a9d 115 n++;
cobasjuan 0:9d8c86972a9d 116 } else fail=1;
cobasjuan 0:9d8c86972a9d 117 }
cobasjuan 0:9d8c86972a9d 118 } else if(n == 3) {
cobasjuan 0:9d8c86972a9d 119 if() {
cobasjuan 0:9d8c86972a9d 120 if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) {
cobasjuan 0:9d8c86972a9d 121 finsec=1;
cobasjuan 0:9d8c86972a9d 122 habcables=0;
cobasjuan 0:9d8c86972a9d 123 paso_cables=ESPERO_CABLES;
cobasjuan 0:9d8c86972a9d 124 } else fail=1;
cobasjuan 0:9d8c86972a9d 125 }
cobasjuan 0:9d8c86972a9d 126 }
cobasjuan 0:9d8c86972a9d 127 if(fail == 1) {
cobasjuan 0:9d8c86972a9d 128 perdiste=1;
cobasjuan 0:9d8c86972a9d 129 habcables=0;
cobasjuan 0:9d8c86972a9d 130 paso_cables=ESPERO_CABLES;
cobasjuan 0:9d8c86972a9d 131 }
cobasjuan 0:9d8c86972a9d 132 break;
cobasjuan 0:9d8c86972a9d 133 }
cobasjuan 0:9d8c86972a9d 134 }
cobasjuan 0:9d8c86972a9d 135
cobasjuan 0:9d8c86972a9d 136 void t()
cobasjuan 0:9d8c86972a9d 137 {
cobasjuan 0:9d8c86972a9d 138 if (tiempo > 0)
cobasjuan 0:9d8c86972a9d 139 tiempo--;
cobasjuan 0:9d8c86972a9d 140 }