joseph adamu / Mbed OS CW_final_thr

Fork of CW_copy by Calvin Kalintra

Committer:
joseph_adamu
Date:
Wed Jan 10 09:50:29 2018 +0000
Revision:
1:dc648c5624b9
version for export

Who changed what in which revision?

UserRevisionLine numberNew 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 }