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: mbed mbed-rtos DHT TextLCD
main.cpp@7:e8f1aab2aee2, 2018-11-29 (annotated)
- Committer:
- kapart
- Date:
- Thu Nov 29 16:55:22 2018 +0000
- Revision:
- 7:e8f1aab2aee2
- Parent:
- 6:46af1199bf9b
RTOS
Who changed what in which revision?
| User | Revision | Line number | New 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 |