James Heavey / Mbed 2 deprecated 3875_DISSERTATION

Dependencies:   mbed 3875_Individualproject

main/main.h

Committer:
jamesheavey
Date:
2020-04-14
Revision:
37:2967f3f9c936
Parent:
35:2fd4ee9ac889
Child:
38:b5b06625d06e

File content as of revision 37:2967f3f9c936:

#ifndef MAIN_H
#define MAIN_H

#include "m3pi.h"
#include "mbed.h"
#include <stdlib.h>

// Constants
#define A 0.5         // 20
#define B 1/10000     // 10000
#define C 1.5         // 2/3

#define SENS_THRESH 500    // >500 = black
#define TURN_SPEED 0.2

// API 
extern m3pi robot;

// LEDs 
extern BusOut leds;

// Buttons 
extern DigitalIn button_A;
extern DigitalIn button_B;
extern DigitalIn button_X;
extern DigitalIn button_Y;
extern DigitalIn button_enter;
extern DigitalIn button_back;

// Potentiometers
extern AnalogIn pot_P;
extern AnalogIn pot_I;
extern AnalogIn pot_D;
extern AnalogIn pot_S;

// Sensors
extern DigitalInOut QTRA; //connected to digital P26
extern DigitalInOut QTRB; //connected to digital P25

// Timers
Timer t_L;     // left encoder
Timer t_R;     // right encoder
Timer t_coord; // coordinate timer

// Prototypes

void read_encoders();
void init();
void calibrate();
void follow_line();
bool junction_detect();
char junction_logic();
void turn_select( char turn );
void left();
void right();
void back();
void goal();
void looped_goal();
void simplify();
void invert_path();
void non_looped();
void looped();
void node_logic();
bool coord_check();
void update_index();
void choose_turn();
void back_track();
int path_to_point_index( int path_point );
void print_data( char *word );

// Global Variables
char path[100];
char inv_path[100];
int path_length = 0;
unsigned int *sensor;
float speed;
float proportional = 0.0;
float prev_proportional = 0.0;
float integral = 0.0;
float derivative = 0.0;
int encoder[2];
int dist_est_1 = 0;
int dist_est_2 = 0;

bool first = true;
bool goal_node = false;
bool t_restart = true;
char dir;
int curr_index;
int curr_coords[2];
int total_points;
unsigned int looped_path[100];
unsigned int point[100];   // use a struct
unsigned int type[100];
unsigned int explored[100];
int coords_x[100];
int coords_y[100];
#endif