Electronica
/
PROYECTO
poyecto
Diff: main.cpp
- Revision:
- 0:cf20365296f5
diff -r 000000000000 -r cf20365296f5 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Dec 14 10:50:46 2021 +0000 @@ -0,0 +1,184 @@ +#include "mbed.h" +#include "math.h" + +Serial pc(USBTX, USBRX); // tx, rx + +AnalogIn senal(A0); +DigitalOut dirAMotor(A4); +PwmOut dirBMotor(A3); +InterruptIn encoderA(A2);//puede ser D11 +DigitalIn final1(D9); +InterruptIn final2(D10); +DigitalOut rele(A5); +DigitalOut led(LED1); +HCSR04 usensor(D7,D8); +DigitalOut enableMotor(D1); +DigitalOut step(D2); +DigitalIn boton_motor(USER_BUTTON); +DigitalIn boton_(USER_BUTTON);//HAY QUE PONER ALGO +Ticker tickerMideDistancia; + +int contador=0; +unsigned int dist; +enum estados {apagado_sistema, finalcarrera1_dado, finalcarrera1_SINdar, } + +void paso(int d) +{ + dir=d; + step=1; + wait_us(100); + step=0;//MIRAR ESTO PORQUE AQUI DICE QUE SE VA A PARAR + wait_us(900); +} + + +void finalIrq() +{ + pc.printf("Final2 pulsado\r\n"); +} + +void encoderAIrq() +{ + contador++; +} + +void apagado_sistema() +{ + if (boton_motor==1 && boton_pantalla==1) { + enableMotor=1; + estado = finalcarrera1_SINdar; + //encender pantalla + } else if(boton_pantalla!=1 || boton_motor==1 ) { + pc.printf("Pulsa los dos botones"); + } +} + +void finalcarrera1_dado() +{ + if (final1!=1) { + estado = finalcarrera1_SINdar; + step =1; + paso(1); + + } else if (final1 ==1){ + rele =0; + enableMotor=0; + step=0;//HABILITO EL PASO + } +} + +void finalcarrera1_SINdar() +{ + if (boton_)//ESTO SIRVE PARA QUE LA DIRECCION EN LA QUE ESTA ACTUANDO CAMBIE + if()//PARA EL GIRO DE MOTOR PERO QUE TODO SIGA + if (temperatura >= 353) { + //rele =0; + //enableMotor=0; + //step=0; + //pordríamos meter el motorcillo del ventilador para que se refrigere el motor + //poner mensaje en pantalla de que se ha superado la temperaura de trabajo + // + dirAMotor;//COMO SE ACTIVA EL DIR??? + estado = ; + } else if (dist<10) {//MIRAR LO POR QUE NO SABEMOS + //rele =0; + //enableMotor=0; + //step=0; + paso(0); + estado = ; + paso(0); + } +else if (final2==1){ + rele =0; + //enableMotor=0; + //step=0; + estado = ; + + + } + + int main() { + pc.baud(115200); + encoderA.rise(&encoderAIrq); // attach the address of the flip function to the rising edge + dirAMotor=0; +//Ultrasonido + usensor.start(); + ; + while (true) { + switch (estado) { + case apagado_boton_motor: + apagado_boton(); + break; + case apagado_boton_pantalla: + apagado_boton_pantalla(); + break; + case finalcarrera1_dado: + finalcarrera1_dado(); + break; + + //Vueltas del motor + for (float i=0; i<1; i=i+0.01) { + dirBMotor=i; + //wait(0.100); + } + pc.printf("Vueltas: %d\r\n",contador); + contador=0; + + //lectura del voltaje + float tension=senal.read()*3.3; + pc.printf("Valor voltios %.4f leido flat\n",tension); + uint16_t datonentero=senal.read_u16(); + tension=(datonentero*3.3)/65536; + pc.printf("Valor voltios %.4f leido flat\n",tension); + //wait(1.0); + + //Final de carrera + if(final1==1) { + pc.printf("Final1 pulsado\r\n"); + + } else { + pc.printf("Final1 no pulsado\r\n"); + //Rele + rele=1;//activación del rele para queempiece a calentar, emula el calentamiento de taladro + led=1; + step =1; + dist=usensor.get_dist_cm(); + pc.printf("Distance =%d\n",dist);//mostrar distancia en la que se va a mover + //wait(1.0); + //rele=0; + //led=0; + //wait(1.0); + //Vout=(3,3/(Rt+100k))*100k + //Vout/100k = (3,3/(Rt+100K)) + //Vout/(100k*3,3)=1/(Rt+100K) + //(Rt+100K)=((100k*3,3)/Vout) + //Rt=((100k*3,3)/Vout)-100k + Rt= ((100e3*3.3)/tension)-100e3; + temperatura = 3950/(log(Rt/100e3)+(3950/298)); + pc.printf("La temperatura es de %.4f\n",temperatura); + if (temperatura >= 353) { + rele =0; + enableMotor=0; + step=0; + //pordríamos meter el motorcillo del ventilador para que se refrigere el motor + //poner mensaje en pantalla de que se ha superado la temperaura de trabajo + } + if (dist>=15) { + rele =0; + enableMotor=0; + step=0; + } + + } + + } +//wait(0.100); + +//Ultrasonido + usensor.start(); + dist=usensor.get_dist_cm(); + pc.printf("Distance =%d\n",dist); + wait_ms(500); + } + + } \ No newline at end of file