Practica_6_-_Ejercicio_05
Dependencies: mbed TextLCD Keypad
Diff: main.cpp
- Revision:
- 32:d5752716cdd4
- Parent:
- 31:080589c1250a
--- a/main.cpp Thu Oct 31 04:24:48 2019 +0000 +++ b/main.cpp Wed Nov 20 05:05:29 2019 +0000 @@ -1,39 +1,77 @@ #include "mbed.h" -Serial pc(USBTX,USBRX); -DigitalOut led0(PTD0); //Octavo pin (a partir del botón de RESET). -DigitalOut led1(PTC4); //Noveno pin. -DigitalOut led2(PTC12); //Decimo pin. -DigitalOut led3(PTC3); //Onceavo pin (inicia en el nuevo carril). -Timer crono; +#include "TextLCD.h" +#include "Keypad.h" +TextLCD lcd(PTE24, PTE25, PTD1, PTD3, PTD2, PTD0, TextLCD::LCD16x2); // rs, e, d4-d7 +Keypad kpad(PTA2, PTB23, PTA1, PTB9, PTC4, PTC12, PTC3, PTC2); +DigitalIn borrador(PTC17); +DigitalOut led(PTC16); +int main() { + char key, memoria = '.'; + int released = 1, contador = 0; + led = 0; + while(1){ + if(borrador){ //Testear la dualidad del botón borrador con el ejercicio 3. + lcd.cls(); + led = 0; + contador = 0; + } + else{ + key = kpad.ReadKey(); //read the current key pressed -int main(){ - led0 = 1; - led1 = 1; - led2 = 1; - led3 = 1; - crono.start(); - for(int i; i < 50; i++){ // Dado que la resolución es de 1.8 grados, se necesitan 200 pasos para completar un giro. - led0 = 0; - led1 = 1; - led2 = 0; - led3 = 1; - wait(0.025); - led0 = 0; - led1 = 1; - led2 = 1; - led3 = 0; - wait(0.025); - led0 = 1; - led1 = 0; - led2 = 1; - led3 = 0; - wait(0.025); - led0 = 1; - led1 = 0; - led2 = 0; - led3 = 1; - wait(0.025); + if(key == '\0') + released = 1; //set the flag when all keys are released + + if((key != '\0') && (released == 1)) { //if a key is pressed AND previous key was release + lcd.cls(); + switch(key){ + case '0': lcd.printf("00000000 "); + break; + case '1': lcd.printf("00000001 "); + break; + case '2': lcd.printf("00000010 "); + break; + case '3': lcd.printf("00000011 "); + break; + case '4': lcd.printf("00000100 "); + break; + case '5': lcd.printf("00000101 "); + break; + case '6': lcd.printf("00000110 "); + break; + case '7': lcd.printf("00000111 "); + break; + case '8': lcd.printf("00001000 "); + break; + case '9': lcd.printf("00001001 "); + break; + case 'A': lcd.printf("00001010 "); + break; + case 'B': lcd.printf("00001011 "); + break; + case 'C': lcd.printf("00001100 "); + break; + case 'D': lcd.printf("00001101 "); + break; + default: lcd.printf("%c", key); + } + + if(memoria == key) + contador = contador + 1; + else + contador = 0; + + if(contador > 0){ + lcd.cls(); + lcd.printf("\n%c = %d", key, contador); + } + + if(contador == 10){ + led = 1; + } + + memoria = key; + released = 0; //clear the flag to indicate that key is still pressed + } + } } - crono.stop(); - pc.printf("Tiempo de giro: %f seg", crono.read()); } \ No newline at end of file