Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Adafruit_GFX
main.cpp
- Committer:
- agat
- Date:
- 2021-12-15
- Revision:
- 2:fd3b989cedcd
- Parent:
- 1:1d515eb7abf3
- Child:
- 3:3fbadf6c492f
File content as of revision 2:fd3b989cedcd:
#include "mbed.h" #include "math.h" #include "Adafruit_SSD1306.h" //#include "hcsr04.h" class I2CPreInit : public I2C { public: I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl) { frequency(100000); start(); }; }; I2CPreInit gI2C(PB_9,PB_8); // an SPI sub-class that provides a constructed default Adafruit_SSD1306_I2c gOled(gI2C,NC,0x78,64,128); Serial pc(USBTX, USBRX); // tx, rx Ticker tickerMideDistancia; Ticker visualTemp; unsigned distancia=1000; AnalogIn senal(A0); DigitalIn final1(D9); DigitalIn final2(D10); DigitalOut step(D2); DigitalOut dir(A4); DigitalOut enableMotor(D11); DigitalIn boton_inicial(D3); DigitalOut dirAMotor(D4);//M121 PwmOut dirBMotor(D5);//M121 DigitalOut rele(D6);//Rcal //InterruptIn encoderA(A2); Timer t; float temperatura; enum estados {reset, apagado, encendido, motorpalante,atras, estatico }; estados estado; //HCSR04 usensor(D7,D8); //(PinName TrigPin,PinName EchoPin): void paso(int d) { dir=d; step=1; wait_us(100); step=0; wait_us(900); } void estadoreset() { if (final1!=1) { enableMotor=1; paso(0); } else if (final1 ==1) { estado = apagado; enableMotor =0; } } void estadoapagado() { if (boton_inicial==1) { enableMotor=1; estado= motorpalante; t.reset(); } } /*void estadoencendido() { if (boton_inicial==0) { paso(1); estado = motorpalante; } }*/ void estadomotorpalante() { //if (final2) if (boton_inicial==0&&final2==0) { paso(1); dirAMotor=1; rele =1; } else if (final2==1) { int tiempo=t.read(); //pc.printf("La temperatura es de %.4f\n",temperatura); gOled.clearDisplay(); gOled.printf("La temperatura es de %.4f\n",temperatura); gOled.display(); gOled.setTextCursor(0,0); // pc.printf("El tiempo transcurrido es de %d\n",tiempo); //pc.printf("La temperatura es de %.4f\n",temperatura); //dirAMotor=0; wait(2.0); //enableMotor=0; //rele=0; //if (final2==1) { estado=atras; //} //Print en pantalla con el Oled. } } void estadoatras() { if (final2!=1 && boton_inicial==1 && final1!=1) { enableMotor=0; rele=0; dirAMotor=0; estado= estatico; } else if (final1 ==1) { estado = motorpalante; } else { paso(0); } } void muestraTemp() { pc.printf("La temperatura es de %.4f\n",temperatura); gOled.clearDisplay(); gOled.printf("La temperatura es de %.4f\n",temperatura); gOled.display(); gOled.setTextCursor(0,0); } void medir() { float tension=senal.read()*3.3; float Rt= 100e3*((3.3-tension)/tension); temperatura = (3950/(log(Rt/100e3)+(3950/298)))-273.1; } int main() { pc.baud(115200); gOled.begin(); gOled.clearDisplay(); gOled.printf("Hola"); gOled.display(); gOled.setTextCursor(0,0); //visualTemp.attach(&muestraTemp,1.0); //tickerMideDistancia.attach(&mideDistancia, 0.5); estado=reset; step=1; enableMotor =1; pc.printf("Estado cerrada\n"); t.start(); while(1) { medir(); //distancia=usensor.get_dist_cm(); switch ( estado ) { case reset: estadoreset(); pc.printf("Estado reset\n"); break; case apagado: estadoapagado(); pc.printf("Estado apagado\n"); break; /* case encendido: pc.printf("HOLI2"); estadoencendido(); break;*/ case motorpalante: estadomotorpalante(); pc.printf("Estado alante\n"); break; case atras: estadoatras(); pc.printf("Estado atras\n"); break; case estatico: pc.printf("Estado estatico\n"); //estadoestatico(); break; /*case cerrada: estadoCerrada(); break; case abriendose: estadoAbriendose(); break; case abierta: estadoAbierta(); break; case cerrandose: estadoCerrandose(); break; default: break; }*/ } } }