You are viewing an older revision! See the latest version
First Mbed Application
Building an Mbed Application¶
This will guide you through creating an Mbed application. We first will cover Mbed OS to read/write to sensors and peripherals on the Mbed Connect Cloud board.
Prerequisites¶
- An Mbed account - sign up here
- Install the Mbed serial driver (for Windows PCs)
Required Hardware¶
- Mbed Connect Cloud board
- Active WiFi network
Setup¶
- Connect the board to your computer via the micro USB port.
- The board mounts as a mass-storage device (like a USB drive). Verify that you can see it (the drive name will be DAPLINK).
- Add the Mbed Connect Cloud board to your online Mbed Compiler here
Making an Mbed application¶
Import the example program.
Import programMbed-Connect-Cloud-Demo
Demo for the Mbed Connect Cloud board
Printing to the LCD screen¶
We will add some code to print a message to the LCD screen on the board.
Open main.cpp
Declare an object to instantiate the driver for the LCD screen. Under 'GLOBAL VARIABLES HERE' add the following code:
C12832 lcd(PE_14, PE_12, PD_12, PD_11, PE_9);
Add a function that prints a message to the LCD screen. Under 'FUNCTION DEFINITIONS HERE' add the following code:
void lcd_print(const char* message) { lcd.cls(); lcd.locate(0, 3); lcd.printf(message); }
Invoke the previous function to print "Hello World!" to the LCD screen. Under 'MAIN CODE HERE' add the following code:
lcd_print("Hello World!");
Compile and run¶
- Select the Mbed Connect Cloud target board in the upper right hand corner
- Press "Compile"
- Wait for a binary to be downloaded
- Drag the binary to the DAPLINK disk
- Press the board's reset button
- "Hello World!" should show on the LCD screen
Reading the temperature/humidity sensor¶
We will add some code to read the room's temperature and humidity values from the temperature/humidity sensor and print the values to the LCD screen.
Open main.cpp
Instantiate a Sht31
object to read from the temperature/humidity sensor and an EventQueue
to schedule reading the sensor and a Thread
to attached the events to. Under 'GLOBAL VARIABLES HERE' add the following code:
Sht31 temp_sensor(PF_0, PF_1); EventQueue queue; Thread t;
Add a function that reads the temperature/humidity sensor and prints the values to the LCD screen. Under 'FUNCTION DEFINITIONS HERE' add the following code:
void read_temp() { float t = temp_sensor.readTemperature(); float h = temp_sensor.readHumidity(); char val[26]; sprintf(val, "TEMP: %3.2fC, HUM: %3.2f%%", t, h); lcd_print(val); }
Attach the EventQueue
to the Thread
and add an event to the queue to schedule reading the temperature/humidity sensor every 100 ms. Under 'MAIN CODE HERE' add the following code:
t.start(callback(&queue, &EventQueue::dispatch_forever)); queue.call_every(100, read_temp);
Compile and run¶
- Select the Mbed Connect Cloud target board in the upper right hand corner
- Press "Compile"
- Wait for a binary to be downloaded
- Drag the binary to the DAPLINK disk
- Press the board's reset button
- The humidity and temperature values should now be displayed and updating on the LCD screen
Toggling the LED¶
We will add some code to toggle the LED when we push the button (SW1) down.
Open main.cpp
Instantiate a DigitalOut
object to write to the LED and an InterruptIn
object to read the button input. Under 'GLOBAL VARIABLES HERE' add the following code:
DigitalOut led(PB_8, 1); InterruptIn button(PF_2);
Add a toggle_led
to switch the state of the LED. Under 'FUNCTION DEFINITIONS HERE' add the following code:
void toggle_led() { led = !led; }
Whenever the button rises or falls, add the toggle_led
event to the queue, this allows the button to be read in user context without interrupting the read_temp
function calls. Under 'MAIN CODE HERE' add the following code:
button.rise(queue.event(toggle_led)); button.fall(queue.event(toggle_led));
Compile and run¶
- Select the Mbed Connect Cloud target board in the upper right hand corner
- Press "Compile"
- Wait for a binary to be downloaded
- Drag the binary to the DAPLINK disk
- Press the board's reset button
- The LED will now toggle if you push the button (SW1) down
Reading the temperature/humidity sensor¶
We will add some code to read the room's temperature and humidity values from the temperature/humidity sensor and print the values to the LCD screen.
Open main.cpp
Instantiate a Sht31
object to read from the temperature/humidity sensor and an EventQueue
to schedule reading the sensor and a Thread
to attached the events to. Under 'GLOBAL VARIABLES HERE' add the following code:
Sht31 temp_sensor(PF_0, PF_1); EventQueue queue; Thread t;
Add a function that reads the temperature/humidity sensor and prints the values to the LCD screen. Under 'FUNCTION DEFINITIONS HERE' add the following code:
void read_temp() { float t = temp_sensor.readTemperature(); float h = temp_sensor.readHumidity(); char val[26]; sprintf(val, "TEMP: %3.2fC, HUM: %3.2f%%", t, h); lcd_print(val); }
Attach the EventQueue
to the Thread
and add an event to the queue to schedule reading the temperature/humidity sensor every 100 ms. Under 'MAIN CODE HERE' add the following code:
t.start(callback(&queue, &EventQueue::dispatch_forever)); queue.call_every(100, read_temp);
Compile and run¶
- Select the Mbed Connect Cloud target board in the upper right hand corner
- Press "Compile"
- Wait for a binary to be downloaded
- Drag the binary to the DAPLINK disk
- Press the board's reset button
- The air quality values should now be displayed and updating on the LCD screen
Publishing changes¶
- Right click the project folder
- Select "Publish"
- Write a commit message in the "Revision Commit" menu
- Press OK
- Select "Fork..." in the "Publish Repository" menu
- Write a Description
- Press OK
- Make a note of the URL for your fork. We will use it to locally clone this repository.