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.
Fork of SOFT253_Template_Weather_OS_54 by
main.cpp
- Committer:
- akovaci
- Date:
- 2017-05-12
- Revision:
- 36:7426f37f0c96
- Parent:
- 35:af125862c33e
File content as of revision 36:7426f37f0c96:
#include "mbed.h"
#include "rtos.h"
#include "hts221.h"
#include "LPS25H.h"
Serial pc(USBTX, USBRX);
#define N 10
DigitalOut myled(D7);
Ticker t;
I2C i2c2(I2C_SDA, I2C_SCL);
float tempCelsius = 25.50;
float humi = 55;
int humiMax = 100;
char cmd=0;
float tempArray[N];
float humArray[N];
float pressArray[N];
uint32_t seconds = 0, minutes=0, hours=0;
static float nextTEMPsample, nextHUMsample, nextPRESSsample;
static int indexOfOldest = (N-1);
LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR);
HTS221 humidity(I2C_SDA, I2C_SCL);
void adcISR();
typedef struct {
float tempVal ;
float humVal;
float pressVal;
}message_t;
Mail<message_t, 10> mail_box;
void adcISR()
{
message_t *message = mail_box.alloc();
message->tempVal = tempCelsius;
message->humVal = humi;
message->pressVal = barometer.pressure();
myled=1;
mail_box.put(message);
//Thread::wait(1000);
}
void thread1 (void const* arg)
{
pc.baud(115200);
pc.printf("Temperature,Humidity,Pressure\n\n");
while(1)
{
osEvent evt = mail_box.get();
if (evt.status == osEventMail)
{
for (unsigned int n=(N-1); n>0; n--)
{
tempArray[n]= tempArray[n-1];
humArray[n]= humArray[n-1];
pressArray[n]= pressArray[n-1];
}
message_t *message = (message_t*)evt.value.p;
tempArray[0]= message->tempVal;
humArray[0] = message->humVal;
pressArray[0]= message->pressVal;
for (unsigned int n=0; n<N; n++)
{
pc.printf("the element of %d is %4.2f\n\r ",n,tempArray[n]);
wait(1.0);
}
// pc.printf("%4.2f,%3.1f,%6.1f\n\r", tempArray[N/2], humArray[N/2], pressArray[N/2]);
mail_box.free(message);
}
}
}
char answer;
int main(void)
{
puts("Loading... \n\n");
Thread thread(thread1);
t.attach(&adcISR,15);
while(1)
{
humidity.init();
humidity.calib();
humidity.ReadTempHumi(&tempCelsius, &humi);
barometer.get();
barometer.pressure();
barometer.temperature();
sleep();
Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds!
myled = 0; // LED is OFF
Thread::wait(100); // 100 ms
}
}