dsbnajdnas
Dependencies: Adafruit_GFX SSD1306_128x64_I2C mbed
Revision 1:748bf113818b, committed 2017-11-29
- Comitter:
- juankafil1
- Date:
- Wed Nov 29 02:15:51 2017 +0000
- Parent:
- 0:07389ebe002b
- Commit message:
- probar
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 07389ebe002b -r 748bf113818b main.cpp --- a/main.cpp Sun Nov 19 22:00:22 2017 +0000 +++ b/main.cpp Wed Nov 29 02:15:51 2017 +0000 @@ -13,9 +13,10 @@ Timer Timer1; InterruptIn int1(PTD0); - -unsigned int contador=0,frec=0,conn=0,conm=0,cona=0, conN=0; - + BusOut step_secuence( PTD6, PTA17, PTA16 ,PTC17); +unsigned int contador=0,frec=0,conn=0,conm=0,cona=0,conN=0,aux=0; +uint16_t color=0,A=0,V=0,N=0,D=0,k=0; +int g=0,grados=0; void ISR_PTD0(){//cuenta los pulsos ++contador;} @@ -28,38 +29,162 @@ frec=100*contador;//lo multiplicamos por 100 Timer1.reset();}//reinicia el timer + + void forward() // Avance motor +{ + + k=0; + for (int i = 0; i<=4; i++) {//avance asi delante + if (k>=4) { + k=0; + } + switch (k) { + case 0: + step_secuence=0x0A; + break; + case 1: + step_secuence=0x09; + g=g+2; + grados=(g/2)*15; + break; + case 2: + step_secuence=0x05; + break; + case 3: + step_secuence=0x06; + break; + } + ++k; + wait(0.2); + + } + } + void retro() // Retroceso motor +{ + k=3; + for (int i = 0; i<=3; i++) { + if (k<=0) { + k=3; + } + switch (k) { + case 0: + step_secuence=0x0A; + break; + case 1: + step_secuence=0x09; + g=g+2; + grados=(g/2)*15; + break; + case 2: + step_secuence=0x05; + break; + case 3: + step_secuence=0x06; + break; + } + wait(0.2); + --k; + } +} + +void motor() { + if(color==1){ + if(N==1){ + while(aux<=2){ + forward(); + N=0;//ponemos la posicion anterior en 0 + aux=aux+1;//variable para el while + } + aux=0; } + else if(V==1){ + while(aux<=4){ + forward(); + V=0;//ponemos la posicion anterior en 0 + aux=aux+1;//variable para el while + } + aux=0; } + else if(A==1){ + while(aux<=2){ + retro(); + A=0;//ponemos la posicion anterior en 0 + aux=aux+1;//variable para el while + } aux=0; + + + } else { + rs232.printf("lea"); + } + + } + /*/case 2:]] + if(D==1){ + while(aux<=2){ + retro(); + D=0;//ponemos la posicion anterior en 0 + aux=aux+1;//variable para el while + } + aux=0; } + else if(V==1){ + while(aux<=2){ + forward(); + V=0;//ponemos la posicion anterior en 0 + aux=aux+1;//variable para el while + } + aux=0; } + else if(A==1){ + while(aux<=2){ + forward(); + A=0;//ponemos la posicion anterior en 0 + aux=aux+1;//variable para el while + } aux=0; + + + } if (N==1){ + rs232.printf("lea"); + } + }} //case 3: + //case 4:*/} void contadores(){ - if((frec>=10000)&&(frec<=22000)){ + if((frec>=3000)&&(frec<=6000)){ //lcd.locate(0,0); + oled.writeString(1, 0," "); oled.writeString(1, 0,"negro"); conn=conn+1;//aumento el contador - + color=2; + N=1; + motor(); rs232.printf("N");//lcd.locate(0,1);//preparado para pubicar - //oled.writeString(0, 1,"I=%d",conn);//publico + //oled.writeString(0, 1,"I=%d",conn);//public wait(3);//retraso mientras pasa la caja // oled.writeString(1, 0," ");//borrar oled } - else if((frec>=28000)&&(frec<=66000)){ + else if((frec>=8300)&&(frec<=14000)){ // lcd.locate(0,0); - + oled.writeString(1, 0," ");//bo//borrar oledrrar oled oled.writeString(1, 0,"VIOLETA");//publico el color de la frecuencia conm=conm+1;//aumento el contador - rs232.printf(""); + rs232.printf("V"); //lcd.locate(0,1);//preparado para pubicar - //oled.writeString(0, 1,"I=%d");//publico + + // color=3; + //V=1; + //oled.writeString(0, 1,"I=%d");//publico wait(3);//retraso mientras pasa la caja - oled.writeString(1, 0," ");//borrar oled + //oled.writeString(1, 0," ");//borrar oled - }else if((frec>=45000)&&(frec<=110000)){ + }else if((frec>=17000)&&(frec<=25000)){ //lcd.locate(0,0); oled.writeString(1, 0," "); oled.writeString(1, 0,"Azul"); cona=cona+1;//aumento el contador + color=4; + A=1; + wait(3); rs232.printf("A");} @@ -68,30 +193,38 @@ oled.writeString(2, 1, "Caja no reconocida"); conN=conN+1; - wait(3); - + + color=1; + rs232.printf("D"); + color=1; + D=1; + motor(); + wait(3); } - } + } + int main(){//clase principal rs232.baud(9600); int1.mode(PullUp);//habilitamos resistencia de PullUp int1.rise(&ISR_PTD0);//si hay flanco de subida se va a el programa, habilita la interrupcion - //lcd.locate(0,0); + D=1; oled.writeString(1, 0," maquna On"); //mensaje inicial al encender la Oled wait(1); while(true){ frecuencia();//inicia el sub programa frecuenia - contadores();//inicia el programa de los contadores y publicacion de la frecuencia + contadores(); + //inicia el programa de los contadores y publicacion de la frecuencia ///rs232.printf("F=%d\n\r",frec); //lcd.locate(0,1); ///rs232.printf("F=%d hz\r",frec); //lcd.printf("juan");// publica el valor frec donde quiera //wait(0.5);///retraso de para publicar - } - } + } + } + /*int main() {