Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 4:48d390356fba, committed 2018-02-22
- Comitter:
- Weranest
- Date:
- Thu Feb 22 17:01:00 2018 +0000
- Parent:
- 3:c9df852ad9ac
- Commit message:
- Tech Demo version
Changed in this revision
--- 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
