final DA
Dependencies: mbed mbed-rtos AM2320 Adafruit_GFX TextLCD ssd1306_library
main.cpp@0:1e97811b8a15, 2020-11-04 (annotated)
- Committer:
- Jhonattan38
- Date:
- Wed Nov 04 17:19:56 2020 +0000
- Revision:
- 0:1e97811b8a15
final
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jhonattan38 | 0:1e97811b8a15 | 1 | #include "mbed.h" |
Jhonattan38 | 0:1e97811b8a15 | 2 | #include "stdlib.h" |
Jhonattan38 | 0:1e97811b8a15 | 3 | #include "TextLCD.h" |
Jhonattan38 | 0:1e97811b8a15 | 4 | #include "AM2320.h" |
Jhonattan38 | 0:1e97811b8a15 | 5 | //------------------------ |
Jhonattan38 | 0:1e97811b8a15 | 6 | #include "Adafruit_SSD1306.h" |
Jhonattan38 | 0:1e97811b8a15 | 7 | #include "Adafruit_GFX.h" |
Jhonattan38 | 0:1e97811b8a15 | 8 | #include "Adafruit_GFX_Config.h" |
Jhonattan38 | 0:1e97811b8a15 | 9 | #include "rtos.h" |
Jhonattan38 | 0:1e97811b8a15 | 10 | //------------------------ |
Jhonattan38 | 0:1e97811b8a15 | 11 | |
Jhonattan38 | 0:1e97811b8a15 | 12 | |
Jhonattan38 | 0:1e97811b8a15 | 13 | AnalogIn HPF(PA_0), BPF(PA_1), LPF(PA_4); |
Jhonattan38 | 0:1e97811b8a15 | 14 | TextLCD pantalla(PA_8,PA_9,PA_10,PB_3,PB_4,PB_5,TextLCD::LCD16x2); |
Jhonattan38 | 0:1e97811b8a15 | 15 | Serial pc(PB_10,PB_11); |
Jhonattan38 | 0:1e97811b8a15 | 16 | DigitalOut led(PC_13); |
Jhonattan38 | 0:1e97811b8a15 | 17 | I2C i2c(PB_9,PB_8); |
Jhonattan38 | 0:1e97811b8a15 | 18 | AM2320 am2320(i2c); |
Jhonattan38 | 0:1e97811b8a15 | 19 | I2CSlave i2c2(PB_9,PB_8); |
Jhonattan38 | 0:1e97811b8a15 | 20 | |
Jhonattan38 | 0:1e97811b8a15 | 21 | Adafruit_SSD1306_I2c oled(i2c,PB_7,0x78,64,128); |
Jhonattan38 | 0:1e97811b8a15 | 22 | |
Jhonattan38 | 0:1e97811b8a15 | 23 | Ticker T,ticker; |
Jhonattan38 | 0:1e97811b8a15 | 24 | |
Jhonattan38 | 0:1e97811b8a15 | 25 | InterruptIn calibrador(PA_7),calibrador2(PA_6); |
Jhonattan38 | 0:1e97811b8a15 | 26 | |
Jhonattan38 | 0:1e97811b8a15 | 27 | //// |
Jhonattan38 | 0:1e97811b8a15 | 28 | struct PROYECT : Adafruit_GFX { |
Jhonattan38 | 0:1e97811b8a15 | 29 | PROYECT(int16_t x, int16_t y): Adafruit_GFX (x,y){} |
Jhonattan38 | 0:1e97811b8a15 | 30 | }; |
Jhonattan38 | 0:1e97811b8a15 | 31 | //// |
Jhonattan38 | 0:1e97811b8a15 | 32 | void OLED(); |
Jhonattan38 | 0:1e97811b8a15 | 33 | char msg[10]; |
Jhonattan38 | 0:1e97811b8a15 | 34 | float humedad; |
Jhonattan38 | 0:1e97811b8a15 | 35 | float temperatura,t,t2; |
Jhonattan38 | 0:1e97811b8a15 | 36 | bool bandera=false; |
Jhonattan38 | 0:1e97811b8a15 | 37 | |
Jhonattan38 | 0:1e97811b8a15 | 38 | void calibrar_Up(){ |
Jhonattan38 | 0:1e97811b8a15 | 39 | bandera=true; |
Jhonattan38 | 0:1e97811b8a15 | 40 | if((calibrador!=0)&&(bandera==true)){ |
Jhonattan38 | 0:1e97811b8a15 | 41 | t2++; |
Jhonattan38 | 0:1e97811b8a15 | 42 | bandera=false; |
Jhonattan38 | 0:1e97811b8a15 | 43 | } |
Jhonattan38 | 0:1e97811b8a15 | 44 | } |
Jhonattan38 | 0:1e97811b8a15 | 45 | |
Jhonattan38 | 0:1e97811b8a15 | 46 | void calibrar_Down(){ |
Jhonattan38 | 0:1e97811b8a15 | 47 | bandera=true; |
Jhonattan38 | 0:1e97811b8a15 | 48 | if((calibrador!=0)&&(bandera==true)){ |
Jhonattan38 | 0:1e97811b8a15 | 49 | t2--; |
Jhonattan38 | 0:1e97811b8a15 | 50 | bandera=false; |
Jhonattan38 | 0:1e97811b8a15 | 51 | } |
Jhonattan38 | 0:1e97811b8a15 | 52 | } |
Jhonattan38 | 0:1e97811b8a15 | 53 | |
Jhonattan38 | 0:1e97811b8a15 | 54 | void inicio(void); |
Jhonattan38 | 0:1e97811b8a15 | 55 | |
Jhonattan38 | 0:1e97811b8a15 | 56 | uint16_t data_send_t,data_send_h; |
Jhonattan38 | 0:1e97811b8a15 | 57 | |
Jhonattan38 | 0:1e97811b8a15 | 58 | void Sensor(){ |
Jhonattan38 | 0:1e97811b8a15 | 59 | humedad = am2320.humidity(); |
Jhonattan38 | 0:1e97811b8a15 | 60 | t = am2320.temperature(); |
Jhonattan38 | 0:1e97811b8a15 | 61 | temperatura=t-t2; |
Jhonattan38 | 0:1e97811b8a15 | 62 | |
Jhonattan38 | 0:1e97811b8a15 | 63 | data_send_h = humedad; |
Jhonattan38 | 0:1e97811b8a15 | 64 | data_send_t = temperatura; |
Jhonattan38 | 0:1e97811b8a15 | 65 | pc.printf("-%d-%d-\n",data_send_t,data_send_h); |
Jhonattan38 | 0:1e97811b8a15 | 66 | wait_ms(200); |
Jhonattan38 | 0:1e97811b8a15 | 67 | } |
Jhonattan38 | 0:1e97811b8a15 | 68 | |
Jhonattan38 | 0:1e97811b8a15 | 69 | void leer(){ |
Jhonattan38 | 0:1e97811b8a15 | 70 | |
Jhonattan38 | 0:1e97811b8a15 | 71 | } |
Jhonattan38 | 0:1e97811b8a15 | 72 | |
Jhonattan38 | 0:1e97811b8a15 | 73 | int main(){ |
Jhonattan38 | 0:1e97811b8a15 | 74 | |
Jhonattan38 | 0:1e97811b8a15 | 75 | |
Jhonattan38 | 0:1e97811b8a15 | 76 | |
Jhonattan38 | 0:1e97811b8a15 | 77 | inicio(); |
Jhonattan38 | 0:1e97811b8a15 | 78 | pc.baud(115200); |
Jhonattan38 | 0:1e97811b8a15 | 79 | // pc.attach(&leer,Serial::RxIrq); |
Jhonattan38 | 0:1e97811b8a15 | 80 | |
Jhonattan38 | 0:1e97811b8a15 | 81 | calibrador.rise(&calibrar_Up); |
Jhonattan38 | 0:1e97811b8a15 | 82 | calibrador2.rise(&calibrar_Down); |
Jhonattan38 | 0:1e97811b8a15 | 83 | |
Jhonattan38 | 0:1e97811b8a15 | 84 | //char buf[10]; |
Jhonattan38 | 0:1e97811b8a15 | 85 | //char msg[] = "Slave!"; |
Jhonattan38 | 0:1e97811b8a15 | 86 | //slaveO.address(0x78); |
Jhonattan38 | 0:1e97811b8a15 | 87 | //slaveA.address(0xB8); |
Jhonattan38 | 0:1e97811b8a15 | 88 | |
Jhonattan38 | 0:1e97811b8a15 | 89 | |
Jhonattan38 | 0:1e97811b8a15 | 90 | int t=1604340235; /// semilla del tiempo |
Jhonattan38 | 0:1e97811b8a15 | 91 | set_time(t); |
Jhonattan38 | 0:1e97811b8a15 | 92 | |
Jhonattan38 | 0:1e97811b8a15 | 93 | while(1) { |
Jhonattan38 | 0:1e97811b8a15 | 94 | //int i = slave.receive(); |
Jhonattan38 | 0:1e97811b8a15 | 95 | //switch (i) |
Jhonattan38 | 0:1e97811b8a15 | 96 | /* pantalla.locate(0,0); |
Jhonattan38 | 0:1e97811b8a15 | 97 | pantalla.printf("%2.2f ",humedad/10); |
Jhonattan38 | 0:1e97811b8a15 | 98 | pantalla.printf("%%"); |
Jhonattan38 | 0:1e97811b8a15 | 99 | pantalla.locate(0,1); |
Jhonattan38 | 0:1e97811b8a15 | 100 | pantalla.printf("%2.2f C",temperatura/10);*/ |
Jhonattan38 | 0:1e97811b8a15 | 101 | OLED(); |
Jhonattan38 | 0:1e97811b8a15 | 102 | Sensor(); |
Jhonattan38 | 0:1e97811b8a15 | 103 | |
Jhonattan38 | 0:1e97811b8a15 | 104 | |
Jhonattan38 | 0:1e97811b8a15 | 105 | } |
Jhonattan38 | 0:1e97811b8a15 | 106 | } |
Jhonattan38 | 0:1e97811b8a15 | 107 | |
Jhonattan38 | 0:1e97811b8a15 | 108 | void OLED(){ |
Jhonattan38 | 0:1e97811b8a15 | 109 | oled.clearDisplay(); |
Jhonattan38 | 0:1e97811b8a15 | 110 | // oled.printf("%s\r", ctime(&seconds)); |
Jhonattan38 | 0:1e97811b8a15 | 111 | time_t seconds = time(NULL); |
Jhonattan38 | 0:1e97811b8a15 | 112 | oled.setTextCursor(10,0); |
Jhonattan38 | 0:1e97811b8a15 | 113 | oled.printf("%s", ctime(&seconds)); |
Jhonattan38 | 0:1e97811b8a15 | 114 | |
Jhonattan38 | 0:1e97811b8a15 | 115 | oled.setTextCursor(38,17); |
Jhonattan38 | 0:1e97811b8a15 | 116 | oled.printf("%s"," SPI/ I2C"); |
Jhonattan38 | 0:1e97811b8a15 | 117 | |
Jhonattan38 | 0:1e97811b8a15 | 118 | oled.display(); |
Jhonattan38 | 0:1e97811b8a15 | 119 | wait_ms(16); |
Jhonattan38 | 0:1e97811b8a15 | 120 | } |
Jhonattan38 | 0:1e97811b8a15 | 121 | void inicio(void){ |
Jhonattan38 | 0:1e97811b8a15 | 122 | wait(2); |
Jhonattan38 | 0:1e97811b8a15 | 123 | led=!led; |
Jhonattan38 | 0:1e97811b8a15 | 124 | wait(1); |
Jhonattan38 | 0:1e97811b8a15 | 125 | pantalla.cls(); |
Jhonattan38 | 0:1e97811b8a15 | 126 | pantalla.printf("Bienvenido"); |
Jhonattan38 | 0:1e97811b8a15 | 127 | wait(1.5); |
Jhonattan38 | 0:1e97811b8a15 | 128 | pantalla.cls(); |
Jhonattan38 | 0:1e97811b8a15 | 129 | pantalla.printf("Muestreo de I2C\ny SPI"); |
Jhonattan38 | 0:1e97811b8a15 | 130 | wait(2.5); |
Jhonattan38 | 0:1e97811b8a15 | 131 | pantalla.cls(); |
Jhonattan38 | 0:1e97811b8a15 | 132 | pantalla.printf("Sensor AM2320\nOLED y microSD"); |
Jhonattan38 | 0:1e97811b8a15 | 133 | wait(2.5); |
Jhonattan38 | 0:1e97811b8a15 | 134 | led=!led; |
Jhonattan38 | 0:1e97811b8a15 | 135 | pantalla.cls(); |
Jhonattan38 | 0:1e97811b8a15 | 136 | } |
Jhonattan38 | 0:1e97811b8a15 | 137 | |
Jhonattan38 | 0:1e97811b8a15 | 138 | /* |
Jhonattan38 | 0:1e97811b8a15 | 139 | |
Jhonattan38 | 0:1e97811b8a15 | 140 | #if !DEVICE_I2CSLAVE |
Jhonattan38 | 0:1e97811b8a15 | 141 | #error [NOT_SUPPORTED] I2C Slave is not supported |
Jhonattan38 | 0:1e97811b8a15 | 142 | #endif |
Jhonattan38 | 0:1e97811b8a15 | 143 | |
Jhonattan38 | 0:1e97811b8a15 | 144 | I2CSlave slave(D14, D15); |
Jhonattan38 | 0:1e97811b8a15 | 145 | |
Jhonattan38 | 0:1e97811b8a15 | 146 | int main() |
Jhonattan38 | 0:1e97811b8a15 | 147 | { |
Jhonattan38 | 0:1e97811b8a15 | 148 | char buf[10]; |
Jhonattan38 | 0:1e97811b8a15 | 149 | char msg[] = "Slave!"; |
Jhonattan38 | 0:1e97811b8a15 | 150 | |
Jhonattan38 | 0:1e97811b8a15 | 151 | slave.address(0xA0); |
Jhonattan38 | 0:1e97811b8a15 | 152 | while (1) { |
Jhonattan38 | 0:1e97811b8a15 | 153 | int i = slave.receive(); |
Jhonattan38 | 0:1e97811b8a15 | 154 | switch (i) { |
Jhonattan38 | 0:1e97811b8a15 | 155 | case I2CSlave::ReadAddressed: |
Jhonattan38 | 0:1e97811b8a15 | 156 | slave.write(msg, strlen(msg) + 1); // Includes null char |
Jhonattan38 | 0:1e97811b8a15 | 157 | break; |
Jhonattan38 | 0:1e97811b8a15 | 158 | case I2CSlave::WriteGeneral: |
Jhonattan38 | 0:1e97811b8a15 | 159 | slave.read(buf, 10); |
Jhonattan38 | 0:1e97811b8a15 | 160 | printf("Read G: %s\n", buf); |
Jhonattan38 | 0:1e97811b8a15 | 161 | break; |
Jhonattan38 | 0:1e97811b8a15 | 162 | case I2CSlave::WriteAddressed: |
Jhonattan38 | 0:1e97811b8a15 | 163 | slave.read(buf, 10); |
Jhonattan38 | 0:1e97811b8a15 | 164 | printf("Read A: %s\n", buf); |
Jhonattan38 | 0:1e97811b8a15 | 165 | break; |
Jhonattan38 | 0:1e97811b8a15 | 166 | } |
Jhonattan38 | 0:1e97811b8a15 | 167 | for (int i = 0; i < 10; i++) { |
Jhonattan38 | 0:1e97811b8a15 | 168 | buf[i] = 0; // Clear buffer |
Jhonattan38 | 0:1e97811b8a15 | 169 | } |
Jhonattan38 | 0:1e97811b8a15 | 170 | } |
Jhonattan38 | 0:1e97811b8a15 | 171 | }*/ |