ECE2035 Project 2

Dependencies:   mbed mbed-rtos SDFileSystem

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?

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