dsbnajdnas
Dependencies: Adafruit_GFX SSD1306_128x64_I2C mbed
main.cpp
- Committer:
- juankafil1
- Date:
- 2017-11-29
- Revision:
- 1:748bf113818b
- Parent:
- 0:07389ebe002b
File content as of revision 1:748bf113818b:
#include "mbed.h" #include "SSD1306.h" Serial rs232(USBTX,USBRX); #define D_SDA PTE0//25// #define D_SCL PTE1//24// I2C i2c(D_SDA, D_SCL); SSD1306 oled = SSD1306(i2c, SSD1308_SA0); Timer Timer1; InterruptIn int1(PTD0); 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;} void frecuencia(){ contador=0; Timer1.start();//arranca temporizador while(Timer1.read_ms()<=10);//cuando lleve a 10 ms pare Timer1.stop();//lo detengo 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>=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);//public wait(3);//retraso mientras pasa la caja // oled.writeString(1, 0," ");//borrar oled } 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("V"); //lcd.locate(0,1);//preparado para pubicar // color=3; //V=1; //oled.writeString(0, 1,"I=%d");//publico wait(3);//retraso mientras pasa la caja //oled.writeString(1, 0," ");//borrar oled }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");} else { oled.writeString(2, 1, "Caja no reconocida"); conN=conN+1; 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 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 ///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() { oled.writeString(0, 0, "Universidad Distrital"); // oled.printf("Hello World !"); wait(1); oled.writeString(0, 0, "2017 Digitales II"); n }*/