dsbnajdnas

Dependencies:   Adafruit_GFX SSD1306_128x64_I2C mbed

Committer:
juankafil1
Date:
Wed Nov 29 02:15:51 2017 +0000
Revision:
1:748bf113818b
Parent:
0:07389ebe002b
probar

Who changed what in which revision?

UserRevisionLine numberNew 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