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.
Dependencies: mbed 3875_Individualproject
main/main.h
- Committer:
- jamesheavey
- Date:
- 2020-04-09
- Revision:
- 24:adb946be4ce5
- Parent:
- 23:71e84953b3f3
- Child:
- 25:7523239a2fc1
File content as of revision 24:adb946be4ce5:
#ifndef MAIN_H
#define MAIN_H
#include "m3pi.h"
#include "mbed.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 simplify();
void invert_path();
void non_looped();
void looped();
void node_logic();
bool coord_check();
int coord_to_node();
void choose_turn();
//check_explored(); to be added
// 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 t_restart = true;
char dir;
int curr_coords[2];
int total_points;
unsigned int looped_path[100];
unsigned int point[100];
unsigned int type[100];
unsigned int explored[100];
int coords_x[100];
int coords_y[100];
char turn_priority[4] = { 'S' , 'E' , 'N', 'W' }; // reversed
#endif