Eimantas Bernotavicius / Mbed 2 deprecated Buggy_Project

Dependencies:   QEI mbed

Files at this revision

API Documentation at this revision

Comitter:
Weranest
Date:
Thu Feb 22 17:01:00 2018 +0000
Parent:
3:c9df852ad9ac
Commit message:
Tech Demo version

Changed in this revision

constants.cpp Show annotated file Show diff for this revision Revisions of this file
constants.h Show annotated file Show diff for this revision Revisions of this file
control.cpp Show annotated file Show diff for this revision Revisions of this file
control.h Show annotated file Show diff for this revision Revisions of this file
encoderBase.cpp Show annotated file Show diff for this revision Revisions of this file
encoderBase.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
pins.cpp Show annotated file Show diff for this revision Revisions of this file
pins.h Show annotated file Show diff for this revision Revisions of this file
pwm.cpp Show annotated file Show diff for this revision Revisions of this file
pwm.h Show annotated file Show diff for this revision Revisions of this file
--- a/constants.cpp	Wed Feb 21 11:55:29 2018 +0000
+++ b/constants.cpp	Thu Feb 22 17:01:00 2018 +0000
@@ -9,4 +9,5 @@
 #define SLOW_PWM 0.3f
 #define RIGHT_MOTOR_CONST 1
 #define LEFT_MOTOR_CONST 1
-#define MOTOR_PERIOD 1.0f
\ No newline at end of file
+#define MOTOR_PERIOD 1.0f
+#define ADC_CONSTANT 0.0005f
\ No newline at end of file
--- a/constants.h	Wed Feb 21 11:55:29 2018 +0000
+++ b/constants.h	Thu Feb 22 17:01:00 2018 +0000
@@ -2,9 +2,12 @@
 extern int GEAR_RATIO;
 extern float SAMPLE_TIME;
 extern int WHEEL_DISTANCE;
-extern float NORMAL_PWM;
-extern float FAST_PWM;
-extern float SLOW_PWM;
+extern float NORMAL_PWM_L;
+extern float NORMAL_PWM_R;
+extern float FAST_PWM_L;
+extern float FAST_PWM_R;
+extern float SLOW_PWM_L;
+extern float SLOW_PWM_R;
 extern int RIGHT_MOTOR_CONST;
 extern int LEFT_MOTOR_CONST;
 extern float MOTOR_PERIOD;
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/control.cpp	Thu Feb 22 17:01:00 2018 +0000
@@ -0,0 +1,72 @@
+#include "mbed.h"
+#include "pwm.h"
+#include "pins.h"
+#include "constants.cpp"
+#include "C12832.h"
+#include "encoderBase.h"
+
+void buggyGoLeft();
+void buggyGoF();
+void buggyGoRight();
+void buggyStop();
+
+void controlAutomatic(int flag){ //this is a showoff version
+    while(flag==1){
+    wait(0.5);
+    buggyGoF();
+    wait(2);
+    buggyGoLeft();
+    wait(2);
+    buggyGoRight();
+    wait(2);
+    buggyStop();
+    }
+}
+void controlManual(int flag){
+    while (1){ //this function is for manual wheel turnage using the potentiometers. Knock yourself out
+    while(1){
+       if(joystickDown!=0) break;
+       
+       float rightPWM= (float)potentiometerRight.read() ;
+       float leftPWM= (float)potentiometerLeft.read();
+       lcd.locate(0,3);
+       lcd.printf("L=%d;    R=%d", encoderVelocityLeft(), encoderVelocityRight());
+       //wait(2);
+       lcd.cls();
+    buggyPWM(leftPWM ,rightPWM);
+    }
+    wait(0.5);
+    buggyGoF();
+    wait(1);
+    buggyGoLeft();
+    wait(2);
+    buggyGoRight();
+    wait(2);
+    buggyGoF();
+    wait (1);
+    buggyStop();
+    }
+    }
+    
+    
+void stateMachine(int flag){
+    while (1){ //depending on the flag  changes the state. Not efficient, since relies on looping the whole thing, but will do for now
+    switch(flag){
+        case 0: controlManual(flag);
+        case 1:controlAutomatic(flag);
+                break;
+        }
+        }
+    }
+void buggyGoLeft(){
+    buggyPWM(SLOW_PWM, FAST_PWM);
+    }
+void buggyGoRight(){
+    buggyPWM(FAST_PWM, SLOW_PWM);
+    }
+void buggyGoF(){
+    buggyPWM(NORMAL_PWM, NORMAL_PWM);
+    }
+void buggyStop(){
+    buggyPWM(0.0f, 0.0f);
+    }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/control.h	Thu Feb 22 17:01:00 2018 +0000
@@ -0,0 +1,5 @@
+extern void buggyGoF();
+extern void buggyGoLeft();
+extern void buggyGoRight();
+extern void buggyStop();
+extern void controlManual(int);
\ No newline at end of file
--- a/encoderBase.cpp	Wed Feb 21 11:55:29 2018 +0000
+++ b/encoderBase.cpp	Thu Feb 22 17:01:00 2018 +0000
@@ -1,7 +1,7 @@
 #include "mbed.h"
 #include "QEI.h"
 #include "pins.h"
-#include "constants.h"
+#include "constants.cpp"
 
 
 //these lines setup the encoders for both wheels
@@ -33,3 +33,10 @@
             return (wheelRight.velocity(pulseRight)-wheelLeft.velocity(pulseLeft))/WHEEL_DISTANCE;
             }
     }buggy;
+    //temp functions to get the encoder speed
+int encoderVelocityLeft(){
+    return wheelLeft.velocity(encoderLeft.getPulses());
+    }
+int encoderVelocityRight(){
+    return wheelRight.velocity(encoderRight.getPulses());
+    }
\ No newline at end of file
--- a/encoderBase.h	Wed Feb 21 11:55:29 2018 +0000
+++ b/encoderBase.h	Thu Feb 22 17:01:00 2018 +0000
@@ -0,0 +1,2 @@
+extern int encoderVelocityLeft();
+extern int encoderVelocityRight();
\ No newline at end of file
--- a/main.cpp	Wed Feb 21 11:55:29 2018 +0000
+++ b/main.cpp	Thu Feb 22 17:01:00 2018 +0000
@@ -1,20 +1,9 @@
 #include "mbed.h"
 #include "pwm.h"
+#include "control.h"
+
 
 int main(){
-    
     motorSetup();
-while(1){
-    if(joystickCenter == 1){
-    wait(0.5);
-    buggyGoF();
-    wait(2);
-    buggyGoLeft();
-    wait(2);
-    buggyGoRight();
-    wait(2);
-    buggyStop();
+    controlManual(0);
     }
-}
-
-}
\ No newline at end of file
--- a/pins.cpp	Wed Feb 21 11:55:29 2018 +0000
+++ b/pins.cpp	Thu Feb 22 17:01:00 2018 +0000
@@ -4,6 +4,7 @@
 #include "pins.h"
 #include "QEI.h"
 #include "constants.cpp"
+#include "C12832.h"
 //Encoder pins (created as a QEI object, so just defined naming for pins)
 //=======================
 #define channelARight PB_1
@@ -16,20 +17,21 @@
 QEI encoderLeft(channelALeft, channelBLeft, channelILeft, ENCODER_PULSE);
 //Motor control pins
 //=======================
-PwmOut motorRight(PB_6);
-PwmOut motorLeft(PB_7);
-DigitalOut motorDirRight(PB_4);
+PwmOut motorRight(PB_7);
+PwmOut motorLeft(PC_8);
+DigitalOut motorDirRight(PH_0);
 DigitalOut motorDirLeft(PB_5);
-DigitalOut motorModeRight(PB_2);
-DigitalOut motorModeLeft(PB_3);
-DigitalOut driveBoard (PB_1);
+DigitalOut motorModeRight(PC_15);
+DigitalOut motorModeLeft(PB_4);
+DigitalOut driveBoard (PB_2);
 //Line sensor pins
 //=======================
 //UI pins(setup for control)
 //=======================
-AnalogIn potLeft(PA_0);
-AnalogIn potRight(PA_1);
-DigitalIn joystickCentre(PB_5);
+C12832 lcd(D11, D13, D12, D7, D10);
+AnalogIn potentiometerLeft(PA_1);
+AnalogIn potentiometerRight(PA_0);
+DigitalIn joystickCentre(PB_10);
 DigitalIn joystickDown(PB_0);
 //Magnet sensor pins
 //=======================
--- a/pins.h	Wed Feb 21 11:55:29 2018 +0000
+++ b/pins.h	Thu Feb 22 17:01:00 2018 +0000
@@ -1,4 +1,5 @@
 #include "QEI.h"
+#include "C12832.h"
 extern PwmOut motorRight;
 extern PwmOut motorLeft;
 extern DigitalOut motorDirRight;
@@ -7,9 +8,10 @@
 extern DigitalOut motorModeLeft;
 extern DigitalOut driveBoard;
 extern QEI encoderRight;
-extern AnalogIn potLeft;
-extern AnalogIn potRight;
+extern AnalogIn potentiometerLeft;
+extern AnalogIn potentiometerRight;
 extern DigitalIn joystickCentre;
 extern DigitalIn joystickDown;
 extern QEI encoderLeft;
-extern int ENCODER_PULSE;
\ No newline at end of file
+extern int ENCODER_PULSE;
+extern C12832 lcd;
\ No newline at end of file
--- a/pwm.cpp	Wed Feb 21 11:55:29 2018 +0000
+++ b/pwm.cpp	Thu Feb 22 17:01:00 2018 +0000
@@ -20,46 +20,10 @@
     driveBoard.write(1); //enables the buggy to drive
 }
 
-if(joystickDown == 1){
-void buggyGoF(){ //drives forward
-    motorRight.write(NORMAL_PWM*potRight.read());
-    motorLeft.write(NORMAL_PWM*potLeft.read());
-}
 
-void buggyGoLeft(){// drives left
-    motorRight.write(FAST_PWM*potRight.read());
-    motorLeft.write(SLOW_PWM*potLeft.read());
-}
-void buggyGoRight(){ //drives right
-    motorRight.write(SLOW_PWM*potRight.read());
-    motorLeft.write(FAST_PWM*potLeft.read());
-}
-}
-
-else{
-    void buggyGoF(){ //drives forward
-    motorRight.write(NORMAL_PWM);
-    motorLeft.write(NORMAL_PWM);
-}
-
-void buggyGoLeft(){// drives left
-    motorRight.write(FAST_PWM);
-    motorLeft.write(SLOW_PWM);
-}
-void buggyGoRight(){ //drives right
-    motorRight.write(SLOW_PWM);
-    motorLeft.write(FAST_PWM);
-}
+void buggyPWM(float pwmLeft, float pwmRight){ //drives forward
+    motorRight.write(pwmRight);
+    motorLeft.write(pwmLeft);
 }
 
 
-void buggyStop(){// no power
-    motorRight.write(0.0f);
-    motorLeft.write(0.0f);
-}
-
-
-void buggyStop(){// no power
-    motorRight.write(0.0f);
-    motorLeft.write(0.0f);
-}
\ No newline at end of file
--- a/pwm.h	Wed Feb 21 11:55:29 2018 +0000
+++ b/pwm.h	Thu Feb 22 17:01:00 2018 +0000
@@ -1,5 +1,2 @@
 extern void motorSetup();
-extern void buggyGoF();
-extern void buggyGoLeft();
-extern void buggyGoRight();
-extern void buggyStop();
\ No newline at end of file
+extern void buggyPWM(float, float);
\ No newline at end of file