My final year project

Dependencies:   BSP_DISCO_F746NG F746_GUI LCD_DISCO_F746NG SDFileSystem TS_DISCO_F746NG ResistiveTouchController Map CYS8218Controller MedianFilter

Files at this revision

API Documentation at this revision

Comitter:
Generic
Date:
Wed Oct 26 10:40:54 2016 +0000
Parent:
61:d16e5ad857ba
Commit message:
Firmware

Changed in this revision

CYS8218Controller.lib Show annotated file Show diff for this revision Revisions of this file
ResistiveTouchController.lib Show annotated file Show diff for this revision Revisions of this file
Screens/AutomaticControlScreen.cpp Show annotated file Show diff for this revision Revisions of this file
Screens/AutomaticMoreScreen.cpp Show annotated file Show diff for this revision Revisions of this file
Screens/ManualControlScreen.cpp Show annotated file Show diff for this revision Revisions of this file
Screens/ManualSetpointScreen.cpp Show annotated file Show diff for this revision Revisions of this file
Screens/ManualSetpointScreen.hpp Show annotated file Show diff for this revision Revisions of this file
Screens/SquareScreen.cpp 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
diff -r d16e5ad857ba -r 58e846621435 CYS8218Controller.lib
--- a/CYS8218Controller.lib	Wed Oct 19 22:13:09 2016 +0200
+++ b/CYS8218Controller.lib	Wed Oct 26 10:40:54 2016 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/users/Generic/code/CYS8218Controller/#062af0d57175
+http://developer.mbed.org/users/Generic/code/CYS8218Controller/#87b056f6d8ad
diff -r d16e5ad857ba -r 58e846621435 ResistiveTouchController.lib
--- a/ResistiveTouchController.lib	Wed Oct 19 22:13:09 2016 +0200
+++ b/ResistiveTouchController.lib	Wed Oct 26 10:40:54 2016 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/users/Generic/code/ResistiveTouchController/#a4ebeb3ba49c
+https://developer.mbed.org/users/Generic/code/ResistiveTouchController/#140d6bff4860
diff -r d16e5ad857ba -r 58e846621435 Screens/AutomaticControlScreen.cpp
--- a/Screens/AutomaticControlScreen.cpp	Wed Oct 19 22:13:09 2016 +0200
+++ b/Screens/AutomaticControlScreen.cpp	Wed Oct 26 10:40:54 2016 +0000
@@ -8,7 +8,7 @@
   _btStart(0, SCREEN_H-65, SCREEN_W, 30, "Start"),
   _btStop(0, SCREEN_H-65, SCREEN_W, 30, "Stop"),
   _btMore((SCREEN_W/2)-50, SCREEN_H-30, 100, 30, "More"),
-  _nlbTs( SCREEN_W/2, 26, "Cycle Time (us):%d", *Ts, Label::CENTER),
+  _nlbTs( SCREEN_W/2, 26, "Cycle Time (ms):%d", *Ts, Label::CENTER),
   _gXPos( 0, 40, SCREEN_W/2-1,  158, -170, 170, "X Position (mm)"),
   _gYPos( SCREEN_W/2+1, 40, SCREEN_W/2-1,  158, -136, 136, "Y Position (mm)")
 {
@@ -104,7 +104,7 @@
     _gXPos.Update();
     _gYPos.Update();
 
-    _nlbTs.Draw("Cycle time (us):%d",*_Ts);
+    _nlbTs.Draw("Cycle time (ms):%d",*_Ts);
 
     if( *_xSP )
     {
diff -r d16e5ad857ba -r 58e846621435 Screens/AutomaticMoreScreen.cpp
--- a/Screens/AutomaticMoreScreen.cpp	Wed Oct 19 22:13:09 2016 +0200
+++ b/Screens/AutomaticMoreScreen.cpp	Wed Oct 26 10:40:54 2016 +0000
@@ -4,8 +4,8 @@
   Screen(),
   _lbTitle( SCREEN_W/2, 0, "More", Label::CENTER, Font24),
   _btBack(0,SCREEN_H-30,100,30,"Back"),
-  _btManualSP(0, 27, SCREEN_W/2-5, SCREEN_H-35-27, "Manual Tracking"),
-  _btSquare(SCREEN_W/2+5,27, SCREEN_W/2-5, SCREEN_H-35-27, "Square")
+  _btManualSP(0, 27, SCREEN_W/2-5, SCREEN_H-35-27, "Manual Tracking",Font20),
+  _btSquare(SCREEN_W/2+5,27, SCREEN_W/2-5, SCREEN_H-35-27, "4-Point Pattern",Font20)
 {
   _nextScreen = nextScreen;
 }
diff -r d16e5ad857ba -r 58e846621435 Screens/ManualControlScreen.cpp
--- a/Screens/ManualControlScreen.cpp	Wed Oct 19 22:13:09 2016 +0200
+++ b/Screens/ManualControlScreen.cpp	Wed Oct 26 10:40:54 2016 +0000
@@ -30,10 +30,10 @@
 
   if( _btReset.Touched() )
   {
-    _btReset.Draw();
     _tpManual.Reset();
     SetValues();
     Thread::wait(200);
+    _btReset.Draw();
   }
 
   if( _tpManual.Touched() )
diff -r d16e5ad857ba -r 58e846621435 Screens/ManualSetpointScreen.cpp
--- a/Screens/ManualSetpointScreen.cpp	Wed Oct 19 22:13:09 2016 +0200
+++ b/Screens/ManualSetpointScreen.cpp	Wed Oct 26 10:40:54 2016 +0000
@@ -7,8 +7,6 @@
   _tpSetpoint( (SCREEN_W/2)-90 ,57, 180,180, -100.0, 100.0, -100.0 ,100.0),
   _btStart( 110, SCREEN_H-30, SCREEN_W-220, 30, "Start"),
   _btStop( 110, SCREEN_H-30, SCREEN_W-220, 30, "Stop"),
-  _nlbXSP(0,26,"x (mm)=%.0f",*xSP),
-  _nlbYSP(0,40,"y (mm)=%.0f",*ySP),
   _btReset( SCREEN_W-100, SCREEN_H-30, 100, 30, "Reset")
 {
   _nextScreen = nextScreen;
@@ -28,9 +26,7 @@
   _tpSetpoint.Draw();
   _btStop.Inactivate();
   _btStart.Inactivate();
-  _btStart.Draw();
-  _nlbXSP.Draw();
-  _nlbYSP.Draw();
+  _btStart.Draw();  
   _btReset.Draw();
 }
 
@@ -48,8 +44,6 @@
 
     *_ySP = -floor(_tpSetpoint.GetX());
     *_xSP = -floor(_tpSetpoint.GetY());
-    _nlbXSP.Draw("x (mm)=%.0f",*_xSP);
-    _nlbYSP.Draw("y (mm)=%.0f",*_ySP);
   }
 
   if( _btReset.Touched() )
diff -r d16e5ad857ba -r 58e846621435 Screens/ManualSetpointScreen.hpp
--- a/Screens/ManualSetpointScreen.hpp	Wed Oct 19 22:13:09 2016 +0200
+++ b/Screens/ManualSetpointScreen.hpp	Wed Oct 26 10:40:54 2016 +0000
@@ -17,8 +17,6 @@
   Trackpad _tpSetpoint;
   Button _btStart;
   Button _btStop;
-  NumericLabel<float> _nlbXSP;
-  NumericLabel<float> _nlbYSP;
   Button _btReset;
 
   float *_xSP;
diff -r d16e5ad857ba -r 58e846621435 Screens/SquareScreen.cpp
--- a/Screens/SquareScreen.cpp	Wed Oct 19 22:13:09 2016 +0200
+++ b/Screens/SquareScreen.cpp	Wed Oct 26 10:40:54 2016 +0000
@@ -2,7 +2,7 @@
 
 SquareScreen::SquareScreen( int *nextScreen, float *xSP, float *ySP, int *ballOnPlate, bool *started, float *x, float *y) :
   Screen(),
-  _lbTitle( SCREEN_W/2, 0, "Manual Setpoint", Label::CENTER, Font24),
+  _lbTitle( SCREEN_W/2, 0, "4 Point Pattern", Label::CENTER, Font24),
   _btBack( 0, SCREEN_H-30, 100, 30, "Back"),
   _btReset( SCREEN_W-100, SCREEN_H-30, 100, 30, "Reset"),
   _cSquare( (SCREEN_W/2)-90 ,57, 180,180),
@@ -130,6 +130,24 @@
     
     DrawShape();
   }
+  
+  if( _btReset.Touched() )
+  {
+    _xPoints[0] = (SCREEN_W/2)-80;
+  _yPoints[0] = 67;
+  _xPoints[1] = (SCREEN_W/2)-80;
+  _yPoints[1] = 47+180;
+  _xPoints[2] = (SCREEN_W/2)+70;
+  _yPoints[2] = 47+180;
+  _xPoints[3] = (SCREEN_W/2)+70;
+  _yPoints[3] = 67;
+  _currentPoint = 0;
+  *_ySP = -_xMapper.Calculate((float)_xPoints[0]);
+  *_xSP = -_yMapper.Calculate((float)_yPoints[0]);
+  DrawShape();
+  Thread::wait(200);
+  _btReset.Draw();
+ }
 }
 
 void SquareScreen::DrawShape()
diff -r d16e5ad857ba -r 58e846621435 main.cpp
--- a/main.cpp	Wed Oct 19 22:13:09 2016 +0200
+++ b/main.cpp	Wed Oct 26 10:40:54 2016 +0000
@@ -47,11 +47,14 @@
 //-- Controller Variables
 float P = 0.1;
 float I = 0;
-float D = 10;
-float Ts = 0.004;
+float D = 9;
+float Ts = 4;
 Timer cycleTimer;
 //-----------------------
 
+float t[3][2];
+float d[3][2];
+
 
 //-- Sensors and Actuator objects
 ResistiveTouchController plate(A0,A1,A3,A4,A5);
@@ -76,8 +79,6 @@
 
 bool saved = false;
 
-// TODO Delete these variables
-Serial pc(USBTX,USBRX);
 
 int main()
 {
@@ -121,6 +122,8 @@
     if( nextScreen != currentScreen )
     {
       started = false;
+      xSummation = 0;
+      ySummation = 0;
       Thread::wait(100);
 
       if( activeScreen != NULL)
@@ -183,9 +186,16 @@
 
 void Init()
 {
-  // TODO Read values from sd card
+  
+  d[0][0] = 921.6;
+  d[1][0] = 512;
+  d[2][0] = 102.4;
+  
+  d[0][1] = 512;
+  d[1][1] = 921.6;
+  d[2][1] = 102.4;
+  
   ImageFromSD splash("/sd/Splash.txt");
-  pc.baud(57600);
   xMotor.SetZero(28.0);
   yMotor.SetZero(25.0);
   nextScreen = Screen::MAIN_MENU_SCREEN;
@@ -203,7 +213,6 @@
 
   if( saved)
   {
-    // TODO Save zero position on sd card
     xMotor.SetZero(zeroAlpha);
     yMotor.SetZero(-zeroBeta);
     zeroAlpha = 0;
@@ -256,12 +265,11 @@
     beta = ( beta > 10 ? 10 : (beta < -10 ? -10 : beta) );
 
     xMotor.Set(alpha);
-    yMotor.Set(-beta);
+    yMotor.Set(beta);
 
-    if( Ts > 0)
-      Ts /= 1000;
+    float waitTime = Ts/1000.0;
 
-    while( cycleTimer.read() > Ts);
+    while( cycleTimer.read() < waitTime);
 
     cycleTimer.stop();
     measuredTs = cycleTimer.read_ms();
@@ -287,12 +295,15 @@
       {
         calTimer.start();
         calHeldTime = calTimer.read();
+        plate.Measure();
+        
+        t[calPoint][0] = plate.RawX();
+        t[calPoint][1] = plate.RawY();
 
         if( calHeldTime >= 5 )
         {
           while( plate.TouchDetected() );
-
-          //TODO Test calibration function
+          
           calPoint++;
           calTimer.stop();
           calTimer.reset();
@@ -306,6 +317,7 @@
     }
     else
     {
+      plate.Calibrate(t,d);
       calFinished = true;
       calPoint = 0;
       calStarted = false;