Interface Library for Madpulse RC Car

Dependents:   Madpulse_Speed_Control_temp Madpulse_Speed_Control_Students

Committer:
jdawkins
Date:
Wed Nov 15 18:36:09 2017 +0000
Revision:
1:6bba42f337e6
Parent:
0:5e55308aa7a6
Commit for class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jdawkins 0:5e55308aa7a6 1 #ifndef MADPULSE_H
jdawkins 0:5e55308aa7a6 2 #define MADPULSE_H
jdawkins 0:5e55308aa7a6 3 #include "utilityFunctions.h"
jdawkins 0:5e55308aa7a6 4 #include "mbed.h"
jdawkins 0:5e55308aa7a6 5 #include "ServoIn.h"
jdawkins 0:5e55308aa7a6 6 #include "ServoOut.h"
jdawkins 0:5e55308aa7a6 7 #include "BNO055.h"
jdawkins 0:5e55308aa7a6 8 #include "mavlink.h"
jdawkins 0:5e55308aa7a6 9
jdawkins 0:5e55308aa7a6 10 static DigitalOut imu_LED(LED1);
jdawkins 0:5e55308aa7a6 11 static DigitalOut wheel_LED(LED2);
jdawkins 0:5e55308aa7a6 12 static DigitalOut dwm_LED(LED3);
jdawkins 0:5e55308aa7a6 13 static DigitalOut auto_LED(LED4);
jdawkins 0:5e55308aa7a6 14 static DigitalOut auto_mode(p26);
jdawkins 0:5e55308aa7a6 15
jdawkins 0:5e55308aa7a6 16
jdawkins 0:5e55308aa7a6 17 typedef struct vector3{
jdawkins 0:5e55308aa7a6 18 float x,y,z;
jdawkins 0:5e55308aa7a6 19 }vector3;
jdawkins 0:5e55308aa7a6 20
jdawkins 0:5e55308aa7a6 21
jdawkins 0:5e55308aa7a6 22 class MadPulse {
jdawkins 0:5e55308aa7a6 23
jdawkins 0:5e55308aa7a6 24 public:
jdawkins 0:5e55308aa7a6 25 MadPulse(uint8_t id,Serial *port, BNO055 *imu, ServoIn *CH1,ServoIn *CH2, InterruptIn *irq, ServoOut *Steer, ServoOut *Throttle);
jdawkins 0:5e55308aa7a6 26
jdawkins 0:5e55308aa7a6 27 uint8_t id;
jdawkins 0:5e55308aa7a6 28 vector3 pos;
jdawkins 0:5e55308aa7a6 29 vector3 vel;
jdawkins 0:5e55308aa7a6 30 vector3 accel;
jdawkins 0:5e55308aa7a6 31 vector3 gyro;
jdawkins 0:5e55308aa7a6 32 vector3 mag;
jdawkins 0:5e55308aa7a6 33 angles euler;
jdawkins 0:5e55308aa7a6 34 int counts;
jdawkins 0:5e55308aa7a6 35 bool auto_flag;
jdawkins 0:5e55308aa7a6 36
jdawkins 0:5e55308aa7a6 37 void getRCIn();
jdawkins 0:5e55308aa7a6 38 void getAccel();
jdawkins 0:5e55308aa7a6 39 void getGyro();
jdawkins 0:5e55308aa7a6 40 void getMag();
jdawkins 0:5e55308aa7a6 41 void getEuler();
jdawkins 0:5e55308aa7a6 42 void getSpeed();
jdawkins 0:5e55308aa7a6 43 void getPos();
jdawkins 0:5e55308aa7a6 44 int getCounts(){return counts;}
jdawkins 0:5e55308aa7a6 45 float getFreq(){return wheel_freq;}
jdawkins 0:5e55308aa7a6 46 void resetEnc();
jdawkins 0:5e55308aa7a6 47 uint8_t sendMessage(Serial *obj,char* msg,uint8_t len);
jdawkins 0:5e55308aa7a6 48
jdawkins 0:5e55308aa7a6 49 void setSteer(float ang);
jdawkins 0:5e55308aa7a6 50 void setThrottle(float thr);
jdawkins 0:5e55308aa7a6 51 float wheel_freq,wheel_freq_old;
jdawkins 0:5e55308aa7a6 52 ServoIn *_CH1;
jdawkins 0:5e55308aa7a6 53 ServoIn *_CH2;
jdawkins 0:5e55308aa7a6 54
jdawkins 0:5e55308aa7a6 55 private:
jdawkins 0:5e55308aa7a6 56 PinName _sdaPin, _sclPin, _ch1Pin, _ch2Pin,_encPin, _strPin, _thrPin;
jdawkins 0:5e55308aa7a6 57 BNO055 *_imu;
jdawkins 0:5e55308aa7a6 58 Serial *_port;
jdawkins 0:5e55308aa7a6 59
jdawkins 0:5e55308aa7a6 60 InterruptIn *_wheel_irq;
jdawkins 0:5e55308aa7a6 61 ServoOut *_Steer;
jdawkins 0:5e55308aa7a6 62 ServoOut *_Throttle;
jdawkins 0:5e55308aa7a6 63 Ticker *_ticker; //pointer to ticker object
jdawkins 0:5e55308aa7a6 64 char buf[64];
jdawkins 0:5e55308aa7a6 65
jdawkins 0:5e55308aa7a6 66 mavlink_local_position_ned_t pose;
jdawkins 0:5e55308aa7a6 67
jdawkins 0:5e55308aa7a6 68 void sampleData();
jdawkins 0:5e55308aa7a6 69 void wheelCallback();
jdawkins 0:5e55308aa7a6 70 void rxCallback();
jdawkins 0:5e55308aa7a6 71 int parseMessage(char * msg);
jdawkins 0:5e55308aa7a6 72 void sendDWMessage(uint8_t* msg,uint16_t len);
jdawkins 0:5e55308aa7a6 73 bool rc_conn;
jdawkins 0:5e55308aa7a6 74 float t_ws,dt_ws,dt,dt_old;
jdawkins 0:5e55308aa7a6 75 float wheel_spd;
jdawkins 0:5e55308aa7a6 76 Timer ti;
jdawkins 0:5e55308aa7a6 77 };
jdawkins 0:5e55308aa7a6 78
jdawkins 0:5e55308aa7a6 79 #endif