dsbnajdnas
Dependencies: Adafruit_GFX SSD1306_128x64_I2C mbed
main.cpp@1:748bf113818b, 2017-11-29 (annotated)
- Committer:
- juankafil1
- Date:
- Wed Nov 29 02:15:51 2017 +0000
- Revision:
- 1:748bf113818b
- Parent:
- 0:07389ebe002b
probar
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
juankafil1 | 0:07389ebe002b | 1 | #include "mbed.h" |
juankafil1 | 0:07389ebe002b | 2 | #include "SSD1306.h" |
juankafil1 | 0:07389ebe002b | 3 | |
juankafil1 | 0:07389ebe002b | 4 | |
juankafil1 | 0:07389ebe002b | 5 | Serial rs232(USBTX,USBRX); |
juankafil1 | 0:07389ebe002b | 6 | |
juankafil1 | 0:07389ebe002b | 7 | #define D_SDA PTE0//25// |
juankafil1 | 0:07389ebe002b | 8 | #define D_SCL PTE1//24// |
juankafil1 | 0:07389ebe002b | 9 | I2C i2c(D_SDA, D_SCL); |
juankafil1 | 0:07389ebe002b | 10 | |
juankafil1 | 0:07389ebe002b | 11 | SSD1306 oled = SSD1306(i2c, SSD1308_SA0); |
juankafil1 | 0:07389ebe002b | 12 | |
juankafil1 | 0:07389ebe002b | 13 | |
juankafil1 | 0:07389ebe002b | 14 | Timer Timer1; |
juankafil1 | 0:07389ebe002b | 15 | InterruptIn int1(PTD0); |
juankafil1 | 1:748bf113818b | 16 | BusOut step_secuence( PTD6, PTA17, PTA16 ,PTC17); |
juankafil1 | 1:748bf113818b | 17 | unsigned int contador=0,frec=0,conn=0,conm=0,cona=0,conN=0,aux=0; |
juankafil1 | 1:748bf113818b | 18 | uint16_t color=0,A=0,V=0,N=0,D=0,k=0; |
juankafil1 | 1:748bf113818b | 19 | int g=0,grados=0; |
juankafil1 | 0:07389ebe002b | 20 | void ISR_PTD0(){//cuenta los pulsos |
juankafil1 | 0:07389ebe002b | 21 | ++contador;} |
juankafil1 | 0:07389ebe002b | 22 | |
juankafil1 | 0:07389ebe002b | 23 | void frecuencia(){ |
juankafil1 | 0:07389ebe002b | 24 | |
juankafil1 | 0:07389ebe002b | 25 | contador=0; |
juankafil1 | 0:07389ebe002b | 26 | Timer1.start();//arranca temporizador |
juankafil1 | 0:07389ebe002b | 27 | while(Timer1.read_ms()<=10);//cuando lleve a 10 ms pare |
juankafil1 | 0:07389ebe002b | 28 | Timer1.stop();//lo detengo |
juankafil1 | 0:07389ebe002b | 29 | frec=100*contador;//lo multiplicamos por 100 |
juankafil1 | 0:07389ebe002b | 30 | Timer1.reset();}//reinicia el timer |
juankafil1 | 0:07389ebe002b | 31 | |
juankafil1 | 1:748bf113818b | 32 | |
juankafil1 | 1:748bf113818b | 33 | void forward() // Avance motor |
juankafil1 | 1:748bf113818b | 34 | { |
juankafil1 | 1:748bf113818b | 35 | |
juankafil1 | 1:748bf113818b | 36 | k=0; |
juankafil1 | 1:748bf113818b | 37 | for (int i = 0; i<=4; i++) {//avance asi delante |
juankafil1 | 1:748bf113818b | 38 | if (k>=4) { |
juankafil1 | 1:748bf113818b | 39 | k=0; |
juankafil1 | 1:748bf113818b | 40 | } |
juankafil1 | 1:748bf113818b | 41 | switch (k) { |
juankafil1 | 1:748bf113818b | 42 | case 0: |
juankafil1 | 1:748bf113818b | 43 | step_secuence=0x0A; |
juankafil1 | 1:748bf113818b | 44 | break; |
juankafil1 | 1:748bf113818b | 45 | case 1: |
juankafil1 | 1:748bf113818b | 46 | step_secuence=0x09; |
juankafil1 | 1:748bf113818b | 47 | g=g+2; |
juankafil1 | 1:748bf113818b | 48 | grados=(g/2)*15; |
juankafil1 | 1:748bf113818b | 49 | break; |
juankafil1 | 1:748bf113818b | 50 | case 2: |
juankafil1 | 1:748bf113818b | 51 | step_secuence=0x05; |
juankafil1 | 1:748bf113818b | 52 | break; |
juankafil1 | 1:748bf113818b | 53 | case 3: |
juankafil1 | 1:748bf113818b | 54 | step_secuence=0x06; |
juankafil1 | 1:748bf113818b | 55 | break; |
juankafil1 | 1:748bf113818b | 56 | } |
juankafil1 | 1:748bf113818b | 57 | ++k; |
juankafil1 | 1:748bf113818b | 58 | wait(0.2); |
juankafil1 | 1:748bf113818b | 59 | |
juankafil1 | 1:748bf113818b | 60 | } |
juankafil1 | 1:748bf113818b | 61 | } |
juankafil1 | 1:748bf113818b | 62 | void retro() // Retroceso motor |
juankafil1 | 1:748bf113818b | 63 | { |
juankafil1 | 1:748bf113818b | 64 | k=3; |
juankafil1 | 1:748bf113818b | 65 | for (int i = 0; i<=3; i++) { |
juankafil1 | 1:748bf113818b | 66 | if (k<=0) { |
juankafil1 | 1:748bf113818b | 67 | k=3; |
juankafil1 | 1:748bf113818b | 68 | } |
juankafil1 | 1:748bf113818b | 69 | switch (k) { |
juankafil1 | 1:748bf113818b | 70 | case 0: |
juankafil1 | 1:748bf113818b | 71 | step_secuence=0x0A; |
juankafil1 | 1:748bf113818b | 72 | break; |
juankafil1 | 1:748bf113818b | 73 | case 1: |
juankafil1 | 1:748bf113818b | 74 | step_secuence=0x09; |
juankafil1 | 1:748bf113818b | 75 | g=g+2; |
juankafil1 | 1:748bf113818b | 76 | grados=(g/2)*15; |
juankafil1 | 1:748bf113818b | 77 | break; |
juankafil1 | 1:748bf113818b | 78 | case 2: |
juankafil1 | 1:748bf113818b | 79 | step_secuence=0x05; |
juankafil1 | 1:748bf113818b | 80 | break; |
juankafil1 | 1:748bf113818b | 81 | case 3: |
juankafil1 | 1:748bf113818b | 82 | step_secuence=0x06; |
juankafil1 | 1:748bf113818b | 83 | break; |
juankafil1 | 1:748bf113818b | 84 | } |
juankafil1 | 1:748bf113818b | 85 | wait(0.2); |
juankafil1 | 1:748bf113818b | 86 | --k; |
juankafil1 | 1:748bf113818b | 87 | } |
juankafil1 | 1:748bf113818b | 88 | } |
juankafil1 | 1:748bf113818b | 89 | |
juankafil1 | 1:748bf113818b | 90 | void motor() { |
juankafil1 | 1:748bf113818b | 91 | if(color==1){ |
juankafil1 | 1:748bf113818b | 92 | if(N==1){ |
juankafil1 | 1:748bf113818b | 93 | while(aux<=2){ |
juankafil1 | 1:748bf113818b | 94 | forward(); |
juankafil1 | 1:748bf113818b | 95 | N=0;//ponemos la posicion anterior en 0 |
juankafil1 | 1:748bf113818b | 96 | aux=aux+1;//variable para el while |
juankafil1 | 1:748bf113818b | 97 | } |
juankafil1 | 1:748bf113818b | 98 | aux=0; } |
juankafil1 | 1:748bf113818b | 99 | else if(V==1){ |
juankafil1 | 1:748bf113818b | 100 | while(aux<=4){ |
juankafil1 | 1:748bf113818b | 101 | forward(); |
juankafil1 | 1:748bf113818b | 102 | V=0;//ponemos la posicion anterior en 0 |
juankafil1 | 1:748bf113818b | 103 | aux=aux+1;//variable para el while |
juankafil1 | 1:748bf113818b | 104 | } |
juankafil1 | 1:748bf113818b | 105 | aux=0; } |
juankafil1 | 1:748bf113818b | 106 | else if(A==1){ |
juankafil1 | 1:748bf113818b | 107 | while(aux<=2){ |
juankafil1 | 1:748bf113818b | 108 | retro(); |
juankafil1 | 1:748bf113818b | 109 | A=0;//ponemos la posicion anterior en 0 |
juankafil1 | 1:748bf113818b | 110 | aux=aux+1;//variable para el while |
juankafil1 | 1:748bf113818b | 111 | } aux=0; |
juankafil1 | 1:748bf113818b | 112 | |
juankafil1 | 1:748bf113818b | 113 | |
juankafil1 | 1:748bf113818b | 114 | } else { |
juankafil1 | 1:748bf113818b | 115 | rs232.printf("lea"); |
juankafil1 | 1:748bf113818b | 116 | } |
juankafil1 | 1:748bf113818b | 117 | |
juankafil1 | 1:748bf113818b | 118 | } |
juankafil1 | 1:748bf113818b | 119 | /*/case 2:]] |
juankafil1 | 1:748bf113818b | 120 | if(D==1){ |
juankafil1 | 1:748bf113818b | 121 | while(aux<=2){ |
juankafil1 | 1:748bf113818b | 122 | retro(); |
juankafil1 | 1:748bf113818b | 123 | D=0;//ponemos la posicion anterior en 0 |
juankafil1 | 1:748bf113818b | 124 | aux=aux+1;//variable para el while |
juankafil1 | 1:748bf113818b | 125 | } |
juankafil1 | 1:748bf113818b | 126 | aux=0; } |
juankafil1 | 1:748bf113818b | 127 | else if(V==1){ |
juankafil1 | 1:748bf113818b | 128 | while(aux<=2){ |
juankafil1 | 1:748bf113818b | 129 | forward(); |
juankafil1 | 1:748bf113818b | 130 | V=0;//ponemos la posicion anterior en 0 |
juankafil1 | 1:748bf113818b | 131 | aux=aux+1;//variable para el while |
juankafil1 | 1:748bf113818b | 132 | } |
juankafil1 | 1:748bf113818b | 133 | aux=0; } |
juankafil1 | 1:748bf113818b | 134 | else if(A==1){ |
juankafil1 | 1:748bf113818b | 135 | while(aux<=2){ |
juankafil1 | 1:748bf113818b | 136 | forward(); |
juankafil1 | 1:748bf113818b | 137 | A=0;//ponemos la posicion anterior en 0 |
juankafil1 | 1:748bf113818b | 138 | aux=aux+1;//variable para el while |
juankafil1 | 1:748bf113818b | 139 | } aux=0; |
juankafil1 | 1:748bf113818b | 140 | |
juankafil1 | 1:748bf113818b | 141 | |
juankafil1 | 1:748bf113818b | 142 | } if (N==1){ |
juankafil1 | 1:748bf113818b | 143 | rs232.printf("lea"); |
juankafil1 | 1:748bf113818b | 144 | } |
juankafil1 | 1:748bf113818b | 145 | }} //case 3: |
juankafil1 | 1:748bf113818b | 146 | //case 4:*/} |
juankafil1 | 0:07389ebe002b | 147 | void contadores(){ |
juankafil1 | 1:748bf113818b | 148 | if((frec>=3000)&&(frec<=6000)){ |
juankafil1 | 0:07389ebe002b | 149 | //lcd.locate(0,0); |
juankafil1 | 1:748bf113818b | 150 | |
juankafil1 | 0:07389ebe002b | 151 | oled.writeString(1, 0," "); |
juankafil1 | 0:07389ebe002b | 152 | oled.writeString(1, 0,"negro"); |
juankafil1 | 0:07389ebe002b | 153 | conn=conn+1;//aumento el contador |
juankafil1 | 1:748bf113818b | 154 | color=2; |
juankafil1 | 1:748bf113818b | 155 | N=1; |
juankafil1 | 1:748bf113818b | 156 | motor(); |
juankafil1 | 0:07389ebe002b | 157 | rs232.printf("N");//lcd.locate(0,1);//preparado para pubicar |
juankafil1 | 1:748bf113818b | 158 | //oled.writeString(0, 1,"I=%d",conn);//public |
juankafil1 | 0:07389ebe002b | 159 | wait(3);//retraso mientras pasa la caja |
juankafil1 | 0:07389ebe002b | 160 | |
juankafil1 | 0:07389ebe002b | 161 | // oled.writeString(1, 0," ");//borrar oled |
juankafil1 | 0:07389ebe002b | 162 | |
juankafil1 | 0:07389ebe002b | 163 | } |
juankafil1 | 1:748bf113818b | 164 | else if((frec>=8300)&&(frec<=14000)){ |
juankafil1 | 0:07389ebe002b | 165 | // lcd.locate(0,0); |
juankafil1 | 1:748bf113818b | 166 | |
juankafil1 | 0:07389ebe002b | 167 | oled.writeString(1, 0," ");//bo//borrar oledrrar oled |
juankafil1 | 0:07389ebe002b | 168 | oled.writeString(1, 0,"VIOLETA");//publico el color de la frecuencia |
juankafil1 | 0:07389ebe002b | 169 | conm=conm+1;//aumento el contador |
juankafil1 | 1:748bf113818b | 170 | rs232.printf("V"); |
juankafil1 | 0:07389ebe002b | 171 | //lcd.locate(0,1);//preparado para pubicar |
juankafil1 | 1:748bf113818b | 172 | |
juankafil1 | 1:748bf113818b | 173 | // color=3; |
juankafil1 | 1:748bf113818b | 174 | //V=1; |
juankafil1 | 1:748bf113818b | 175 | //oled.writeString(0, 1,"I=%d");//publico |
juankafil1 | 0:07389ebe002b | 176 | wait(3);//retraso mientras pasa la caja |
juankafil1 | 0:07389ebe002b | 177 | |
juankafil1 | 1:748bf113818b | 178 | //oled.writeString(1, 0," ");//borrar oled |
juankafil1 | 0:07389ebe002b | 179 | |
juankafil1 | 1:748bf113818b | 180 | }else if((frec>=17000)&&(frec<=25000)){ |
juankafil1 | 0:07389ebe002b | 181 | //lcd.locate(0,0); |
juankafil1 | 0:07389ebe002b | 182 | oled.writeString(1, 0," "); |
juankafil1 | 0:07389ebe002b | 183 | oled.writeString(1, 0,"Azul"); |
juankafil1 | 0:07389ebe002b | 184 | cona=cona+1;//aumento el contador |
juankafil1 | 1:748bf113818b | 185 | color=4; |
juankafil1 | 1:748bf113818b | 186 | A=1; |
juankafil1 | 1:748bf113818b | 187 | |
juankafil1 | 0:07389ebe002b | 188 | wait(3); |
juankafil1 | 0:07389ebe002b | 189 | |
juankafil1 | 0:07389ebe002b | 190 | rs232.printf("A");} |
juankafil1 | 0:07389ebe002b | 191 | |
juankafil1 | 0:07389ebe002b | 192 | else { |
juankafil1 | 0:07389ebe002b | 193 | |
juankafil1 | 0:07389ebe002b | 194 | oled.writeString(2, 1, "Caja no reconocida"); |
juankafil1 | 0:07389ebe002b | 195 | conN=conN+1; |
juankafil1 | 1:748bf113818b | 196 | |
juankafil1 | 1:748bf113818b | 197 | color=1; |
juankafil1 | 1:748bf113818b | 198 | rs232.printf("D"); |
juankafil1 | 1:748bf113818b | 199 | color=1; |
juankafil1 | 1:748bf113818b | 200 | D=1; |
juankafil1 | 1:748bf113818b | 201 | motor(); |
juankafil1 | 1:748bf113818b | 202 | wait(3); |
juankafil1 | 0:07389ebe002b | 203 | } |
juankafil1 | 1:748bf113818b | 204 | } |
juankafil1 | 1:748bf113818b | 205 | |
juankafil1 | 0:07389ebe002b | 206 | |
juankafil1 | 0:07389ebe002b | 207 | int main(){//clase principal |
juankafil1 | 0:07389ebe002b | 208 | |
juankafil1 | 0:07389ebe002b | 209 | rs232.baud(9600); |
juankafil1 | 0:07389ebe002b | 210 | int1.mode(PullUp);//habilitamos resistencia de PullUp |
juankafil1 | 0:07389ebe002b | 211 | int1.rise(&ISR_PTD0);//si hay flanco de subida se va a el programa, habilita la interrupcion |
juankafil1 | 1:748bf113818b | 212 | D=1; |
juankafil1 | 0:07389ebe002b | 213 | oled.writeString(1, 0," maquna On"); //mensaje inicial al encender la Oled |
juankafil1 | 0:07389ebe002b | 214 | wait(1); |
juankafil1 | 0:07389ebe002b | 215 | |
juankafil1 | 0:07389ebe002b | 216 | while(true){ |
juankafil1 | 0:07389ebe002b | 217 | frecuencia();//inicia el sub programa frecuenia |
juankafil1 | 1:748bf113818b | 218 | contadores(); |
juankafil1 | 1:748bf113818b | 219 | //inicia el programa de los contadores y publicacion de la frecuencia |
juankafil1 | 0:07389ebe002b | 220 | ///rs232.printf("F=%d\n\r",frec); |
juankafil1 | 0:07389ebe002b | 221 | //lcd.locate(0,1); |
juankafil1 | 0:07389ebe002b | 222 | ///rs232.printf("F=%d hz\r",frec); |
juankafil1 | 0:07389ebe002b | 223 | //lcd.printf("juan");// publica el valor frec donde quiera |
juankafil1 | 0:07389ebe002b | 224 | //wait(0.5);///retraso de para publicar |
juankafil1 | 1:748bf113818b | 225 | } |
juankafil1 | 1:748bf113818b | 226 | } |
juankafil1 | 1:748bf113818b | 227 | |
juankafil1 | 0:07389ebe002b | 228 | |
juankafil1 | 0:07389ebe002b | 229 | |
juankafil1 | 0:07389ebe002b | 230 | /*int main() { |
juankafil1 | 0:07389ebe002b | 231 | oled.writeString(0, 0, "Universidad Distrital"); |
juankafil1 | 0:07389ebe002b | 232 | // oled.printf("Hello World !"); |
juankafil1 | 0:07389ebe002b | 233 | wait(1); |
juankafil1 | 0:07389ebe002b | 234 | |
juankafil1 | 0:07389ebe002b | 235 | oled.writeString(0, 0, "2017 Digitales II"); |
juankafil1 | 0:07389ebe002b | 236 | |
juankafil1 | 0:07389ebe002b | 237 | |
juankafil1 | 0:07389ebe002b | 238 | |
juankafil1 | 0:07389ebe002b | 239 | n }*/ |
juankafil1 | 0:07389ebe002b | 240 |