facil de usar y enterder

Dependencies:   mbed Pulse TextLCD

Committer:
joshasigo
Date:
Sun May 24 20:02:21 2020 +0000
Revision:
0:da1e9312d7d2
carro a control remoto por infra rojo, hay que ser muy impedido para no entenderlo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joshasigo 0:da1e9312d7d2 1 #include "mbed.h"
joshasigo 0:da1e9312d7d2 2 #include <Pulse.h> //Library developed by Gustavo Ramirez;
joshasigo 0:da1e9312d7d2 3 #include "TextLCD.h"
joshasigo 0:da1e9312d7d2 4
joshasigo 0:da1e9312d7d2 5 TextLCD lcd(PTB18,PTB19,PTC0,PTC4,PTC6,PTC7, TextLCD::LCD16x2);
joshasigo 0:da1e9312d7d2 6 /// PIN4,PIN6,PIN11,PIN12,PIN13,PIN14
joshasigo 0:da1e9312d7d2 7 /// RS E D4 D5 D6 D7
joshasigo 0:da1e9312d7d2 8 /// PIN1 A TIERRA, PIN2 A VCC, PIN3 CON UNA R=1KOHMIO,PIN5 A TIERRA,PIN15 CON UNA R=1KOHMIO, PIN16 A VC
joshasigo 0:da1e9312d7d2 9 /// PIN 7 A PIN 10 NO SE LE CONECTA NADA.
joshasigo 0:da1e9312d7d2 10 PulseInOut irda(PTA1);// en este puerto se pone el sensor infrarrojo
joshasigo 0:da1e9312d7d2 11
joshasigo 0:da1e9312d7d2 12 int header =0; //Variable to store the header length
joshasigo 0:da1e9312d7d2 13 const int head_H = 9000*1.2; //+20% header length
joshasigo 0:da1e9312d7d2 14 const int head_L = 4500*0.8;//-20% header length
joshasigo 0:da1e9312d7d2 15 int i=0;
joshasigo 0:da1e9312d7d2 16 int n=0;
joshasigo 0:da1e9312d7d2 17
joshasigo 0:da1e9312d7d2 18 float PeriodoPWM1=0.001;
joshasigo 0:da1e9312d7d2 19 float PeriodoLed=1.0;
joshasigo 0:da1e9312d7d2 20 float DC1=0.5;
joshasigo 0:da1e9312d7d2 21
joshasigo 0:da1e9312d7d2 22 const int pulso=562.5;//NEC uses 562.5µs pulse bursts;
joshasigo 0:da1e9312d7d2 23 const int num_bits = 32;//8 bits address - 8 bits address logical inverse - 8 bits data - 8 bits data logical inverse;
joshasigo 0:da1e9312d7d2 24 int num[num_bits];//Array to store logical 1 length;
joshasigo 0:da1e9312d7d2 25 int data_bin[num_bits]; //Array to store binary code transmited;
joshasigo 0:da1e9312d7d2 26 int address1; //variable to store the device address;
joshasigo 0:da1e9312d7d2 27 int address0; //variable to store the device address (inverse);
joshasigo 0:da1e9312d7d2 28 int data1; //variable to store the transmited data;
joshasigo 0:da1e9312d7d2 29 int data0; //variable to store the transmited data (inverse);
joshasigo 0:da1e9312d7d2 30 //motores
joshasigo 0:da1e9312d7d2 31 DigitalOut ade1(PTC1);//
joshasigo 0:da1e9312d7d2 32 DigitalOut atra1(PTC2);//
joshasigo 0:da1e9312d7d2 33 DigitalOut ade2(PTB3);//
joshasigo 0:da1e9312d7d2 34 DigitalOut atra2(PTB2);//
joshasigo 0:da1e9312d7d2 35
joshasigo 0:da1e9312d7d2 36 /****Las teclas del control****/
joshasigo 0:da1e9312d7d2 37 const int adelante =96;
joshasigo 0:da1e9312d7d2 38 const int atras=97;
joshasigo 0:da1e9312d7d2 39 const int izquierda=101;
joshasigo 0:da1e9312d7d2 40 const int derecha =98;
joshasigo 0:da1e9312d7d2 41 const int pausa=104;
joshasigo 0:da1e9312d7d2 42
joshasigo 0:da1e9312d7d2 43 void imprimir_funcion(int dato)
joshasigo 0:da1e9312d7d2 44 {
joshasigo 0:da1e9312d7d2 45 switch(dato) {
joshasigo 0:da1e9312d7d2 46 case adelante:
joshasigo 0:da1e9312d7d2 47 lcd.cls();
joshasigo 0:da1e9312d7d2 48 lcd.locate(0,0);//0X,0Y
joshasigo 0:da1e9312d7d2 49 lcd.printf("COMANDO!");
joshasigo 0:da1e9312d7d2 50 lcd.locate(0,1);
joshasigo 0:da1e9312d7d2 51 lcd.printf("adelante");
joshasigo 0:da1e9312d7d2 52 ade1=1;
joshasigo 0:da1e9312d7d2 53 atra1=0;
joshasigo 0:da1e9312d7d2 54 ade2=1;
joshasigo 0:da1e9312d7d2 55 atra2=0;
joshasigo 0:da1e9312d7d2 56 break;
joshasigo 0:da1e9312d7d2 57 case atras:
joshasigo 0:da1e9312d7d2 58 lcd.cls();
joshasigo 0:da1e9312d7d2 59 lcd.locate(0,0);//0X,0Y
joshasigo 0:da1e9312d7d2 60 lcd.printf("COMANDO!");
joshasigo 0:da1e9312d7d2 61 lcd.locate(0,1);
joshasigo 0:da1e9312d7d2 62 lcd.printf("atras");
joshasigo 0:da1e9312d7d2 63 ade1=0;
joshasigo 0:da1e9312d7d2 64 atra1=1;
joshasigo 0:da1e9312d7d2 65 ade2=0;
joshasigo 0:da1e9312d7d2 66 atra2=1;
joshasigo 0:da1e9312d7d2 67 break;
joshasigo 0:da1e9312d7d2 68 case izquierda:
joshasigo 0:da1e9312d7d2 69 lcd.cls();
joshasigo 0:da1e9312d7d2 70 lcd.locate(0,0);//0X,0Y
joshasigo 0:da1e9312d7d2 71 lcd.printf("COMANDO!");
joshasigo 0:da1e9312d7d2 72 lcd.locate(0,1);
joshasigo 0:da1e9312d7d2 73 lcd.printf("izquierda");
joshasigo 0:da1e9312d7d2 74 ade1=1;
joshasigo 0:da1e9312d7d2 75 atra1=0;
joshasigo 0:da1e9312d7d2 76 ade2=0;
joshasigo 0:da1e9312d7d2 77 atra2=1;
joshasigo 0:da1e9312d7d2 78 break;
joshasigo 0:da1e9312d7d2 79 case derecha:
joshasigo 0:da1e9312d7d2 80 lcd.cls();
joshasigo 0:da1e9312d7d2 81 lcd.locate(0,0);//0X,0Y
joshasigo 0:da1e9312d7d2 82 lcd.printf("COMANDO!");
joshasigo 0:da1e9312d7d2 83 lcd.locate(0,1);
joshasigo 0:da1e9312d7d2 84 lcd.printf("derecha");
joshasigo 0:da1e9312d7d2 85 ade1=0;
joshasigo 0:da1e9312d7d2 86 atra1=1;
joshasigo 0:da1e9312d7d2 87 ade2=1;
joshasigo 0:da1e9312d7d2 88 atra2=0;
joshasigo 0:da1e9312d7d2 89 break;
joshasigo 0:da1e9312d7d2 90 case pausa:
joshasigo 0:da1e9312d7d2 91 lcd.cls();
joshasigo 0:da1e9312d7d2 92 lcd.locate(0,0);//0X,0Y
joshasigo 0:da1e9312d7d2 93 lcd.printf("COMANDO!");
joshasigo 0:da1e9312d7d2 94 lcd.locate(0,1);
joshasigo 0:da1e9312d7d2 95 lcd.printf("pausa");
joshasigo 0:da1e9312d7d2 96 ade1=0;
joshasigo 0:da1e9312d7d2 97 atra1=0;
joshasigo 0:da1e9312d7d2 98 ade2=0;
joshasigo 0:da1e9312d7d2 99 atra2=0;
joshasigo 0:da1e9312d7d2 100 break;
joshasigo 0:da1e9312d7d2 101 }
joshasigo 0:da1e9312d7d2 102
joshasigo 0:da1e9312d7d2 103 }
joshasigo 0:da1e9312d7d2 104
joshasigo 0:da1e9312d7d2 105 int main()
joshasigo 0:da1e9312d7d2 106 {
joshasigo 0:da1e9312d7d2 107 lcd.locate(0,0);//0X,0Y
joshasigo 0:da1e9312d7d2 108 lcd.printf("Presiona tecla");
joshasigo 0:da1e9312d7d2 109 lcd.locate(0,1);//0X,0Y
joshasigo 0:da1e9312d7d2 110 lcd.printf("Esp_comando");
joshasigo 0:da1e9312d7d2 111
joshasigo 0:da1e9312d7d2 112 while(1) {
joshasigo 0:da1e9312d7d2 113 /********************Header detection************************/
joshasigo 0:da1e9312d7d2 114 ini1:
joshasigo 0:da1e9312d7d2 115 header=0;
joshasigo 0:da1e9312d7d2 116 header = irda.read_low_us();
joshasigo 0:da1e9312d7d2 117 if (header > head_L && header < head_H){
joshasigo 0:da1e9312d7d2 118 goto seguir;//verificar que este en la tolerancia +-20%
joshasigo 0:da1e9312d7d2 119 }else{
joshasigo 0:da1e9312d7d2 120 goto ini1;
joshasigo 0:da1e9312d7d2 121 }
joshasigo 0:da1e9312d7d2 122 seguir:
joshasigo 0:da1e9312d7d2 123 //leo los datos y se meten a un arreglo
joshasigo 0:da1e9312d7d2 124 wait_us(4500/2);
joshasigo 0:da1e9312d7d2 125 for(i=0; i<(num_bits); ++i) {
joshasigo 0:da1e9312d7d2 126 num[i]=irda.read_high_us(); //Tiempos para estado siempre alto se almacenan en microsegundos
joshasigo 0:da1e9312d7d2 127 wait_us(400); //esperar una parte del estado bajo (562.5µs)
joshasigo 0:da1e9312d7d2 128 }
joshasigo 0:da1e9312d7d2 129 /*Imprimir en pantalla lo que obtengo*/
joshasigo 0:da1e9312d7d2 130 for(i=0; i<(num_bits); ++i) {
joshasigo 0:da1e9312d7d2 131 if(num[i]>pulso*1.2) {
joshasigo 0:da1e9312d7d2 132 data_bin[i]=1; //si la longitud es mayor que 1.2ms, representa un 1
joshasigo 0:da1e9312d7d2 133 } else {
joshasigo 0:da1e9312d7d2 134 data_bin[i]=0; //si la longitud es más corta, representa un 0
joshasigo 0:da1e9312d7d2 135
joshasigo 0:da1e9312d7d2 136 }
joshasigo 0:da1e9312d7d2 137
joshasigo 0:da1e9312d7d2 138 }
joshasigo 0:da1e9312d7d2 139 address1=0;
joshasigo 0:da1e9312d7d2 140 for(i=0; i<8; i++) {
joshasigo 0:da1e9312d7d2 141 address1=address1 + data_bin[i]*pow(2.0,i*1.0);
joshasigo 0:da1e9312d7d2 142 }
joshasigo 0:da1e9312d7d2 143 address0=0;
joshasigo 0:da1e9312d7d2 144 for(i=8; i<16; i++) {
joshasigo 0:da1e9312d7d2 145 address0=address0 + data_bin[i]*pow(2.0,(i-8)*1.0);
joshasigo 0:da1e9312d7d2 146 }
joshasigo 0:da1e9312d7d2 147
joshasigo 0:da1e9312d7d2 148 data1=0;
joshasigo 0:da1e9312d7d2 149 for(i=16; i<24; i++) {
joshasigo 0:da1e9312d7d2 150 data1=data1 + data_bin[i]*pow(2.0,(i-16.0)*1.0);
joshasigo 0:da1e9312d7d2 151 }
joshasigo 0:da1e9312d7d2 152
joshasigo 0:da1e9312d7d2 153 data0=0;
joshasigo 0:da1e9312d7d2 154 for(i=24; i<32; i++) {
joshasigo 0:da1e9312d7d2 155 data0=data0 + data_bin[i]*pow(2.0,(i-24)*1.0);
joshasigo 0:da1e9312d7d2 156 }
joshasigo 0:da1e9312d7d2 157 imprimir_funcion(data1);
joshasigo 0:da1e9312d7d2 158
joshasigo 0:da1e9312d7d2 159
joshasigo 0:da1e9312d7d2 160 }
joshasigo 0:da1e9312d7d2 161 }