ultimaact
Dependencies: mbed Adafruit_GFX DS1820
Diff: main.cpp
- Revision:
- 14:21cb6b2ac16b
- Parent:
- 13:d2c49ef3b2ac
--- a/main.cpp Tue Dec 14 12:27:41 2021 +0000 +++ b/main.cpp Tue Dec 14 13:05:02 2021 +0000 @@ -4,7 +4,7 @@ #include "Adafruit_SSD1306.h" - + class I2CPreInit : public I2C { public: @@ -14,12 +14,12 @@ 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); @@ -36,22 +36,22 @@ DigitalOut step(D13); DigitalOut dir(D12); DigitalOut enable(D11); -DigitalOut led(LED1); -DS1820 ds1820(D10); // substitute PA_9 with actual mbed pin name connected to the DS1820 data pin +DigitalOut led(LED1); +DS1820 ds1820(D10); // substitute PA_9 with actual mbed pin name connected to the DS1820 data pin //gitalOut rele(A5); - + float temp = 0; int contador=0; -int x=1; -int y=0; +char x='0'; +char y='0'; //if (x==1){ - //y=0; - // }else{ - // y=1; - // } +//y=0; +// }else{ +// y=1; +// } //////////////// Timer tiempo; @@ -76,117 +76,116 @@ void estadoCerrada() { - if (x==1){ - if( (finalIzq == 1) && contador <3) { - wait(0.5); - enable=1; - estado=abriendose; - // pc.printf("Distance =%d\n",distancia); - pc.printf("Final2 pulsado\r\n"); - - - //distancia < 5 - }else if(contador==3){ - y=1; - x=0; + if (x=='1') { + if( (finalIzq == 1) && contador <3) { + wait(0.5); + enable=1; + estado=abriendose; + // pc.printf("Distance =%d\n",distancia); + pc.printf("Final2 pulsado\r\n"); + + + //distancia < 5 + } else if(contador==3) { + y='1'; + x='0'; } } - if(x==0 &&y==0){ + if(x=='0' &&y=='0') { pc.printf("No seleccionado programa\r\n"); + } + + + if(y=='1') { + if(finalIzq == 1 && finalDer==1) { + + enable=1; + tiempo.reset(); + tiempo.start(); + estado=abriendose; } - - - if(y==1){ - if(finalIzq == 1 && finalDer==1){ - - enable=1; - tiempo.reset(); - tiempo.start(); - estado=abriendose; - } - } - - + } + + } void estadoAbriendose() { - - if(x==1){ - //pc.printf("Distance =%d\n",distancia); - if((finalDer==1)) { - - estado=abierta; - enable=0; - - } else { - gOled.clearDisplay(); - - paso(1); - //pc.printf("paso\n"); - - } + + if(x=='1') { + //pc.printf("Distance =%d\n",distancia); + if((finalDer==1)) { + + estado=abierta; + enable=0; + + } else { + gOled.clearDisplay(); + + paso(1); + //pc.printf("paso\n"); + + } } - // if (distancia<4){ - //estado=cerrandose; - - // } - if(y==1){ - - - if(tiempo.read()<0.5){ - paso(1); - } - else if(finalIzq==0){ - paso(0); - } - else{ - estado=cerrada; - } - - } - - + // if (distancia<4){ + //estado=cerrandose; + + // } + if(y=='1') { + + + if(tiempo.read()<0.5) { + paso(1); + } else if(finalIzq==0) { + paso(0); + } else { + estado=cerrada; + } + + } + + } -void estadoCerrandose(){ - //pc.printf("Distance =%d\n",distancia); - if(x==1){ - if((finalIzq==1)) { - - estado=cerrada; - enable=0; - } else { - - paso(0); - //pc.printf("paso\n"); - +void estadoCerrandose() +{ + //pc.printf("Distance =%d\n",distancia); + if(x=='1') { + if((finalIzq==1)) { + + estado=cerrada; + enable=0; + } else { + + paso(0); + //pc.printf("paso\n"); + + } } - } - - + + } void estadoAbierta() { //pc.printf("Distance =%d\n",distancia); //if (finalDer==1) { - - - enable=1; - estado=cerrandose; - pc.printf("Final1 pulsado\r\n"); - + + + enable=1; + estado=cerrandose; + pc.printf("Final1 pulsado\r\n"); + //} contador++; gOled.clearDisplay(); gOled.printf("piezas transportadas %d\n",contador); gOled.printf("temp = %3.1f C\r\n", temp); gOled.display(); - gOled.setTextCursor(0,0); - - - + gOled.setTextCursor(0,0); + + + } int main() @@ -194,69 +193,71 @@ pc.baud(115200); tickerMideDistancia.attach(&mideDistancia, 0.5); estado=cerrada; - gOled.begin(); + gOled.begin(); gOled.clearDisplay(); - gOled.printf("Hola\n"); - gOled.display(); - //x=(pc.getc()); + gOled.printf("Hola\n"); + gOled.display(); + //x=(pc.getc()); //pc.printf("Estado cerrada\n"); - if(x==1){ + if(x==1) { gOled.clearDisplay(); - gOled.printf("Programa de transporte de piezas\n"); - gOled.display(); - } - - if(y==1){ + gOled.printf("Programa de transporte de piezas\n"); + gOled.display(); + } + + if(y==1) { gOled.clearDisplay(); - gOled.printf("Programa de taladro\n"); - gOled.display(); - } + gOled.printf("Programa de taladro\n"); + gOled.display(); + } tiempo.reset(); - - int error = 0; + + int error = 0; pc.baud(115200); - + if(ds1820.begin()) { while(1) { - - + + ds1820.startConversion(); // start temperature conversion from analog to digital - wait(1.0); // let DS1820 complete the temperature conversion + wait(1.0); // let DS1820 complete the temperature conversion error = ds1820.read(temp); // read temperature from DS1820 and perform cyclic redundancy check (CRC) switch(error) { - case 0: // no errors -> 'temp' contains the value of measured temperature - pc.printf("temp = %3.1f C\r\n", temp); - break; - case 1: // no sensor present -> 'temp' is not updated - pc.printf("no sensor present\n\r"); - break; - case 2: // CRC error -> 'temp' is not updated - pc.printf("CRC error\r\n"); - } + case 0: // no errors -> 'temp' contains the value of measured temperature + pc.printf("temp = %3.1f C\r\n", temp); + break; + case 1: // no sensor present -> 'temp' is not updated + pc.printf("no sensor present\n\r"); + break; + case 2: // CRC error -> 'temp' is not updated + pc.printf("CRC error\r\n"); + } led = !led; } } else pc.printf("No DS1820 sensor found!\r\n"); - - - - - + + + + + while(1) { distancia=usensor.get_dist_cm(); - + if(pc.readable()) { + x=(pc.getc()); + } //calefactor - // rele=1; - // led=1; +// rele=1; +// led=1; // wait(1.0); - // rele=0; +// rele=0; // led=0; - // wait(1.0); +// wait(1.0); // if(pc.readable()) { x=(pc.getc()); } - + switch ( estado ) { case cerrada: estadoCerrada();