Hola urueña
Dependencies: DS1302 HCSR04 SSD1306_128x64_I2C Servo mbed stop
Fork of DisplayOled1 by
Diff: main.cpp
- Revision:
- 3:de4b6b2e0202
- Parent:
- 2:5d1c146e04d4
--- a/main.cpp Fri Sep 22 23:00:52 2017 +0000 +++ b/main.cpp Sun May 06 23:49:39 2018 +0000 @@ -1,74 +1,102 @@ - #include "mbed.h" - #include "flechaabajo.h" - #include "flechaarriba.h" - #include "stop.h" - #include "sobrepeso.h" - #include "GameOver.h" - #include "Mike.h" - #include "SSD1306.h" +#include "mbed.h" +#include "SSD1306.h" +#include "Servo.h" +#include "HCSR04.h" + +#define SCLK PTC5 +#define IO PTC4 +#define CE PTC3 +#include "DS1302.h" + +Servo myservo(PTD4); +Timer timer; +AnalogIn ain(A0); +DS1302 clk(SCLK, IO, PTC3); + +#define D_SDA PTC11 +#define D_SCL PTC10 +I2C i2c(D_SDA, D_SCL); + +SPI spi(PTD2, PTD3, PTD1); //MOSI MISO Y SCLK +//DigitalOut K(PTD5); +Serial pc(USBTX, USBRX); - #define D_SDA PTC11 - #define D_SCL PTC10 - I2C i2c(D_SDA, D_SCL); - //Serial pc(USBTX, USBRX); // tx, rx - //Serial device(PTE0, PTE1); - char x; +char x[10]; +int i=0,cs2=0; +int dato3; +uint16_t adcvalue ; +float voltaje ; + +SSD1306 oled = SSD1306(i2c, SSD1308_SA0); + + +int main() +{ + +#ifdef INITIAL_RUN + clk.set_time(1512485768); +#endif + + char storedByte = clk.recallByte(0); + printf("Stored byte was %d, now increasing by one\r\n", storedByte); + clk.storeByte(0, storedByte + 2); + + HCSR04 sensor(PTD5, PTA13); + sensor.setRanges(10, 110); + pc.printf("Min. range = %g cm\n\rMax. range = %g cm\n\r", + sensor.getMinRange(), sensor.getMaxRange()); - - SSD1306 oled = SSD1306(i2c, SSD1308_SA0); - - int main() { - // if(device.readable()) { - // pc.putc(device.getc()); - //oled.writeString(0,3,"Andres perra"); - // } - - oled.writeBitmap((uint8_t*) Pikachu); - /*oled.setDisplayOff(); - wait(0.2); - oled.setDisplayOn(); - wait(0.2); - oled.writeBitmap((uint8_t*) sobrepeso); - oled.setDisplayOff(); - wait(0.2); - oled.setDisplayOn(); - wait(0.2); - oled.writeBitmap((uint8_t*) sobrepeso); - oled.setDisplayOff(); - wait(0.2); - oled.setDisplayOn(); - wait(0.2); - oled.writeBitmap((uint8_t*) sobrepeso); - oled.setDisplayOff(); - wait(0.2); - oled.setDisplayOn(); - wait(0.2); - oled.writeBitmap((uint8_t*) sobrepeso); - oled.setDisplayOff(); - wait(0.2); - oled.setDisplayOn();*/ - - - - while(1){ - - - /*device.getc(); - if (x=='a'){ - oled.writeString(1, 3, "Primer Piso"); - } - if (x=='b'){ - oled.writeString(1, 3, "Segundo Piso"); - } - if (x=='c'){ - oled.writeString(1, 3, "Tercer Piso"); - } - if (x=='d'){ - oled.writeString(1, 3, "Cuarto Piso"); - }*/ - } + while(1) { + time_t seconds = clk.time(NULL); + sprintf(x,"%s\r", ctime(&seconds)); + oled.writeString(0, 5, x);//Fecha publicada + + //Inicio termocupla + DigitalOut (PTD0, 1); + spi.format(8,3); + spi.frequency(1000000); + wait_ms(700); + DigitalOut (PTD0, 0); + spi.write(0x00); + int dato = spi.write(0xFF); + int dato2 = spi.write(0xFF); + dato3 = (((dato2*256 + dato)/8)/4); + //pc.printf("%d\n", dato3); + + DigitalOut (PTD0, 1); + oled.writeProgressBar(2,4,dato3*2); + oled.writeString(2, 8, "Temp."); + //Fin termocupla - } + //inicio servo + adcvalue = ain.read_u16(); + voltaje = ((adcvalue*100)/65536); + myservo = voltaje/100.0; + oled.writeLevelBar(6,4,voltaje); + oled.writeString(6, 8, "Ang."); + //fin servo + + + //INICIO ULTRASÓNICO + timer.reset(); + timer.start(); + sensor.startMeasurement(); + while(!sensor.isNewDataReady()) { + // wait for new data + // waiting time depends on the distance + + } + //pc.printf("Distance: %5.1f cm\r\n", sensor.getDistance_cm()); + pc.printf("%u\n", sensor.getDistance_cm()); + timer.stop(); + wait_ms(500 - timer.read_ms()); + oled.writeProgressBar(4,4,sensor.getDistance_cm()); + oled.writeString(4, 8, "Dist."); + //FIN ULTRASONICO + wait_ms(1000); + } + +} \ No newline at end of file