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: BME280 BMP280 ELEC350-Coursework-2017 TextLCD
Fork of ELEC350-CWTEMPLATE-2017 by
Revision 5:2594b953f111, committed 2017-12-10
- Comitter:
- thomasmorris
- Date:
- Sun Dec 10 17:30:00 2017 +0000
- Parent:
- 4:d26b261b76c9
- Commit message:
- Task 1,5,8 Working
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LED.cpp Sun Dec 10 17:30:00 2017 +0000
@@ -0,0 +1,32 @@
+#include "mbed.h"
+#include "LED.hpp"
+
+
+LED::LED(PinName pinName):pin(pinName)//Constuctor
+//Constuctor runs whenever a new instave of the class is created
+//The constructor has the same name as the class
+//The constructor does not have a return type
+//When called it needs to be given parameters Led redLed(D7);
+{
+
+}
+
+void LED::switchOn() //type void class is Led function is switchon
+{
+ this->pin =1; //You access the attributes of the class by using the this command and then the name of the attribute
+}
+
+void LED::switchOff()
+{
+ this->pin =0;
+}
+void LED::flash(float time)
+{
+ this->pin = 1;
+ wait(time);
+ this->pin = 0;
+}
+void LED::Toggle()
+{
+ this->pin= !this->pin;
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LED.hpp Sun Dec 10 17:30:00 2017 +0000
@@ -0,0 +1,21 @@
+#ifndef _LED_HPP_ //Known as header guards
+#define _LED_HPP_
+
+class LED //This creates a class called Led
+{
+
+//Below are methods of the class these are the opperations the class will support
+public: //The public: word enables the methods to be accessed outside of the class itself
+
+ LED(PinName pinName);
+ void switchOn(); //Void is the return type as no values will be output the return type is void
+ void switchOff(); //SwitchOff is the name of the method/function
+ void flash(float time); //float time is the parameter of the function in this case it creates a floating poi t variable known as time and this is then passed o the function when called.
+ void Toggle();
+
+private: //This is used here to make digitalout pin only useable from inside class Led
+ DigitalOut pin; //DigitalOut is the Class and the object is called pin the object pin is now an attribute of led this is also known as a member variable or field
+};
+
+
+#endif
\ No newline at end of file
--- a/main.cpp Thu Dec 07 15:43:01 2017 +0000
+++ b/main.cpp Sun Dec 10 17:30:00 2017 +0000
@@ -1,19 +1,80 @@
#include "sample_hardware.hpp"
#include "Networkbits.hpp"
+#include "rtos.h"
+#include "LED.hpp"
+#define SamplingTime 1
+#define NotSamplingTime 0
+#define TimerInterval 15 //This is in seconds
+
+Serial pc(USBTX, USBRX);
// This is a very short demo that demonstrates all the hardware used in the coursework.
// You will need a network connection set up (covered elsewhere). The host PC should have the address 10.0.0.1
+//Thread ID
+osThreadId idMain;
+osThreadId id1;
+osThreadId id2;
+osThreadId id3;
+osThreadId id4;
+LED Red_led(PE_15);
+LED Yellow_led(PB_10);
+LED Green_led(PB_11);
+
+Ticker Sample_timer;
//Threads
Thread nwrkThread;
-
+Thread t1;
+Thread t2;
+
+void Serial_Comms()//Thread for Serial Communications
+{
+ pc.printf("Hello World \n");
+ while(1)
+ {
+ pc.printf("Test\n");
+ Thread::wait(1000);
+ }
+}
+
+void Sample_signal_set()//Sets the Signal for when to sample the sensors
+{
+ t1.signal_set(SamplingTime);
+}
-int main() {
+void Sample()//Samples the hardware and prints the result to the LCD
+{
+ while(1)
+ {
+ Thread::signal_wait(SamplingTime);
+ //Read environmental sensors
+ double temp = sensor.getTemperature();
+ double pressure = sensor.getPressure();
+ double lux = adcIn.read();
+ //Write new data to LCD (not fast!)
+ lcd.cls();
+ lcd.printf("Temp Pres li\n");
+ lcd.printf("%1.1f ",temp);
+ lcd.printf("%1.1f ",pressure);
+ lcd.printf("%1.1f\n",lux);
+
+ //Write to SD (potentially slow)
+ //fprintf(fp, "%6.1f,%.2f\n\r", temp, pressure);
+
+ Red_led.Toggle();
+ t1.signal_set(NotSamplingTime);
+ //Thread::wait(15000);//Time interval
+ }
+}
+
+int main()
+{
//Greeting
printf("Testing\n\n");
- //Power on self test
- post();
+ pc.baud(9600);//Sets the Serial Comms Baud Rate
+
+ post();//Power on Self Test
//Initialise the SD card (this needs to move)
if ( sd.init() != 0) {
@@ -38,26 +99,29 @@
//Last message before sampling begins
lcd.cls();
lcd.printf("READY\n\n");
-
-
+
+ //Run interrupt
+ Sample_timer.attach(&Sample_signal_set,TimerInterval);
+
+ //Run Threads
+
+
+ t1.start(Sample);
+ t2.start(Serial_Comms);
+
+ //Main thread ID
+
+ idMain = osThreadGetId(); //CMSIS RTOS call
+
+ //Thread ID
+ id1 = t1.gettid();
+ id2 = t2.gettid();
+
+
+ //Toggle Green LED after a button has been pressed
//Press either switch to unmount
while ((SW1 == 0) && (SW2 == 0)) {
-
- //Base loop delay
- wait(1.0);
-
- //Read environmental sensors
- double temp = sensor.getTemperature();
- double pressure = sensor.getPressure();
-
- //Write new data to LCD (not fast!)
- lcd.cls();
- lcd.printf("Temp Pressure\n");
- lcd.printf("%6.1f ",temp);
- lcd.printf("%.2f\n",pressure);
-
- //Write to SD (potentially slow)
- fprintf(fp, "%6.1f,%.2f\n\r", temp, pressure);
+
}
//Close File
@@ -69,7 +133,6 @@
lcd.cls();
lcd.printf("Unmounted...\n\n");
- //Flash to indicate goodness
while(true) {
greenLED = 1;
wait(0.5);
