Library for ELEC2645 Gamepad PCB. University of Leeds Version 2 January 2020

Dependents:   ELEC2645_Ticker_WAV ELEC2645_Project_username ELEC2645_Project_el18vgt ELEC2645_Project_el17oc11 ... more

Revision:
22:72357412608d
Parent:
21:da0b4e14c867
Child:
23:8e1a30a69caa
--- a/Gamepad.cpp	Mon Jan 27 12:31:15 2020 +0000
+++ b/Gamepad.cpp	Mon Jan 27 13:58:59 2020 +0000
@@ -23,7 +23,7 @@
 
     _pot1(new AnalogIn(PTB2)),
     _pot2(new AnalogIn(PTB3)),
-    
+
     dac(new AnalogOut(DAC0_OUT)),
     ticker(new Ticker),
     timeout(new Timeout),
@@ -60,7 +60,7 @@
 
     // initalise button flags
     reset_buttons();
-    
+
     // number of samples
     _n = 16;
     _sample_array = new float[_n];
@@ -113,9 +113,9 @@
     if (val > 1.0f) {
         val = 1.0f;
     }
-    
+
     switch (n) {
-        
+
         // check for valid LED number and set value
 
         case 1:
@@ -196,11 +196,13 @@
     return d;
 }
 
-void Gamepad::reset_buttons() {
+void Gamepad::reset_buttons()
+{
     A_fall = B_fall = X_fall = Y_fall = start_fall = false;
 }
 
-bool Gamepad::A_pressed() {
+bool Gamepad::A_pressed()
+{
     if (A_fall) {
         A_fall = false;
         return true;
@@ -209,7 +211,8 @@
     }
 }
 
-bool Gamepad::B_pressed() {
+bool Gamepad::B_pressed()
+{
     if (B_fall) {
         B_fall = false;
         return true;
@@ -218,7 +221,8 @@
     }
 }
 
-bool Gamepad::X_pressed() {
+bool Gamepad::X_pressed()
+{
     if (X_fall) {
         X_fall = false;
         return true;
@@ -227,7 +231,8 @@
     }
 }
 
-bool Gamepad::Y_pressed() {
+bool Gamepad::Y_pressed()
+{
     if (Y_fall) {
         Y_fall = false;
         return true;
@@ -236,7 +241,8 @@
     }
 }
 
-bool Gamepad::start_pressed() {
+bool Gamepad::start_pressed()
+{
     if (start_fall) {
         start_fall = false;
         return true;
@@ -245,24 +251,29 @@
     }
 }
 
-bool Gamepad::A_held() {
+bool Gamepad::A_held()
+{
     // Buttons are configured as PullUp hence the not
     return !_button_A->read();
 }
 
-bool Gamepad::B_held() {
+bool Gamepad::B_held()
+{
     return !_button_B->read();
 }
 
-bool Gamepad::X_held() {
+bool Gamepad::X_held()
+{
     return !_button_X->read();
 }
 
-bool Gamepad::Y_held() {
+bool Gamepad::Y_held()
+{
     return !_button_Y->read();
 }
 
-bool Gamepad::start_held() {
+bool Gamepad::start_held()
+{
     return !_button_start->read();
 }
 
@@ -342,19 +353,24 @@
 }
 
 // ISRs for buttons
-void Gamepad::A_fall_interrupt() {
+void Gamepad::A_fall_interrupt()
+{
     A_fall = true;
 }
-void Gamepad::B_fall_interrupt() {
+void Gamepad::B_fall_interrupt()
+{
     B_fall = true;
 }
-void Gamepad::X_fall_interrupt() {
+void Gamepad::X_fall_interrupt()
+{
     X_fall = true;
 }
-void Gamepad::Y_fall_interrupt() {
+void Gamepad::Y_fall_interrupt()
+{
     Y_fall = true;
 }
-void Gamepad::start_fall_interrupt() {
+void Gamepad::start_fall_interrupt()
+{
     start_fall = true;
 }
 
@@ -392,6 +408,16 @@
     play_next_note(); // play the next note in the melody
 }
 
+void Gamepad::write_dac(float val)
+{
+    if (val < 0.0f) {
+        val = 0.0f;
+    } else if (val > 1.0f) {
+        val = 1.0f;
+    }
+    dac->write(val);
+}
+
 
 void Gamepad::play_next_note()
 {