
u
main.cpp
- Committer:
- paisa501
- Date:
- 2014-07-10
- Revision:
- 0:c22b84cb23e7
File content as of revision 0:c22b84cb23e7:
#include "mbed.h" #include "TextLCD.h" TextLCD lcd(PTC16, PTC17, PTA16, PTA17, PTE31, PTD6); // rs, e, d4-d7 DigitalIn sensor(PTE20); Ticker visualiza; Ticker cuenta; Ticker x; int vueltas, rpm; BusOut sentido_giro(D12, D13); DigitalIn bajar(D15); DigitalIn subir(D14); DigitalIn derecha(PTC12); DigitalIn izquierda(PTC13); PwmOut velocidad(D11); BusOut transistores(D0,D1); BusOut segmentos (A0,A1,A2,A3,A4,A5,PTE30); BusOut transistores2(D2, D3); BusOut segmentos2 (D4,D5,D6,D7, D8,D9, D10); // tabla de segmentos const char seg[10] = {0x3f, 0x06,0x5b,0x57,0x66,0x75,0x7d,0x07,0x7f,0x77}; char unidades,decenas, miliunidades, milidecenas; void segundo(){ vueltas = 0; miliunidades = rpm%10; milidecenas = (rpm%100)/10; unidades = (rpm/100)%10; decenas = rpm/1000; } void cambio(){ static bool bandera; bandera = !bandera; switch (bandera){ case 0: transistores = 0x0; segmentos = seg[unidades]; transistores = 0x2; transistores2 = 0x0; segmentos2 = seg[miliunidades]; transistores2 = 0x2; break; case 1: transistores = 0x0; segmentos = seg[decenas]; transistores = 0x1; transistores2 = 0x0; segmentos2 = seg[milidecenas]; transistores2 = 0x1; break; }} unsigned int revol; int main() { lcd.cls(); lcd.printf(" REVOLUCIONES "); lcd.locate(1, 5); lcd.printf("POR MINUTO :)"); sentido_giro = 0x0; velocidad = 0.15; rpm = 0; vueltas = 0; transistores = 0x0; transistores2 = 0x0; visualiza.attach(&cambio,0.008333); // tiempo de visualizacion while(1) { rpm = vueltas * 60; if (!derecha && izquierda){ wait (0.1); if (derecha==0){ lcd.cls(); lcd.printf(" izquierda "); lcd.locate(1, 5); lcd.printf(" "); sentido_giro = 0x1; } } else if (derecha && !izquierda){ wait (0.1); if (izquierda==0){ sentido_giro = 0x2; lcd.cls(); lcd.printf(" Derecha "); lcd.locate(1, 5); lcd.printf(" "); } } if (subir ==0 ){ wait (0.5); velocidad = velocidad + 0.03; lcd.cls(); lcd.printf(" Subiendo PWM "); lcd.locate(1, 5); lcd.printf (" "); unidades = 0;decenas = 0; miliunidades = 0; milidecenas = 0; if (velocidad >= 0.3) { velocidad = 0.3; lcd.cls(); lcd.printf(" RPM maximo "); lcd.locate(1, 5); lcd.printf (" "); } } if (bajar ==0 ) { wait(0.5); velocidad = velocidad - 0.03; lcd.cls(); lcd.printf (" Bajando PWM "); lcd.locate(1, 5); lcd.printf(" "); unidades = 0;decenas = 0; miliunidades = 0; milidecenas = 0; if (velocidad <= 0.0){ velocidad = 0.0; lcd.cls(); lcd.printf(" 0 RPM "); lcd.locate(1, 5); lcd.printf (" "); }} if (!sensor){ wait (0.01); if (sensor==1){ vueltas = vueltas + 1; if (vueltas == 1) { x.attach(&segundo,1); } } } }}