Jorge Dominguez / Mbed 2 deprecated rtos_mail_PRUEBA

Dependencies:   mbed mbed-rtos DHT TextLCD

Committer:
kapart
Date:
Thu Nov 29 16:55:22 2018 +0000
Revision:
7:e8f1aab2aee2
Parent:
6:46af1199bf9b
RTOS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 2:b84386915279 1 #include "mbed.h"
mbed_official 6:46af1199bf9b 2 #include "rtos.h"
kapart 7:e8f1aab2aee2 3 #include "TextLCD.h"
kapart 7:e8f1aab2aee2 4 #include "DHT.h"
kapart 7:e8f1aab2aee2 5 ////////////////////////////////////////////////////////////////////////////////////////
kapart 7:e8f1aab2aee2 6 /////////////////////////////////////Pines a usar //////////////////////////////////////
kapart 7:e8f1aab2aee2 7 ////////////////////////////////////////////////////////////////////////////////////////
emilmont 2:b84386915279 8
kapart 7:e8f1aab2aee2 9 TextLCD lcd(PA_9, PC_7,PB_5,PB_4,PB_10,PA_8);
kapart 7:e8f1aab2aee2 10 DigitalIn Boton(BUTTON1);
kapart 7:e8f1aab2aee2 11 AnalogIn analog_value(A0);
kapart 7:e8f1aab2aee2 12
kapart 7:e8f1aab2aee2 13 ////////////////////////////////////////////////////////////////////////////////////////
kapart 7:e8f1aab2aee2 14 /////////////////////////Mensajes que se van amandar a imprimir/////////////////////////
kapart 7:e8f1aab2aee2 15 ////////////////////////////////////////////////////////////////////////////////////////
kapart 7:e8f1aab2aee2 16
kapart 7:e8f1aab2aee2 17 /* Mail 1 */
emilmont 2:b84386915279 18 typedef struct {
kapart 7:e8f1aab2aee2 19 float GPS; /* AD result of measured voltage */
kapart 7:e8f1aab2aee2 20 } mail_GPS;
emilmont 2:b84386915279 21
kapart 7:e8f1aab2aee2 22 /* Mail 2 */
kapart 7:e8f1aab2aee2 23 typedef struct {
kapart 7:e8f1aab2aee2 24 float T; /* AD result of measured voltage */
kapart 7:e8f1aab2aee2 25 float H; /* AD result of measured voltage */
kapart 7:e8f1aab2aee2 26 } mail_DTH11;
kapart 7:e8f1aab2aee2 27
kapart 7:e8f1aab2aee2 28 /* Mail 3 */
kapart 7:e8f1aab2aee2 29 typedef struct {
kapart 7:e8f1aab2aee2 30 float FYH; /* AD result of measured voltage */
kapart 7:e8f1aab2aee2 31 } mail_FYH;
emilmont 2:b84386915279 32
kapart 7:e8f1aab2aee2 33 Mail<mail_GPS, 1000> mail_box1;
kapart 7:e8f1aab2aee2 34 Mail<mail_DTH11, 1000> mail_box2;
kapart 7:e8f1aab2aee2 35 Mail<mail_FYH, 1000> mail_box3;
kapart 7:e8f1aab2aee2 36
kapart 7:e8f1aab2aee2 37
kapart 7:e8f1aab2aee2 38
kapart 7:e8f1aab2aee2 39 ////////////////////////////////////////////////////////////////////////////////////////
kapart 7:e8f1aab2aee2 40 /////////////////////////Programas a ralizar con el rtos////////////////////////////////
kapart 7:e8f1aab2aee2 41 ////////////////////////////////////////////////////////////////////////////////////////
kapart 7:e8f1aab2aee2 42
kapart 7:e8f1aab2aee2 43 void send_threadGPS (void) {
kapart 7:e8f1aab2aee2 44 int i=0;
kapart 7:e8f1aab2aee2 45 while (true){
kapart 7:e8f1aab2aee2 46 i++;
kapart 7:e8f1aab2aee2 47 mail_GPS *mail = mail_box1.alloc();
kapart 7:e8f1aab2aee2 48 mail-> GPS= i*.33;
kapart 7:e8f1aab2aee2 49 mail_box1.put(mail);
kapart 7:e8f1aab2aee2 50 Thread::wait(500);
kapart 7:e8f1aab2aee2 51 }
kapart 7:e8f1aab2aee2 52 }
kapart 7:e8f1aab2aee2 53
kapart 7:e8f1aab2aee2 54
kapart 7:e8f1aab2aee2 55 void send_threadDTH11 (void) {
kapart 7:e8f1aab2aee2 56 DHT sensor(PC_4, SEN11301P); // Use the SEN11301P sensor
kapart 7:e8f1aab2aee2 57 int err;
kapart 7:e8f1aab2aee2 58 while(true){
kapart 7:e8f1aab2aee2 59 err = sensor.readData();
kapart 7:e8f1aab2aee2 60 printf("Temp: %.2f ",sensor.ReadTemperature(CELCIUS));
kapart 7:e8f1aab2aee2 61 printf("Hum: %.2f ",sensor.ReadHumidity()); // first time initialization
kapart 7:e8f1aab2aee2 62 mail_DTH11 *mail = mail_box2.alloc();
kapart 7:e8f1aab2aee2 63 mail-> T= sensor.ReadTemperature(CELCIUS);
kapart 7:e8f1aab2aee2 64 mail-> H= sensor.ReadHumidity();
kapart 7:e8f1aab2aee2 65 mail_box2.put(mail);
emilmont 2:b84386915279 66 }
emilmont 2:b84386915279 67 }
emilmont 2:b84386915279 68
kapart 7:e8f1aab2aee2 69 void send_threadFYH (void) {
kapart 7:e8f1aab2aee2 70 int j = 0;
emilmont 2:b84386915279 71 while (true) {
kapart 7:e8f1aab2aee2 72 j++; // fake data update
kapart 7:e8f1aab2aee2 73 mail_FYH *mail = mail_box3.alloc();
kapart 7:e8f1aab2aee2 74 mail-> FYH= (j * 0.1) * 33;
kapart 7:e8f1aab2aee2 75 mail_box3.put(mail);
kapart 7:e8f1aab2aee2 76 Thread::wait(100);
emilmont 2:b84386915279 77 }
emilmont 2:b84386915279 78 }
kapart 7:e8f1aab2aee2 79
kapart 7:e8f1aab2aee2 80 ////////////////////////////////////////////////////////////////////////////////////////
kapart 7:e8f1aab2aee2 81 ///////////////////////////////Programa principal //////////////////////////////////////
kapart 7:e8f1aab2aee2 82 ////////////////////////////////////////////////////////////////////////////////////////
kapart 7:e8f1aab2aee2 83 int main (void) {
kapart 7:e8f1aab2aee2 84
kapart 7:e8f1aab2aee2 85 Thread threadGPS;
kapart 7:e8f1aab2aee2 86 Thread threadDTH11;
kapart 7:e8f1aab2aee2 87 Thread threadFYH;
kapart 7:e8f1aab2aee2 88 threadGPS.start(callback(send_threadGPS));
kapart 7:e8f1aab2aee2 89 threadDTH11.start(callback(send_threadDTH11));
kapart 7:e8f1aab2aee2 90 threadFYH.start(callback(send_threadFYH));
kapart 7:e8f1aab2aee2 91
kapart 7:e8f1aab2aee2 92
kapart 7:e8f1aab2aee2 93
kapart 7:e8f1aab2aee2 94 while (true) {
kapart 7:e8f1aab2aee2 95 float meas;
kapart 7:e8f1aab2aee2 96 meas = analog_value.read();
kapart 7:e8f1aab2aee2 97 meas = meas * 3300;
kapart 7:e8f1aab2aee2 98 osEvent evt1 = mail_box1.get();
kapart 7:e8f1aab2aee2 99 osEvent evt2 = mail_box2.get();
kapart 7:e8f1aab2aee2 100 osEvent evt3 = mail_box3.get();
kapart 7:e8f1aab2aee2 101 if(meas > 3200){
kapart 7:e8f1aab2aee2 102 if (evt1.status == osEventMail) {
kapart 7:e8f1aab2aee2 103 mail_GPS *mail = (mail_GPS*)evt1.value.p;
kapart 7:e8f1aab2aee2 104 printf("GPS: %.4f V\n" , mail->GPS);
kapart 7:e8f1aab2aee2 105 lcd.locate(0,0);
kapart 7:e8f1aab2aee2 106 lcd.printf("GPS: %.4f ", mail->GPS);
kapart 7:e8f1aab2aee2 107 mail_box1.free(mail);
kapart 7:e8f1aab2aee2 108 }
kapart 7:e8f1aab2aee2 109 if (evt2.status == osEventMail) {
kapart 7:e8f1aab2aee2 110 mail_DTH11 *mail = (mail_DTH11*)evt2.value.p;
kapart 7:e8f1aab2aee2 111 printf("T: %.2f \n", mail->T);
kapart 7:e8f1aab2aee2 112 printf("H: %.2f \n", mail->H);
kapart 7:e8f1aab2aee2 113 lcd.locate(0,1);
kapart 7:e8f1aab2aee2 114 lcd.printf("T: %.2f ", mail->T);
kapart 7:e8f1aab2aee2 115 lcd.locate(8,1);
kapart 7:e8f1aab2aee2 116 lcd.printf("H: %.2f ", mail->H);
kapart 7:e8f1aab2aee2 117 mail_box2.free(mail);
kapart 7:e8f1aab2aee2 118 }
kapart 7:e8f1aab2aee2 119 }
kapart 7:e8f1aab2aee2 120
kapart 7:e8f1aab2aee2 121 else{
kapart 7:e8f1aab2aee2 122 lcd.cls();
kapart 7:e8f1aab2aee2 123
kapart 7:e8f1aab2aee2 124 if (evt3.status == osEventMail) {
kapart 7:e8f1aab2aee2 125 mail_FYH *mail = (mail_FYH*)evt3.value.p;
kapart 7:e8f1aab2aee2 126 printf("FFECHA Y HORA: %f A\n\r" , mail->FYH);
kapart 7:e8f1aab2aee2 127 lcd.locate(0,0);
kapart 7:e8f1aab2aee2 128 lcd.printf("Hora y Fecha");
kapart 7:e8f1aab2aee2 129 lcd.locate(0,1);
kapart 7:e8f1aab2aee2 130 lcd.printf("%f ", mail->FYH);
kapart 7:e8f1aab2aee2 131 mail_box3.free(mail);
kapart 7:e8f1aab2aee2 132 }
kapart 7:e8f1aab2aee2 133 }
kapart 7:e8f1aab2aee2 134
kapart 7:e8f1aab2aee2 135 }
kapart 7:e8f1aab2aee2 136 }
kapart 7:e8f1aab2aee2 137
kapart 7:e8f1aab2aee2 138