sampling hardware files

Dependents:   ELEC350_Project2

Committer:
Swabey89
Date:
Fri Nov 30 14:38:50 2018 +0000
Revision:
5:fd558883e713
Parent:
4:7c5fc80c11b6
Child:
6:b1317441025d
pre-class

Who changed what in which revision?

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