Buffer working with LCD, Serial and SD Card
Dependencies: BMP280
Fork of Thread_Communication by
main.cpp
- Committer:
- benparkes
- Date:
- 2017-12-13
- Revision:
- 1:bca9993a0df3
- Parent:
- 0:cb3a5c15b01e
- Child:
- 2:28d12a3db239
File content as of revision 1:bca9993a0df3:
#include "mbed.h" #include "main.h" LCD lcd(PD_15, PF_12, PF_13, PE_9, PF_14, PF_15); BMP280 Sensor(D14, D15); void PrintLCD (); /* Mail */ typedef struct { float LDR_Value; float temp_Value; float press_Value; } mail_t; //Class type /*class mail_t { public: float LDR_Value; float temp_Value; float press_Value; //Constructor mail_t( float LDR_Value, float temp_Value, int s2) { adcValue = f; sw1State = s1; sw2State = s2; } };*/ Mail<mail_t, 16> mail_box; Thread t1; Thread t2; //Mutex door; void PrintLCD () { int i = 0; while(1){ char lightString[16]; char tempString[16]; char pressString[16]; lcd.Clear(); lcd.RowSelect(0); switch (i){ case 0: osEvent evt = mail_box.get(); if (evt.status == osEventMail) { mail_t *mail = (mail_t*)evt.value.p; sprintf(lightString,"%.4f", mail->LDR_Value); sprintf(tempString,"%2.2f", mail->temp_Value); sprintf(pressString,"%4.2f", mail->press_Value); mail_box.free(mail); } lcd.Write("Light Level:"); lcd.RowSelect(1); lcd.Write(lightString); i++; break; case 1: lcd.Write("Temperature:"); lcd.RowSelect(1); lcd.Write(tempString); i++; break; case 2: lcd.Write("Pressure:"); lcd.RowSelect(1); lcd.Write(pressString); i =0; break; default: i = 0; break; } Red_int = !Red_int; Thread::wait (5000); } } int main() { t1.start(PrintLCD); while(1) { Green_int = !Green_int; mail_t *mail = mail_box.alloc(); mail->LDR_Value = LDR_In.read(); mail->temp_Value = Sensor.getTemperature(); mail->press_Value = Sensor.getPressure(); mail_box.put(mail); /*door.lock(); LDR_Value = LDR_In.read(); temp_Value = Sensor.getTemperature(); press_Value = Sensor.getPressure(); door.unlock();*/ Thread::wait (15000); } } /*int main(void){ float temp = 0; //float pressure = 0; char tempString[16]; Sensor->initialize(); temp = Sensor->getTemperature(); lcd->Clear(); lcd->RowSelect(0); lcd->Write("Temperature:"); sprintf(tempString,"%f",temp); lcd->RowSelect(1); lcd->Write(tempString); }*/