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 CW_copy by
ELEC350-Coursework-2017/sample_hardware.cpp@1:dc648c5624b9, 2018-01-10 (annotated)
- Committer:
- joseph_adamu
- Date:
- Wed Jan 10 09:50:29 2018 +0000
- Revision:
- 1:dc648c5624b9
version for export
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| joseph_adamu | 1:dc648c5624b9 | 1 | #include "mbed.h" |
| joseph_adamu | 1:dc648c5624b9 | 2 | #include "sample_hardware.hpp" |
| joseph_adamu | 1:dc648c5624b9 | 3 | #include "Networkbits.hpp" |
| joseph_adamu | 1:dc648c5624b9 | 4 | |
| joseph_adamu | 1:dc648c5624b9 | 5 | #define RED_DONE 1 |
| joseph_adamu | 1:dc648c5624b9 | 6 | #define YELLOW_DONE 2 |
| joseph_adamu | 1:dc648c5624b9 | 7 | |
| joseph_adamu | 1:dc648c5624b9 | 8 | //Digital outputs |
| joseph_adamu | 1:dc648c5624b9 | 9 | DigitalOut onBoardLED(LED1); |
| joseph_adamu | 1:dc648c5624b9 | 10 | DigitalOut redLED(PE_15); |
| joseph_adamu | 1:dc648c5624b9 | 11 | DigitalOut yellowLED(PB_10); |
| joseph_adamu | 1:dc648c5624b9 | 12 | DigitalOut greenLED(PB_11); |
| joseph_adamu | 1:dc648c5624b9 | 13 | |
| joseph_adamu | 1:dc648c5624b9 | 14 | //Inputs |
| joseph_adamu | 1:dc648c5624b9 | 15 | DigitalIn onBoardSwitch(USER_BUTTON); |
| joseph_adamu | 1:dc648c5624b9 | 16 | DigitalIn SW1(PE_12); |
| joseph_adamu | 1:dc648c5624b9 | 17 | DigitalIn SW2(PE_14); |
| joseph_adamu | 1:dc648c5624b9 | 18 | DigitalIn SW3(D11); |
| joseph_adamu | 1:dc648c5624b9 | 19 | //Serial pc(USBTX, USBRX); |
| joseph_adamu | 1:dc648c5624b9 | 20 | AnalogIn adcIn(A1); |
| joseph_adamu | 1:dc648c5624b9 | 21 | |
| joseph_adamu | 1:dc648c5624b9 | 22 | //Environmental Sensor driver |
| joseph_adamu | 1:dc648c5624b9 | 23 | #ifdef BME |
| joseph_adamu | 1:dc648c5624b9 | 24 | BME280 sensor(D14, D15); |
| joseph_adamu | 1:dc648c5624b9 | 25 | #else |
| joseph_adamu | 1:dc648c5624b9 | 26 | BMP280 sensor(D14, D15); |
| joseph_adamu | 1:dc648c5624b9 | 27 | #endif |
| joseph_adamu | 1:dc648c5624b9 | 28 | |
| joseph_adamu | 1:dc648c5624b9 | 29 | //LCD Driver (provided via mbed repository) |
| joseph_adamu | 1:dc648c5624b9 | 30 | //RS D9 |
| joseph_adamu | 1:dc648c5624b9 | 31 | //E D8 |
| joseph_adamu | 1:dc648c5624b9 | 32 | //D7,6,4,2 are the 4 bit for d4-7 |
| joseph_adamu | 1:dc648c5624b9 | 33 | //TextLCD lcd(D9, D8, D7, D6, D4, D2); // rs, e, d4-d7 |
| joseph_adamu | 1:dc648c5624b9 | 34 | |
| joseph_adamu | 1:dc648c5624b9 | 35 | //SD Card |
| joseph_adamu | 1:dc648c5624b9 | 36 | SDBlockDevice sd(PB_5, D12, D13, D10); // mosi, miso, sclk, cs |
| joseph_adamu | 1:dc648c5624b9 | 37 | |
| joseph_adamu | 1:dc648c5624b9 | 38 | //POWER ON SELF TEST |
| joseph_adamu | 1:dc648c5624b9 | 39 | void post() |
| joseph_adamu | 1:dc648c5624b9 | 40 | { |
| joseph_adamu | 1:dc648c5624b9 | 41 | //POWER ON TEST (POT) |
| joseph_adamu | 1:dc648c5624b9 | 42 | puts("**********STARTING POWER ON SELF TEST (POST)**********"); |
| joseph_adamu | 1:dc648c5624b9 | 43 | |
| joseph_adamu | 1:dc648c5624b9 | 44 | //Test LEDs |
| joseph_adamu | 1:dc648c5624b9 | 45 | puts("ALL LEDs should be blinking"); |
| joseph_adamu | 1:dc648c5624b9 | 46 | for (unsigned int n=0; n<10; n++) { |
| joseph_adamu | 1:dc648c5624b9 | 47 | redLED = 1; |
| joseph_adamu | 1:dc648c5624b9 | 48 | yellowLED = 1; |
| joseph_adamu | 1:dc648c5624b9 | 49 | greenLED = 1; |
| joseph_adamu | 1:dc648c5624b9 | 50 | wait(0.05); |
| joseph_adamu | 1:dc648c5624b9 | 51 | redLED = 0; |
| joseph_adamu | 1:dc648c5624b9 | 52 | yellowLED = 0; |
| joseph_adamu | 1:dc648c5624b9 | 53 | greenLED = 0; |
| joseph_adamu | 1:dc648c5624b9 | 54 | wait(0.05); |
| joseph_adamu | 1:dc648c5624b9 | 55 | } |
| joseph_adamu | 1:dc648c5624b9 | 56 | |
| joseph_adamu | 1:dc648c5624b9 | 57 | //Output the switch states (hold them down to test) |
| joseph_adamu | 1:dc648c5624b9 | 58 | // printf("SW3: %d\n\r", SW3.read()); |
| joseph_adamu | 1:dc648c5624b9 | 59 | // printf("USER: %d\n\r", onBoardSwitch.read()); |
| joseph_adamu | 1:dc648c5624b9 | 60 | |
| joseph_adamu | 1:dc648c5624b9 | 61 | //Output the ADC |
| joseph_adamu | 1:dc648c5624b9 | 62 | printf("ADC: %f\n\r", adcIn.read()); |
| joseph_adamu | 1:dc648c5624b9 | 63 | |
| joseph_adamu | 1:dc648c5624b9 | 64 | //Read Sensors (I2C) |
| joseph_adamu | 1:dc648c5624b9 | 65 | float temp = sensor.getTemperature(); |
| joseph_adamu | 1:dc648c5624b9 | 66 | float pressure = sensor.getPressure(); |
| joseph_adamu | 1:dc648c5624b9 | 67 | #ifdef BME |
| joseph_adamu | 1:dc648c5624b9 | 68 | float humidity = sensor.getHumidity(); |
| joseph_adamu | 1:dc648c5624b9 | 69 | #endif |
| joseph_adamu | 1:dc648c5624b9 | 70 | |
| joseph_adamu | 1:dc648c5624b9 | 71 | //Display in PuTTY |
| joseph_adamu | 1:dc648c5624b9 | 72 | printf("Temperature: %5.1f\n", temp); |
| joseph_adamu | 1:dc648c5624b9 | 73 | printf("Pressure: %5.1f\n", pressure); |
| joseph_adamu | 1:dc648c5624b9 | 74 | #ifdef BME |
| joseph_adamu | 1:dc648c5624b9 | 75 | printf("Pressure: %5.1f\n", humidity); |
| joseph_adamu | 1:dc648c5624b9 | 76 | #endif |
| joseph_adamu | 1:dc648c5624b9 | 77 | |
| joseph_adamu | 1:dc648c5624b9 | 78 | //Display on LCD |
| joseph_adamu | 1:dc648c5624b9 | 79 | redLED = 1; |
| joseph_adamu | 1:dc648c5624b9 | 80 | lcd.cls(); |
| joseph_adamu | 1:dc648c5624b9 | 81 | lcd.printf("LCD TEST..."); |
| joseph_adamu | 1:dc648c5624b9 | 82 | wait(0.5); |
| joseph_adamu | 1:dc648c5624b9 | 83 | redLED = 0; |
| joseph_adamu | 1:dc648c5624b9 | 84 | |
| joseph_adamu | 1:dc648c5624b9 | 85 | //Network test (if BOTH switches are held down) |
| joseph_adamu | 1:dc648c5624b9 | 86 | networktest(); |
| joseph_adamu | 1:dc648c5624b9 | 87 | |
| joseph_adamu | 1:dc648c5624b9 | 88 | puts("**********POST END**********"); |
| joseph_adamu | 1:dc648c5624b9 | 89 | |
| joseph_adamu | 1:dc648c5624b9 | 90 | } |
| joseph_adamu | 1:dc648c5624b9 | 91 | |
| joseph_adamu | 1:dc648c5624b9 | 92 | void errorCode(ELEC350_ERROR_CODE err) |
| joseph_adamu | 1:dc648c5624b9 | 93 | { |
| joseph_adamu | 1:dc648c5624b9 | 94 | switch (err) { |
| joseph_adamu | 1:dc648c5624b9 | 95 | case OK: |
| joseph_adamu | 1:dc648c5624b9 | 96 | greenLED = 1; |
| joseph_adamu | 1:dc648c5624b9 | 97 | wait(1.0); |
| joseph_adamu | 1:dc648c5624b9 | 98 | greenLED = 0; |
| joseph_adamu | 1:dc648c5624b9 | 99 | return; |
| joseph_adamu | 1:dc648c5624b9 | 100 | case FATAL: |
| joseph_adamu | 1:dc648c5624b9 | 101 | while(1) { |
| joseph_adamu | 1:dc648c5624b9 | 102 | redLED = 1; |
| joseph_adamu | 1:dc648c5624b9 | 103 | wait(0.1); |
| joseph_adamu | 1:dc648c5624b9 | 104 | redLED = 0; |
| joseph_adamu | 1:dc648c5624b9 | 105 | wait(0.1); |
| joseph_adamu | 1:dc648c5624b9 | 106 | } |
| joseph_adamu | 1:dc648c5624b9 | 107 | }; |
| joseph_adamu | 1:dc648c5624b9 | 108 | } |
