Template for LPC1768

Dependencies:   Gimbal MLX90620 Socket lwip-eth lwip-sys lwip mbed-rtos mbed

Fork of EkkoEye by EkkoSense

Revision:
53:72f350a6d09c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CGimbal.h	Thu Apr 14 13:45:38 2016 +0100
@@ -0,0 +1,74 @@
+/*
+ * CGimbal.h
+ *
+ *  Created on: 15 Feb 2016
+ *      Author: mike
+ */
+#ifndef CGIMBAL_H_
+#define CGIMBAL_H_
+
+#include "mbed.h"
+
+#define FORWARD	0				// Used for the direction pin
+#define REVERSE 1				// Used for the direction pin
+#define	CLOCKWISE 0				// Used for the direction pin
+#define	ANTICLOCKWISE 1			// Used for the direction pin
+#define DFT_STEP_PULSE 0.00002	// 20us is recommended pulse width for most stepper drivers
+#define X_AXIS 0				// Used for Tour array indexing
+#define	Y_AXIS 1				// Used for Tour array indexing
+#define NUM_AXES 2				// Used for Tour array indexing
+#define DEGREES_PER_STEP 	.1125	//	0.45 & 200 steps per revolution give 360/3200 degrees per step (1/16microsteps)
+#define	DFT_STEP_INTERVAL	250 // Normal time interval between pulses (5ms =  250 * 20us)
+#define	HOME_STEP_INTERVAL	500 // Moves more slowly when homing (10ms = 250 * 20us)
+#define MAX_TOUR 10				// Maximum number of way-points that can be performed in a single tour
+
+class CGimbal
+{
+	public:
+
+	DigitalOut * m_pXStepPin;					//	Pointer to the X axis step pin
+	DigitalOut * m_pXDirPin;					//	Pointer to the Y axis step pin
+	DigitalOut * m_pYStepPin;					//	Pointer to the X axis direction pin
+	DigitalOut * m_pYDirPin;					//	Pointer to the Y axis direction pin
+
+	//	Constructor
+	CGimbal(DigitalOut * pXStepPin, DigitalOut * pXDirPin, DigitalOut * pYStepPin, DigitalOut * pYDirPin);
+
+	//	Destructor
+	~CGimbal();
+
+	void Zero(void);
+	void Home(void);							//	Move to the Home position
+	int MoveRel();								//	Move (x, y) relative to current position
+	int MoveAbs(float x, float y);				//	Move to Absolute (x,y) position
+	int	RotateAbs(float xAngle, float yAngle);	//	Rotate to Absolute (x,y) angle in degrees
+	int TourPoint(int n);							//	Execute a tour using n stored waypoints
+	void MeanderScan(void);						//	Perform a full sweep at increments of (60, 15) degrees
+
+	int	m_StepInterval;							//	The time in 10us increments between each Step pulse (ie 100 = 1ms)
+	int m_AbsoluteXPos;							//	The current motor x axis position in steps (800 per revolution)
+	int m_AbsoluteYPos;							//	The current motor y axis position in steps (800 per revolution)
+
+	float m_AbsoluteXAngle;						//	The current motor x axis angle in degrees
+	float m_AbsoluteYAngle;						//	The current motor y axis angle in degrees
+
+	int m_xSteps;								//	Tracks the number of required x steps (+/-) when moving relative or absolute
+	int m_ySteps;								//	Tracks the number of required y steps (+/-) when moving relative or absolute
+	int m_xPulses;								//	Tracks the number of required x pulses when moving (always a positive value)
+	int m_yPulses;								//	Tracks the number of required y pulses when moving (always a positive value)
+	int	m_xDir;									//	X Direction: Used internally when moving, calculated from m_xSteps 1 to move ccw, 0 to move cw
+	int	m_yDir;									//	Y Direction: Used internally when moving, calculated from m_xSteps 1 to move ccw, 0 to move cw
+
+	int	m_NumWaypoints;
+	float m_TourPoints [NUM_AXES] [MAX_TOUR];	//	Used to store the x,y way-points received from the server
+	float m_PointTemperature [MAX_TOUR];	//	Used to store the x,y way-points received from the server
+
+
+	int m_TickCount;							//	Used to track the number of 10us Ticks that have occurred to ensure consistent motor speed
+
+};
+
+
+
+
+#endif /* CGIMBAL_H_ */