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@1:98ee9aaad63b, 2019-05-23 (annotated)
- Committer:
- Darstack
- Date:
- Thu May 23 00:17:09 2019 +0000
- Revision:
- 1:98ee9aaad63b
- Parent:
- 0:4da94607d8a6
Listo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MarlonQ | 0:4da94607d8a6 | 1 | #include "mbed.h" |
Darstack | 1:98ee9aaad63b | 2 | #define INITCMD 0xFF |
Darstack | 1:98ee9aaad63b | 3 | |
Darstack | 1:98ee9aaad63b | 4 | //Definiendo los puertos |
Darstack | 1:98ee9aaad63b | 5 | AnalogIn In_Sagua( A0 ); |
Darstack | 1:98ee9aaad63b | 6 | |
Darstack | 1:98ee9aaad63b | 7 | InterruptIn EncoMot ( PB_8 ); |
Darstack | 1:98ee9aaad63b | 8 | |
Darstack | 1:98ee9aaad63b | 9 | PwmOut Mot_As( PB_4 ); |
Darstack | 1:98ee9aaad63b | 10 | PwmOut BUZZ( PB_3 ); |
Darstack | 1:98ee9aaad63b | 11 | |
Darstack | 1:98ee9aaad63b | 12 | Timer t1 ; |
Darstack | 1:98ee9aaad63b | 13 | |
Darstack | 1:98ee9aaad63b | 14 | Ticker tout0; |
Darstack | 1:98ee9aaad63b | 15 | Ticker tout1; |
Darstack | 1:98ee9aaad63b | 16 | |
Darstack | 1:98ee9aaad63b | 17 | DigitalOut Llenado( PA_3 ); |
Darstack | 1:98ee9aaad63b | 18 | DigitalOut Sacado( PA_6 ); |
Darstack | 1:98ee9aaad63b | 19 | DigitalOut Lemer( PA_7 ); |
Darstack | 1:98ee9aaad63b | 20 | DigitalOut led(LED1); |
Darstack | 1:98ee9aaad63b | 21 | Serial bluetooth(D10, D2); |
Darstack | 1:98ee9aaad63b | 22 | Serial pc ( USBTX, USBRX ); |
Darstack | 1:98ee9aaad63b | 23 | //Definiendo las variables Globales |
MarlonQ | 0:4da94607d8a6 | 24 | |
Darstack | 1:98ee9aaad63b | 25 | volatile uint32_t L_Agua; |
Darstack | 1:98ee9aaad63b | 26 | float Pwm_Control; |
Darstack | 1:98ee9aaad63b | 27 | char Read_Uart; |
Darstack | 1:98ee9aaad63b | 28 | int nvueltas, nvueltas_n; |
Darstack | 1:98ee9aaad63b | 29 | int Rpm; |
Darstack | 1:98ee9aaad63b | 30 | volatile int Exit = 0 ; |
Darstack | 1:98ee9aaad63b | 31 | volatile bool button1_pressed = false; // Used in the main loop |
Darstack | 1:98ee9aaad63b | 32 | volatile bool button1_enabled = true; // Used for debouncing |
Darstack | 1:98ee9aaad63b | 33 | Timeout button1_timeout; // Used for debouncing |
Darstack | 1:98ee9aaad63b | 34 | |
Darstack | 1:98ee9aaad63b | 35 | //Definiendo las funciones |
Darstack | 1:98ee9aaad63b | 36 | |
Darstack | 1:98ee9aaad63b | 37 | //void Rx_interrupt(); |
Darstack | 1:98ee9aaad63b | 38 | void Leer_Sagua(); |
Darstack | 1:98ee9aaad63b | 39 | void leer_datos(); |
Darstack | 1:98ee9aaad63b | 40 | void Funciones_Mezcladora(char _Funcion); |
Darstack | 1:98ee9aaad63b | 41 | |
Darstack | 1:98ee9aaad63b | 42 | //Definidndo funciones de interrubluetoothion Encoder |
Darstack | 1:98ee9aaad63b | 43 | // Habilita el botón cuando termina el rebote. |
Darstack | 1:98ee9aaad63b | 44 | void button1_enabled_cb(void) |
Darstack | 1:98ee9aaad63b | 45 | { |
Darstack | 1:98ee9aaad63b | 46 | button1_enabled = true; |
Darstack | 1:98ee9aaad63b | 47 | } |
Darstack | 1:98ee9aaad63b | 48 | |
Darstack | 1:98ee9aaad63b | 49 | // Botón presionado ISR evento presionado |
Darstack | 1:98ee9aaad63b | 50 | void button1_onpressed_cb(void) |
Darstack | 1:98ee9aaad63b | 51 | { |
Darstack | 1:98ee9aaad63b | 52 | if (button1_enabled) { // Disabled while the button is bouncing |
Darstack | 1:98ee9aaad63b | 53 | button1_enabled = false; |
Darstack | 1:98ee9aaad63b | 54 | button1_pressed = true; // To be read by the main loop |
Darstack | 1:98ee9aaad63b | 55 | button1_timeout.attach(callback(button1_enabled_cb), 0.1); // Debounce time 300 ms |
Darstack | 1:98ee9aaad63b | 56 | } |
Darstack | 1:98ee9aaad63b | 57 | |
Darstack | 1:98ee9aaad63b | 58 | } |
MarlonQ | 0:4da94607d8a6 | 59 | int main() { |
MarlonQ | 0:4da94607d8a6 | 60 | |
Darstack | 1:98ee9aaad63b | 61 | bluetooth.baud(9600) ; |
Darstack | 1:98ee9aaad63b | 62 | pc.baud ( 115200 ); |
Darstack | 1:98ee9aaad63b | 63 | //printf(" Leyendo sensor de agua \n"); |
MarlonQ | 0:4da94607d8a6 | 64 | |
Darstack | 1:98ee9aaad63b | 65 | nvueltas = 0; |
Darstack | 1:98ee9aaad63b | 66 | |
Darstack | 1:98ee9aaad63b | 67 | EncoMot.rise( callback( button1_onpressed_cb ) ); |
Darstack | 1:98ee9aaad63b | 68 | tout0.attach( &Leer_Sagua, 1 ); |
MarlonQ | 0:4da94607d8a6 | 69 | |
MarlonQ | 0:4da94607d8a6 | 70 | while(1) { |
MarlonQ | 0:4da94607d8a6 | 71 | |
Darstack | 1:98ee9aaad63b | 72 | if (button1_pressed) { //Establecer cuando se presiona el botón |
Darstack | 1:98ee9aaad63b | 73 | button1_pressed = false; |
Darstack | 1:98ee9aaad63b | 74 | nvueltas++; |
Darstack | 1:98ee9aaad63b | 75 | led = !led; |
Darstack | 1:98ee9aaad63b | 76 | //pc.printf("%d",nvueltas); |
Darstack | 1:98ee9aaad63b | 77 | } |
MarlonQ | 0:4da94607d8a6 | 78 | |
Darstack | 1:98ee9aaad63b | 79 | if( t1.read_ms()> 1000 ){ |
Darstack | 1:98ee9aaad63b | 80 | |
Darstack | 1:98ee9aaad63b | 81 | nvueltas_n = nvueltas; |
Darstack | 1:98ee9aaad63b | 82 | nvueltas = 0; |
Darstack | 1:98ee9aaad63b | 83 | t1.reset(); |
Darstack | 1:98ee9aaad63b | 84 | Rpm = ( ( nvueltas_n * 60) / ( 0.1 * 20 ) ); |
Darstack | 1:98ee9aaad63b | 85 | pc.printf ( " Vueltas= %d Rpm= %d \n", nvueltas_n, Rpm ); |
Darstack | 1:98ee9aaad63b | 86 | // pc.putc( nvueltas_n ); |
Darstack | 1:98ee9aaad63b | 87 | // pc.putc( Rpm ); |
Darstack | 1:98ee9aaad63b | 88 | Mot_As = Mot_As+0.01f; |
Darstack | 1:98ee9aaad63b | 89 | |
Darstack | 1:98ee9aaad63b | 90 | int Oka; |
Darstack | 1:98ee9aaad63b | 91 | if(pc.readable()){Oka=pc.getc();} |
Darstack | 1:98ee9aaad63b | 92 | printf ( " %d \n ", Oka); |
Darstack | 1:98ee9aaad63b | 93 | if( Rpm > Oka*1.2 ){ |
Darstack | 1:98ee9aaad63b | 94 | printf ( " Entro \n "); |
Darstack | 1:98ee9aaad63b | 95 | Mot_As = Mot_As - 0.02f ; |
Darstack | 1:98ee9aaad63b | 96 | } |
Darstack | 1:98ee9aaad63b | 97 | } |
Darstack | 1:98ee9aaad63b | 98 | |
Darstack | 1:98ee9aaad63b | 99 | leer_datos(); |
Darstack | 1:98ee9aaad63b | 100 | Funciones_Mezcladora(Read_Uart); |
Darstack | 1:98ee9aaad63b | 101 | } |
Darstack | 1:98ee9aaad63b | 102 | } |
Darstack | 1:98ee9aaad63b | 103 | |
Darstack | 1:98ee9aaad63b | 104 | //////////////////////////////////////////////////////////////////////////////// |
Darstack | 1:98ee9aaad63b | 105 | // Declaracion de funciones // |
Darstack | 1:98ee9aaad63b | 106 | //////////////////////////////////////////////////////////////////////////////// |
Darstack | 1:98ee9aaad63b | 107 | void leer_datos(){ |
Darstack | 1:98ee9aaad63b | 108 | |
Darstack | 1:98ee9aaad63b | 109 | if(bluetooth.readable()){ |
Darstack | 1:98ee9aaad63b | 110 | Read_Uart = bluetooth.getc(); |
Darstack | 1:98ee9aaad63b | 111 | } |
Darstack | 1:98ee9aaad63b | 112 | } |
Darstack | 1:98ee9aaad63b | 113 | //////////////////////////////////////////////////////////////////////////////// |
Darstack | 1:98ee9aaad63b | 114 | // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°// |
Darstack | 1:98ee9aaad63b | 115 | //////////////////////////////////////////////////////////////////////////////// |
Darstack | 1:98ee9aaad63b | 116 | void Leer_Sagua(){ |
Darstack | 1:98ee9aaad63b | 117 | |
Darstack | 1:98ee9aaad63b | 118 | //printf( " %d \n ", L_Agua ); |
Darstack | 1:98ee9aaad63b | 119 | L_Agua = In_Sagua.read_u16(); |
Darstack | 1:98ee9aaad63b | 120 | |
Darstack | 1:98ee9aaad63b | 121 | if( L_Agua > 1000 ){ |
Darstack | 1:98ee9aaad63b | 122 | |
Darstack | 1:98ee9aaad63b | 123 | pc.printf( " Se paso \n " ); |
Darstack | 1:98ee9aaad63b | 124 | Lemer = 1; |
Darstack | 1:98ee9aaad63b | 125 | BUZZ.period_us( 1300 ); |
Darstack | 1:98ee9aaad63b | 126 | BUZZ.write( 0.8 ); |
Darstack | 1:98ee9aaad63b | 127 | wait( 0.5 ); |
Darstack | 1:98ee9aaad63b | 128 | BUZZ.write( 0 ); |
Darstack | 1:98ee9aaad63b | 129 | Lemer = 0; |
Darstack | 1:98ee9aaad63b | 130 | wait( 0.5 ); |
Darstack | 1:98ee9aaad63b | 131 | } |
Darstack | 1:98ee9aaad63b | 132 | |
MarlonQ | 0:4da94607d8a6 | 133 | } |
Darstack | 1:98ee9aaad63b | 134 | //////////////////////////////////////////////////////////////////////////////// |
Darstack | 1:98ee9aaad63b | 135 | // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°// |
Darstack | 1:98ee9aaad63b | 136 | //////////////////////////////////////////////////////////////////////////////// |
Darstack | 1:98ee9aaad63b | 137 | void Funciones_Mezcladora(char _Funcion){ |
Darstack | 1:98ee9aaad63b | 138 | |
Darstack | 1:98ee9aaad63b | 139 | switch (_Funcion){ |
Darstack | 1:98ee9aaad63b | 140 | |
Darstack | 1:98ee9aaad63b | 141 | //Llenar agua |
Darstack | 1:98ee9aaad63b | 142 | case 'A': |
Darstack | 1:98ee9aaad63b | 143 | |
Darstack | 1:98ee9aaad63b | 144 | Llenado = 1; |
Darstack | 1:98ee9aaad63b | 145 | //printf(" Caso 1 "); |
Darstack | 1:98ee9aaad63b | 146 | |
Darstack | 1:98ee9aaad63b | 147 | |
Darstack | 1:98ee9aaad63b | 148 | break; |
Darstack | 1:98ee9aaad63b | 149 | |
Darstack | 1:98ee9aaad63b | 150 | //Expulsar agua |
Darstack | 1:98ee9aaad63b | 151 | case 'B': |
Darstack | 1:98ee9aaad63b | 152 | |
Darstack | 1:98ee9aaad63b | 153 | Sacado = 1; |
Darstack | 1:98ee9aaad63b | 154 | //printf(" Caso 2 "); |
Darstack | 1:98ee9aaad63b | 155 | |
Darstack | 1:98ee9aaad63b | 156 | break; |
Darstack | 1:98ee9aaad63b | 157 | |
Darstack | 1:98ee9aaad63b | 158 | case 'C': |
Darstack | 1:98ee9aaad63b | 159 | |
Darstack | 1:98ee9aaad63b | 160 | t1.start(); |
Darstack | 1:98ee9aaad63b | 161 | |
Darstack | 1:98ee9aaad63b | 162 | break; |
Darstack | 1:98ee9aaad63b | 163 | |
Darstack | 1:98ee9aaad63b | 164 | case 'D': |
Darstack | 1:98ee9aaad63b | 165 | |
Darstack | 1:98ee9aaad63b | 166 | t1.stop(); |
Darstack | 1:98ee9aaad63b | 167 | NVIC_SystemReset(); |
Darstack | 1:98ee9aaad63b | 168 | |
Darstack | 1:98ee9aaad63b | 169 | break; |
Darstack | 1:98ee9aaad63b | 170 | |
Darstack | 1:98ee9aaad63b | 171 | case 'E': |
Darstack | 1:98ee9aaad63b | 172 | |
Darstack | 1:98ee9aaad63b | 173 | Llenado = 0; |
Darstack | 1:98ee9aaad63b | 174 | //printf(" Caso 5 "); |
Darstack | 1:98ee9aaad63b | 175 | |
Darstack | 1:98ee9aaad63b | 176 | |
Darstack | 1:98ee9aaad63b | 177 | break; |
Darstack | 1:98ee9aaad63b | 178 | |
Darstack | 1:98ee9aaad63b | 179 | //Expulsar agua |
Darstack | 1:98ee9aaad63b | 180 | case 'F': |
Darstack | 1:98ee9aaad63b | 181 | |
Darstack | 1:98ee9aaad63b | 182 | Sacado = 0; |
Darstack | 1:98ee9aaad63b | 183 | led = 0; |
Darstack | 1:98ee9aaad63b | 184 | //printf(" Caso 6 "); |
Darstack | 1:98ee9aaad63b | 185 | |
Darstack | 1:98ee9aaad63b | 186 | break; |
Darstack | 1:98ee9aaad63b | 187 | } |
Darstack | 1:98ee9aaad63b | 188 | } |