first commit

Dependencies:   mbed MMA8451Q

Revision:
3:25c6bf0abc00
Parent:
2:c857935f928e
Child:
6:d2bd68ba99c9
--- a/main.cpp	Mon Oct 25 01:28:53 2021 +0000
+++ b/main.cpp	Mon Oct 25 01:39:55 2021 +0000
@@ -5,15 +5,11 @@
 #include "state_control.h"
 #include "MMA8451Q.h"
 #include <iostream>
-#define BLUETOOTHBAUDRATE 115200 //Communication rate of the micro-controller
- //to the Bluetooth module
-#define SERIALTXPORT PTE0 //Tx Pin (Sends information to serial device)
-#define SERIALRXPORT PTE1 //Rx Pin (Receives information from serial
-
+#include "bluetooth.h"
 #define MMA8451_I2C_ADDRESS (0x1d<<1)
 
 Serial pc(USBTX, USBRX); // tx, rx
-Serial bt(SERIALTXPORT, SERIALRXPORT); //(TX, RX) Serial declaration for new serial
+
 
 PinName const SDA = PTE25;
 PinName const SCL = PTE24;
@@ -22,203 +18,7 @@
 Ticker motorLoop;
 Timer t;
 
-PwmOut motorLeft(PTB1); 
-PwmOut motorRight(PTB2);
-AnalogIn pot1(PTB0);
-AnalogIn speedSensorLeft(PTB3);
-AnalogIn speedSensorRight(PTC2);
-DigitalOut ledRed(LED1);
-AnalogIn battInput(PTC1);
-DigitalOut brakeLeft(PTA12);
-DigitalOut brakeRight(PTD4);
-
-DigitalIn enableBrakeLeft(PTA4);
-DigitalIn enableBrakeRight(PTA5);
-
-float pot1Voltage;
-float dutyCycleLeft;
-float tempDutyCycleLeft = 0;
-float tempDutyCycleRight = 0;
-float dutyCycleRight;
-float speedLeftVolt;
-float speedRightVolt;
-float batteryVoltage;
-float avgCellVoltage;
-
-float errorAreaLeft = 0;
-float errorAreaRight = 0;
-float errorAreaLeftPrev = 0;
-float errorAreaRightPrev = 0;
-float errorLeft = 0;
-float errorRight = 0;
-float setpointLeft = 0.0; //target speed, 0.0 to 1.0
-float setpointRight = 0.0;
-float controllerOutputLeft = 0;
-float controllerOutputRight = 0;
-float x;
-
-char newInputChar;
-int newInputInt;
-bool clampLeft = false;
-bool clampRight = false;
-
-bool brakeLeftBool = false;
-bool brakeRightBool = false;
-
-volatile bool newData = false;
- 
-void btReceive() { //comment this out if it's fucked
-
- static char buffer[6];
- static int serialCount = 0;
- 
-{
-        char byteIn = bt.getc();
-      //  bt.printf("Got %c",byteIn);
-        if (byteIn == 'n') {
-            buffer[serialCount] = 0;
-            //bt.printf("Got endl %c",byteIn);
-            int speed;
-            char type;
-            if (sscanf(buffer,"%c%i",&type,&speed) == 2) {
-                newInputChar = type;
-               // bt.printf("char: %c", type);
-                newInputInt = speed;
-               // bt.printf("speed: %i", speed);
-                newData = true;
-                }
-            serialCount = 0;
-            } else {
-                buffer[serialCount] = byteIn;
-                if (serialCount < 6)
-                serialCount++;
-                }
-        }
-    }
-    
-void PI() { //motor PI interrupt
-
-//--- Calculate Error ---
-errorLeft = setpointLeft - (speedLeftVolt / 3.3f); //error and setpoint is defined as a percentage, from 0 to 1
-errorRight = setpointRight - (speedRightVolt / 3.3f);
-
-//--- Steady State Error Tolerace ---
-if (abs(errorLeft) < 0.01){
-    errorLeft = 0.0;
-    }
-if (abs(errorRight) < 0.01){
-    errorRight = 0.0;
-    }
-//--- Calculate integral error ---
-if (clampLeft == false){
-errorAreaLeft = TI*errorLeft + errorAreaLeftPrev;
-}
-
-if (clampRight == false){ 
-errorAreaRight = TI*errorRight + errorAreaRightPrev;
-}
-
-errorAreaLeftPrev = errorAreaLeft;
-errorAreaRightPrev = errorAreaRight;
-
-/*
-if (errorAreaLeft > 0.1){
-   errorAreaLeft = 0.0;
-   }
-   p
-if (errorAreaRight > 0.1){
-errorAreaRight = 0.0;
-}         
-*/       
-   
-//--- Calculate total error ---  
-controllerOutputLeft = KP_LEFT*errorLeft + KI_LEFT*errorAreaLeft;
-controllerOutputRight = KP_RIGHT*errorRight + KI_RIGHT*errorAreaRight;
-
-tempDutyCycleLeft = fullBatScalar * controllerOutputLeft;
-tempDutyCycleRight = fullBatScalar * controllerOutputRight;
-
-
-//--- Motor over-voltage safety ---
-if (tempDutyCycleLeft > fullBatScalar){ //safety mechanism in case feedback breaks for any reason - 
-        dutyCycleLeft = fullBatScalar; //will stop output from exceeding max duty cycle and damaging motor
-    } else {                                            
-        dutyCycleLeft = tempDutyCycleLeft;
-}
-
-if (tempDutyCycleRight > fullBatScalar){
-        dutyCycleRight = fullBatScalar;
-    } else {
-        dutyCycleRight = tempDutyCycleRight;
-    }
-    
-
-//--- integral anti-windup ---
-if (controllerOutputLeft > 1.0){
-    if (errorAreaLeft > 0.0){
-        clampLeft = true;
-        }
-    if (errorAreaLeft < 0.0){
-        clampLeft = false;
-        }
-    } else {
-        clampLeft = false;
-}
-
-if (controllerOutputRight > 1.0){
-    if (errorAreaRight > 0.0){
-        clampRight = true;
-        }
-    if (errorAreaRight < 0.0){
-        clampRight = false;
-        }
-    } else {
-        clampRight = false;
-}
-
-//--- fucked up manual braking stuff ---
-if (setpointLeft == 0.0 || brakeLeftBool == true)
-{
-    errorAreaLeft = 0.0;
-    brakeLeft = 1;
-} else {
-    brakeLeft = 0;
-}
-
-if (setpointRight == 0.0 || brakeRightBool == true)
-{
-    errorAreaRight = 0.0;
-    brakeRight = 1;
-} else {
-    brakeRight = 0;
-}
-
-//--- set motors to calculated output ---    
-motorLeft.write(dutyCycleLeft);
-motorRight.write(dutyCycleRight);
-
-
-//--- motor braking ---
-/*
-if (controllerOutputLeft < 0.0){ 
-brakeLeft = 1;
-    } else {
-        brakeLeft = 0;
-}
-
-if (controllerOutputRight < 0.0){ 
-brakeRight = 1;
-    } else {
-        brakeRight = 0;
-}
-*/
-        
-      
-}
-
-int main() {
- 
-
+int main() { 
     state_update();
    
     //Delcare Onboard LED with blue color