ECE2035 Project 2
Dependencies: mbed mbed-rtos SDFileSystem
hardware.cpp@10:1994adcfc86f, 2021-04-20 (annotated)
- Committer:
- kwengryn3
- Date:
- Tue Apr 20 18:15:22 2021 +0000
- Revision:
- 10:1994adcfc86f
- Parent:
- 5:b9b7993823e1
adv features
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kwengryn3 | 0:bff8b9020128 | 1 | // This header has all the (extern) declarations of the globals. |
kwengryn3 | 0:bff8b9020128 | 2 | // "extern" means "this is instantiated somewhere, but here's what the name |
kwengryn3 | 0:bff8b9020128 | 3 | // means. |
kwengryn3 | 0:bff8b9020128 | 4 | #include "globals.h" |
kwengryn3 | 0:bff8b9020128 | 5 | |
kwengryn3 | 0:bff8b9020128 | 6 | #include "hardware.h" |
kwengryn3 | 0:bff8b9020128 | 7 | |
kwengryn3 | 0:bff8b9020128 | 8 | // We need to actually instantiate all of the globals (i.e. declare them once |
kwengryn3 | 0:bff8b9020128 | 9 | // without the extern keyword). That's what this file does! |
kwengryn3 | 0:bff8b9020128 | 10 | |
kwengryn3 | 0:bff8b9020128 | 11 | // Hardware initialization: Instantiate all the things! |
kwengryn3 | 0:bff8b9020128 | 12 | uLCD_4DGL uLCD(p9,p10,p11); // LCD Screen (tx, rx, reset) |
kwengryn3 | 5:b9b7993823e1 | 13 | SDFileSystem sd(p5, p6, p7, p8, "sd"); // SD Card(mosi, miso, sck, cs) |
kwengryn3 | 0:bff8b9020128 | 14 | Serial pc(USBTX,USBRX); // USB Console (tx, rx) |
kwengryn3 | 0:bff8b9020128 | 15 | MMA8452 acc(p28, p27, 100000); // Accelerometer (sda, sdc, rate) |
kwengryn3 | 0:bff8b9020128 | 16 | DigitalIn button1(p21); // Pushbuttons (pin) |
kwengryn3 | 0:bff8b9020128 | 17 | DigitalIn button2(p22); |
kwengryn3 | 0:bff8b9020128 | 18 | DigitalIn button3(p23); |
kwengryn3 | 0:bff8b9020128 | 19 | AnalogOut DACout(p18); // Speaker (pin) |
kwengryn3 | 0:bff8b9020128 | 20 | PwmOut speaker(p25); |
kwengryn3 | 0:bff8b9020128 | 21 | wave_player waver(&DACout); |
kwengryn3 | 0:bff8b9020128 | 22 | |
kwengryn3 | 0:bff8b9020128 | 23 | |
kwengryn3 | 0:bff8b9020128 | 24 | // Some hardware also needs to have functions called before it will set up |
kwengryn3 | 0:bff8b9020128 | 25 | // properly. Do that here. |
kwengryn3 | 0:bff8b9020128 | 26 | int hardware_init() |
kwengryn3 | 0:bff8b9020128 | 27 | { |
kwengryn3 | 0:bff8b9020128 | 28 | // Initialize pushbuttons |
kwengryn3 | 0:bff8b9020128 | 29 | button1.mode(PullUp); |
kwengryn3 | 0:bff8b9020128 | 30 | button2.mode(PullUp); |
kwengryn3 | 0:bff8b9020128 | 31 | button3.mode(PullUp); |
kwengryn3 | 0:bff8b9020128 | 32 | uLCD.baudrate(3000000); |
kwengryn3 | 0:bff8b9020128 | 33 | acc.setBitDepth(MMA8452::BIT_DEPTH_12); |
kwengryn3 | 0:bff8b9020128 | 34 | acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G); |
kwengryn3 | 0:bff8b9020128 | 35 | acc.setDataRate(MMA8452::RATE_100); |
kwengryn3 | 0:bff8b9020128 | 36 | return ERROR_NONE; |
kwengryn3 | 0:bff8b9020128 | 37 | } |
kwengryn3 | 0:bff8b9020128 | 38 | |
kwengryn3 | 0:bff8b9020128 | 39 | // Implement this function. |
kwengryn3 | 0:bff8b9020128 | 40 | // HINT: lookup your accelerometer under mbed site > Hardware> Components |
kwengryn3 | 0:bff8b9020128 | 41 | // and look at demo code |
kwengryn3 | 0:bff8b9020128 | 42 | GameInputs read_inputs() |
kwengryn3 | 0:bff8b9020128 | 43 | { |
kwengryn3 | 0:bff8b9020128 | 44 | GameInputs in; |
kwengryn3 | 0:bff8b9020128 | 45 | in.b1 = button1.read(); |
kwengryn3 | 0:bff8b9020128 | 46 | in.b2 = button2.read(); |
kwengryn3 | 0:bff8b9020128 | 47 | in.b3 = button3.read(); |
kwengryn3 | 0:bff8b9020128 | 48 | double x_acc = 0; |
kwengryn3 | 0:bff8b9020128 | 49 | if (!acc.isXReady()) { |
kwengryn3 | 0:bff8b9020128 | 50 | wait(0.1); |
kwengryn3 | 0:bff8b9020128 | 51 | } else { |
kwengryn3 | 0:bff8b9020128 | 52 | acc.readXGravity(&x_acc); |
kwengryn3 | 0:bff8b9020128 | 53 | in.ax = x_acc; |
kwengryn3 | 0:bff8b9020128 | 54 | } |
kwengryn3 | 0:bff8b9020128 | 55 | return in; |
kwengryn3 | 0:bff8b9020128 | 56 | } |